将检索到的文档传递给大型语言模型时的问题

1 投票
1 回答
59 浏览
提问于 2025-04-12 13:13

我目前在Coursera上参加一个课程,学习如何用Python实现一个基于检索的问题回答系统(RetrievalQA)。这个课程提供了一段代码,使用了RetrievalQA.from_chain_type()这个方法来创建一个包含大型语言模型(LLM)和向量检索器的RetrievalQA链。

在查看这段代码时,我发现相关的文档是通过vectordb.similarity_search()从向量存储中检索出来的。不过,似乎没有明确的步骤将这些检索到的文档传递给LLM,以便在RetrievalQA链中进行问题回答。

我的理解是,在一个典型的RetrievalQA过程中,从向量存储中检索到的相关文档会被传递给LLM。这样可以确保LLM能够利用这些检索到的信息,生成准确的用户查询回答。

我想了解如何将检索到的文档正确地整合到RetrievalQA链中,以确保LLM能够有效地使用这些信息。如果有任何见解、建议或代码示例来帮助实现这个整合,我将非常感激。谢谢你的帮助!

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"]

1 个回答

暂无回答

撰写回答