langchain从入门到精通(三十八)——RAG优化策略(十四)使用Self-RAG纠正低质量的检索生成

1. 开卷考试与 Self-RAG

这里我们从一个常见的生活场景入手——参加开卷考试,一般来说我们通常会采用以下两种作答策略:
• 方法一:对于熟悉的题目,直接快速作答;对于不熟悉的题目,快速翻阅参考书,找到相关部分,在脑海中整理分类和总结后,再在试卷上作答。
• 方法二:每一个题目都需要参考书本进行解答。先找到相关部分,在脑海中进行整合和总结后,再到试卷上书写答案。
显然,方法一 大家用的更多一些,是首选方法。方法二不仅耗时,还有可能引入无关的或错误的信息,导致出现混淆和错误,甚至在考生原本擅长的领域也不例外。
映射到 RAG 应用开发中,很容易可以发现,方法二 是典型的 RAG,即(检索->整合->生成)流程,而方法一就是Self-RAG 的流程。
Self-RAG 全称为自我反思 RAG,见名知其意,即对原始查询、检索的内容、生成的内容进行自我反思,根据反思的结果执行不同的操作,例如:直接输出答案、重新检索、剔除不相关的内容、检测生成内容是否存在幻觉、检测生成内容是否有帮助等,可以把 Self-RAG 看成是一个拥有自我反思能力的智能体,这个智能体主要用来依据相关知识库回复用户问题,自我迭代,直到输出满意的结果。
一个 Self-RAG 应用主要有三大步骤组成:

  1. 按需检索(Retrieval as Needed在这里插入图片描述
    ):使用需要检索时,例如查询“慕小课是谁时?”,模型会输出一个 检索query,表示需要检索与 query 相关的内容;相反,当模型被要求写“写一篇关于Python依赖注入的文章”时,大模型会直接生成答案,无需进行检索。
  2. 以并行方式生成内容(Parallel Generation):模型会同时使用 prompt 和检索到的内容来生成模型输出,在整个过程中,会触发多种类型的反思(Reflection),涵盖了:反思文档是否有关联、反思生成内容是否存在幻觉,如果不关联则重新检索,如果存在幻觉/支持度不够,则重新生成。
  3. 内容的评估和选择:对步骤 2 中生成的内容进行评估,并选择最佳文档段落作为输出。

拆分成流程图后,Self-RAG 的运行流程如下

在 Self-RAG 架构中,用到了 3 处循环结构,对于该架构的 AI 应用,单纯使用 LCEL 表达式构建的链应用也没法或者很难实现整个过程,同样必须使用到 LangGraph 来构建 循环图,所以关于 Self-RAG 整个流程的构建,依旧会等到我们学习完 LangGraph 再来尝试。

2. LangSmith 下的 Self-RAG

在 LangChain 官网的示例中,提供了一个 Self-RAG 的 LangSmith 日志运行流程,我们可以通过这个日志的运行流程来深入理解。
链接:https://smith.langchain.com/public/55d6180f-aab8-42bc-8799-dadce6247d9b/r

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小陈phd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值