智能体实战【LangChain】(七)核心模块:链(Chains)搞定工作流(2)

链是 LangChain 框架的核心功能之一,它为组合多个组件提供了强大且灵活的方式。在 LangChain 里,“链”(Chains)是一种将多个组件或工具,模型或处理步骤组合起来,形成特定工作流程的机制。借助链,能够把简单的组件组合成一个整体,完成复杂的任务。

一、链介绍

上一篇介绍了基础链、顺序链和路由链,本篇内容继续介绍检索对话问答链、检查验证链、内存链,请跟我一起开始吧(文末送智能体相关书,欢迎关注)。

二、检索问答链实战

1. VectorDBQA

VectorDBQA是最简单的检索链,直接从向量数据库检索相关文档并生成回答,如以下代码所示:


2.RetrievalQA

RetrievalQA是更通用的检索链,支持多种检索器(不限于向量数据库)。如以下代码所示:


3.RetrievalQAWithSourcesChain


RetrievalQAWithSourcesChain在RetrievalQA基础上增加了来源信息,返回回答的同时提供引用的文档来源。如以下代码所示:




4.VectorDBQAWithSourcesChain


VectorDBQAWithSourcesChain是VectorDBQA的变体,专门用于处理带来源的问答,内部封装了向量数据库检索逻辑。如以下代码所示:


5.MultiRetrievalQAChain

MultiRetrievalQAChain支持从多个检索器获取信息,适用于混合数据源的复杂场景。如以下代码所示:



三、对话问答链实战

1.ChatVectorDBChain

支持对话历史的向量数据库问答链,适合多轮对话。应用场景包括聊天机器人、交互式文档问答等。如以下代码所示:


四、验证链实战

LLMCheckerChain和
LLMSummarizationCheckerChain是用于验证和改进生成内容的重要工具。

1.LLMCheckerChain

LLMCheckerChain用于验证 LLM 生成的回答是否准确,并在必要时提供修正。如以下代码所示:



2.LLMSummarizationCheckerChain


LLMSummarizationCheckerChain专门用于验证和改进文本摘要,确保摘要准确反映原文内容。如以下代码所示:




五、内存链实战

用于在多轮对话中保存上下文信息,实现有记忆的交互。

1.ConversationChain

最简单的记忆链,基于ConversationBufferMemory可保存完整对话历史,适合闲聊、客服等场景。如以下代码所示:





2.ConversationalRetrievalChain


ConversationalRetrievalChain是在基础对话链上的增强版本,它集成了检索功能,可以从外部文档或知识库中获取相关信息,以增强对话的上下文。如以下代码所示:








六、总结

LangChain提供了丰富的链类型,从简单的 LLM 调用到复杂的代理系统,覆盖了各种应用场景。在实际开发中,应根据任务需求选择合适的链类型,遵循 "从简单到复杂" 的原则,合理组合现有组件,并在必要时自定义链以满足特定需求。通过遵循最佳实践,可以构建出高效、可维护、更强大且安全的 LLM 应用。

原文链接:,转发请注明来源!