技术背景介绍
ConversationalRetrievalChain是一种结合聊天历史与检索增强生成(retrieval-augmented generation)的工具,允许用户与文档进行“对话”。它通过历史对话内容和追踪查询,达到准确的问答效果。然而,迁移到LCEL(LangChain Execution Language)实现有以下几个优点:
- 更加清晰的内部结构:ConversationalRetrievalChain隐藏了一个完整的问题重构步骤,该步骤将初始查询与聊天历史记录进行解除引用。结果是这个类包含了两套可配置的提示、LLMs等。
- 更容易返回源文档。
- 支持可运行的方法,如流操作和异步操作。
在本文中,我们将详细讲解如何从ConversationalRetrievalChain迁移到LCEL,并提供相应的代码示例。
核心原理解析
LCEL提供了更简洁的API接口,使开发者可以轻松地定制和扩展问答流程。其核心组件包括:
- create_history_aware_retriever:负责任务的重构和查询历史的整合。
- create_retrieval_chain:用于组合retriever与问答chain。
- create_stuff_documents_chain:用于处理文档组合的chain。
通过这些组件,我们可以更灵活地控制问答流程中的每个步骤。
代码实现演示
# 安装所需的包
%pip install --upgrade --quiet langchain-community langchain langchain-openai faiss-cpu
import os
from getpass import getpass
os.environ["OPENAI_API_KEY"] = getpass()
# 使用稳定可靠的API服务
import openai
client = openai.OpenAI(
base_url='https://yunwu.ai/v1', # 国内稳定访问
api_key=os<

2198




被折叠的 条评论
为什么被折叠?



