File size: 1,086 Bytes
94b1e32
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from langchain.chains import RetrievalQA
from langchain_openai import OpenAI
from langchain_chroma import Chroma

def create_chatbot(vector_store):
    """
    Creates a chatbot for querying the Chroma vector store.
    Args:
        vector_store (Chroma): The vector store to use.
    Returns:
        RetrievalQA: The QA chatbot object.
    """
    llm = OpenAI(temperature=0.5)
    retriever = vector_store.as_retriever(search_type="mmr", k=5)
    
    qa = RetrievalQA.from_chain_type(
        llm=llm,
        chain_type="stuff", 
        retriever=retriever,
        return_source_documents=True
    )
    return qa


def ask_question(qa, query):
    """
    Asks a question to the chatbot and returns the response.
    Args:
        qa (RetrievalQA): The QA chatbot object.
        query (str): The question to ask.
    Returns:
        str: The answer from the chatbot.
    """
    try:
        response = qa.invoke({"query": query})
        answer = response.get('result', 'No answer found.')
        return f"{answer}\n"
    except Exception as e:
        return f"Error: {e}"