|
|
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 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) |
|
|
|