CoolFace
Apppublic

zamal/Deepseek-R1-vs-LLama3

sourceHugging Faceapache-2.0updated 2y agoView on Hugging Face
4likes
rag_utility.py74 linesDownload Raw Back to root
1import os2from dotenv import load_dotenv3from langchain_community.document_loaders import UnstructuredPDFLoader4from langchain_text_splitters import RecursiveCharacterTextSplitter5from langchain_huggingface import HuggingFaceEmbeddings6from langchain_chroma import Chroma7from langchain_groq import ChatGroq8from langchain.chains import RetrievalQA9 10# Load environment variables11load_dotenv()12GROQ_API_KEY = os.getenv("GROQ_API_KEY")13os.environ["GROQ_API_KEY"] = GROQ_API_KEY14 15working_dir = os.path.dirname(os.path.abspath(__file__))16 17# Initialize the embedding model18embedding = HuggingFaceEmbeddings()19 20# Initialize the DeepSeek-R1 70B model21deepseek_llm = ChatGroq(22    model="deepseek-r1-distill-llama-70b",23    temperature=024)25 26# Initialize the Llama-3 70B model27llama3_llm = ChatGroq(28    model="llama-3.3-70b-versatile",29    temperature=030)31 32def process_document_to_chromadb(file_name):33    """Processes a PDF document and stores embeddings in ChromaDB."""34    loader = UnstructuredPDFLoader(os.path.join(working_dir, file_name))35    documents = loader.load()36    text_splitter = RecursiveCharacterTextSplitter(chunk_size=2000, chunk_overlap=200)37    texts = text_splitter.split_documents(documents)38    vectordb = Chroma.from_documents(39        documents=texts,40        embedding=embedding,41        persist_directory=os.path.join(working_dir, "doc_vectorstore")42    )43    return "Document successfully processed and stored."44 45def answer_question(user_question):46    """Retrieves answers from stored documents using DeepSeek-R1 and Llama-3."""47    vectordb = Chroma(48        persist_directory=os.path.join(working_dir, "doc_vectorstore"),49        embedding_function=embedding50    )51    retriever = vectordb.as_retriever()52    53    # DeepSeek-R1 response54    qa_chain_deepseek = RetrievalQA.from_chain_type(55        llm=deepseek_llm,56        chain_type="stuff",57        retriever=retriever,58        return_source_documents=True59    )60    response_deepseek = qa_chain_deepseek.invoke({"query": user_question})61    answer_deepseek = response_deepseek["result"]62    63    # Llama-3 response64    qa_chain_llama3 = RetrievalQA.from_chain_type(65        llm=llama3_llm,66        chain_type="stuff",67        retriever=retriever,68        return_source_documents=True69    )70    response_llama3 = qa_chain_llama3.invoke({"query": user_question})71    answer_llama3 = response_llama3["result"]72    73    return {"answer_deepseek": answer_deepseek, "answer_llama3": answer_llama3}74