# Allows you to use Streamlit, a framework for building interactive web applications. # It provides functions for creating UIs, displaying data, and handling user inputs. # This module provides a way to interact with the operating system, such as accessing environment variables, working with files # and directories, executing shell commands, etc # import os import streamlit as st # load_dotenv() is a function that loads variables from a .env file into environment variables in a Python script. # It allows you to store sensitive information or configuration settings separate from your code # and access them within your application. from dotenv import load_dotenv from langchain.document_loaders.csv_loader import CSVLoader # Helps us generate embeddings # An embedding is a vector (list) of floating point numbers. The distance between two vectors measures their relatedness. # Small distances suggest high relatedness and large distances suggest low relatedness. from langchain.embeddings import OpenAIEmbeddings # FAISS is an open-source library developed by Facebook AI Research for efficient similarity search and clustering of large-scale datasets, particularly with high-dimensional vectors. # It provides optimized indexing structures and algorithms for tasks like nearest neighbor search and recommendation systems. from langchain.vectorstores import FAISS load_dotenv() # By using st.set_page_config(), you can customize the appearance of your Streamlit application's web page st.set_page_config(page_title="Educate Kids", page_icon=":robot:") st.header("Hey, Ask me something & I will give out similar things") # Initialize the OpenAIEmbeddings object embeddings = OpenAIEmbeddings() # The below snippet helps us to import CSV file data for our tasks loader = CSVLoader( file_path="myData.csv", csv_args={"delimiter": ",", "quotechar": '"', "fieldnames": ["Words"]}, ) # Assigning the data inside the csv to our variable here data = loader.load() # Display the data print(data) db = FAISS.from_documents(data, embeddings) # Function to receive input from user and store it in a variable def get_text(): input_text = st.text_input("You: ", key=input) return input_text user_input = get_text() submit = st.button("Find similar Things") if submit: # If the button is clicked, the below snippet will fetch us the similar text docs = db.similarity_search(user_input) print(docs) st.subheader("Top Matches:") st.text(docs) st.text(docs[0]) st.text(docs[1].page_content) st.text([doc.page_content for doc in docs[:3]])