# Required Imports import google.generativeai as genai from langchain.document_loaders import PyPDFLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.vectorstores import Chroma from langchain_huggingface import HuggingFaceEmbeddings # Initialize Google Gemini genai.configure(api_key="Your api key ") model = genai.GenerativeModel("gemini-1.5-flash") # Load and prepare documents loader = PyPDFLoader('/content/FYP Report PhysioFlex(25july).pdf') # Load your document doc = loader.load() # splitting doucment text_splitter = RecursiveCharacterTextSplitter(chunk_size=300, chunk_overlap=50) split_docs = text_splitter.split_documents(doc) # making embedding embed_model = HuggingFaceEmbeddings(model_name='BAAI/bge-small-en-v1.5') vector_store = Chroma.from_documents(split_docs, embed_model) # Function to handle conversational context def conversational_rag(query, chat_history): # Combine user query with previous chat history combined_input = " ".join(chat_history + [query]) # Perform similarity search to retrieve relevant documents retrieved_docs = vector_store.similarity_search(combined_input, k=4) # Prepare context from retrieved documents retrieved_text = "\n".join([doc.page_content for doc in retrieved_docs]) # Create a prompt for the LLM prompt = f"Based on the following context, answer the question: {combined_input}\n\n{retrieved_text}" # Generate the response response = model.generate_content(prompt) # Append the query and response to chat history chat_history.append(query) chat_history.append(response.text) return response.text, chat_history # Example usage chat_history = [] user_query = "Ask the quetsion that you want" response, chat_history = conversational_rag(user_query, chat_history) print("LLM Response:", response) __ __