langchain.chains.retrieval.create_retrieval_chain

langchain.chains.retrieval.create_retrieval_chain(retriever: Union[BaseRetriever, Runnable[dict, List[Document]]], combine_docs_chain: Runnable[Dict[str, Any], str]) Runnable[source]

创建检索链以检索文档然后传递。

参数
  • retriever (Union[BaseRetriever, Runnable[dict, List[Document]]]) – 返回文档列表的检索对象。应该是 BaseRetriever 的子类或返回文档列表的可运行对象。如果是 BaseRetriever 的子类,则期望传入 input 键,这是将要传递到检索器的内容。如果不是 BaseRetriever 的子类,则所有输入都将传递到这个可运行对象,这意味着可运行对象应接受字典作为输入。

  • combine_docs_chain (Runnable[Dict[str, Any], str]) – 接受输入并生成字符串输出的可运行对象。此链的任何原始输入、新上下文键(检索到的文档)和一个值为零向量的聊天历史记录(如果不在输入中)将作为输入传递到其中。

返回

一个 LCEL 可运行对象。可运行返回的是包含至少 上下文答案 键的字典。

返回类型

可运行对象

示例

# pip install -U langchain langchain-community

from langchain_community.chat_models import ChatOpenAI
from langchain.chains.combine_documents import create_stuff_documents_chain
from langchain.chains import create_retrieval_chain
from langchain import hub

retrieval_qa_chat_prompt = hub.pull("langchain-ai/retrieval-qa-chat")
llm = ChatOpenAI()
retriever = ...
combine_docs_chain = create_stuff_documents_chain(
    llm, retrieval_qa_chat_prompt
)
retrieval_chain = create_retrieval_chain(retriever, combine_docs_chain)

chain.invoke({"input": "..."})

使用 create_retrieval_chain 的示例