langchain.chains.history_aware_retriever.create_history_aware_retriever

langchain.chains.history_aware_retriever.create_history_aware_retriever(llm: Runnable[Union[PromptValue, str, Sequence[Union[BaseMessage, List[str], Tuple[str, str], str, Dict[str, Any]]]], Union[BaseMessage, str]], retriever: Runnable[str, List[Document]], prompt: BasePromptTemplate) Runnable[Any, List[Document]][source]

创建一个链,该链接收对话历史并返回文档。

如果没有 chat_history,则直接将 input 传递给检索器。如果有 chat_history,则使用提示和 LLM 生成搜索查询。然后将该搜索查询传递给检索器。

参数
  • llm (Runnable[Union[PromptValue, str, Sequence[Union[BaseMessage, List[str], Tuple[str, str], str, Dict[str, Any]]]], Union[BaseMessage, str]]) - 使用给定聊天历史生成搜索词的语言模型

  • retriever (Runnable[str, List[Document]]) - 接受字符串作为输入并输出一系列文档的RetrieverLike对象。

  • prompt (BasePromptTemplate) - 用于为检索器生成搜索查询的提示。

返回值

一个LCEL可运行对象。该可运行对象输入必须包括input,如果存在聊天历史,应以chat_history的形式接收。可运行对象输出是一系列文档

返回类型

Runnable[Any, List[Document]]

示例

# pip install -U langchain langchain-community

from langchain_community.chat_models import ChatOpenAI
from langchain.chains import create_history_aware_retriever
from langchain import hub

rephrase_prompt = hub.pull("langchain-ai/chat-langchain-rephrase")
llm = ChatOpenAI()
retriever = ...
chat_retriever_chain = create_history_aware_retriever(
    llm, retriever, rephrase_prompt
)

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

使用create_history_aware_retriever的示例