File size: 936 Bytes
96deef5
 
 
 
 
496f188
96deef5
496f188
 
 
 
 
 
96deef5
496f188
96deef5
 
496f188
96deef5
496f188
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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)