from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.vectorstores import FAISS from langchain.chains import RetrievalQA from langchain_community.embeddings import HuggingFaceEmbeddings from langchain_groq import ChatGroq from langchain.docstore.document import Document def create_vectorstore_from_text(documents, embeddings): # If string is passed instead of list of Document, convert it if isinstance(documents, str): splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50) chunks = splitter.split_text(documents) documents = [Document(page_content=chunk) for chunk in chunks] vectorstore = FAISS.from_documents(documents, embedding=embeddings) return vectorstore def create_rag_chain(llm, vectorstore): retriever = vectorstore.as_retriever(search_kwargs={"k": 3}) return RetrievalQA.from_chain_type(llm=llm, retriever=retriever)