将检索到的文档传递到检索QA链中的大型语言模型的问题

问题描述 投票:0回答:1

我目前正在 Coursera 上注册一门课程,学习如何用 Python 实现基于检索的问答 (RetrievalQA) 系统。本课程提供的代码利用 RetrievalQA.from_chain_type() 方法创建具有大型语言模型 (LLM) 和向量检索器的 RetrievalQA 链。

查看所提供的代码后,很明显,相关文档是使用 vectordb.similarity_search() 从向量存储中检索的。然而,似乎没有明确的步骤将这些检索到的文档显式传递给 LLM,以便在 RetrievalQA 链中进行问答。

我的理解是,在典型的 RetrievalQA 流程中,从向量存储中检索到的相关文档随后会传递给 LLM。这确保了法学硕士可以利用检索到的信息来生成对用户查询的准确响应。

我正在寻求澄清将检索到的文档集成到 RetrievalQA 链中的正确方法,以确保法学硕士的有效利用。任何关于如何实现这种集成的见解、建议或代码示例将不胜感激。谢谢您的协助!

from langchain.vectorstores import Chroma
from langchain.embeddings.openai import OpenAIEmbeddings
persist_directory = 'docs/chroma/'
embedding = OpenAIEmbeddings()
vectordb = Chroma(persist_directory=persist_directory, embedding_function=embedding)
question = "What are major topics for this class?"
docs = vectordb.similarity_search(question,k=3)
len(docs)
from langchain.chat_models import ChatOpenAI
llm = ChatOpenAI(model_name=llm_name, temperature=0)
from langchain.chains import RetrievalQA

qa_chain = RetrievalQA.from_chain_type(
    llm,
    retriever=vectordb.as_retriever()
)result = qa_chain({"query": question})
result["result"]
python langchain information-retrieval large-language-model nlp-question-answering
1个回答
0
投票

您正在使用检索器传递文件。您需要使用提示模板构建提示。 以下是您如何自行使用数据的示例

query = """Use the given below context to answer the user query. 
        {context}
        Question: What are major topics for this class?"""

QA_CHAIN_PROMPT = PromptTemplate.from_template(query)
qa_chain = RetrievalQA.from_chain_type(
llm,
retriever=vectordb.as_retriever(),
return_source_documents=True,
chain_type_kwargs={"prompt": QA_CHAIN_PROMPT}

您可以在此处阅读有关 langchain 检索器 的更多信息。

您还应该阅读Langchain QA私有数据文章,因为它使用带提示的检索提示。

© www.soinside.com 2019 - 2024. All rights reserved.