import streamlit as st import os from pinecone import Pinecone from sentence_transformers import SentenceTransformer # import torch # device = 'cuda' if torch.cuda.is_available() else 'cpu' model = SentenceTransformer('intfloat/e5-small') # Set up the Streamlit app st.set_page_config(page_title="Search Engine", layout="wide") # Set up the Streamlit app title and search bar with st.form("my_form"): st.write("Login to Search Engine") index_name = st.text_input("Enter a database name:", "") key = st.text_input("Enter a key:", "") namespace = st.text_input("Enter a table name:", "") # slider_val = st.slider("Form slider") # checkbox_val = st.checkbox("Form checkbox") # Every form must have a submit button. submitted = st.form_submit_button("Connect to My Search Engine") if submitted: # if st.button("Connect to Search Engine Database", type="primary"): # index_name = st.text_input("Enter a database name:", "") # key = st.text_input("Enter a key:", "") # namespace = st.text_input("Enter a table name:", "") # # initialize connection to pinecone (get API key at app.pinecone.io) api_key = os.environ.get('PINECONE_API_KEY') or key # configure client pc = Pinecone(api_key=api_key) from pinecone import ServerlessSpec cloud = os.environ.get('PINECONE_CLOUD') or 'aws' region = os.environ.get('PINECONE_REGION') or 'us-east-1' spec = ServerlessSpec(cloud=cloud, region=region) # connect to index index = pc.Index(index_name) st.write('Successfully connected to your Search Engine DB!') st.write('Start searching...') query = st.text_input("Enter a search query:", "") # If the user has entered a search query, search the Pinecone index with the query if query: # Upsert the embeddings for the query into the Pinecone index query_embeddings = model.encode(query).tolist() # now query xc = index.query(vector=query_embeddings, top_k=10, namespace=namespace, include_metadata=True) # Display the search results st.write(f"Search results for '{query}':") for result in xc['matches']: st.write(f"{round(result['score'], 2)}: {result['metadata']['meta_text']}")