import streamlit as st import pinecone from sentence_transformers import SentenceTransformer PINECONE_KEY = st.secrets["PINECONE_KEY"] # app.pinecone.io @st.experimental_singleton def init_pinecone(): pinecone.init(api_key=PINECONE_KEY, environment="us-west1-gcp") return pinecone.Index('youtube-search') @st.experimental_singleton def init_retriever(): return SentenceTransformer("multi-qa-mpnet-base-dot-v1") index = init_pinecone() retriever = init_retriever() def card(thubmnail, title, url, context): return st.markdown(f"""
{title}
{context[:200].capitalize()+"...."}
""", unsafe_allow_html=True) st.write(""" # YouTube Q&A Ask me a question! """) st.markdown(""" """, unsafe_allow_html=True) query = st.text_input("Search!", "") if query != "": xq = retriever.encode([query]).tolist() xc = index.query(xq, top_k=5, include_metadata=True) for context in xc['matches']: card( f"https://img.youtube.com/vi/{context['metadata']['url'].split('/')[-1]}/maxresdefault.jpg", context['metadata']['title'], f"{context['metadata']['url']}?t={int(context['metadata']['start'])}", context['metadata']['text'] )