在大模型技术蓬勃发展的今天,检索增强生成(RAG)已成为炙手可热的应用。然而,RAG并非完美无缺。与其回避RAG可能出现的失败,不如将其视为提升核心内容质量的绝佳机会。本文将探讨如何从RAG的不足之处入手,发现并解决文档中隐藏的问题,最终打造更清晰、更易懂的内容体系。

RAG:理想与现实的差距

RAG的核心思想是通过检索相关文档片段,增强生成式AI模型的回答能力,从而在特定领域提供更准确、更专业的答案。最初,RAG令人惊艳的回答常常让人忽略其潜在的缺陷。然而,当用户提出的问题稍显模糊,或RAG系统遇到不熟悉的内容时,糟糕的回答就会暴露出来。

这种理想与现实的差距提醒我们,RAG并非万能灵药。它需要不断的优化和调整,才能成为真正可靠的“企业知识库问答”工具。幸运的是,随着技术的进步和我们对RAG理解的加深,改进RAG的途径也日益清晰。

RAG增强:优化检索与生成

为了弥补RAG的不足,许多组织开始采用各种增强技术,对查询、检索和上下文处理进行优化,旨在提升RAG的整体准确性。

  • 改进查询(Improved Querying):通过利用对话历史,对用户查询进行标准化或扩展。例如,将模糊的“费用?”扩展为“Magnify电子商务WordPress模板的费用是多少?”。这样的扩展能更有效地帮助RAG找到相关信息。
  • 优化分块检索(Optimized Chunk Retrieval):传统的RAG基于向量相似度检索文档片段。优化手段包括调整分块大小、重叠度以及根据特定领域定制嵌入模型。
  • 重排序(Reranking):在知晓问题的前提下,对检索到的文档片段进行重新排序,提高相关性。尽管重排序更准确,但计算成本较高,通常只应用于排名靠前的候选片段。
  • 扩展上下文(Expanded Context):现代模型允许更大的上下文窗口。在识别出相关片段后,可以包含相邻片段甚至整个文档,只要不超过token限制。

尽管这些增强技术能够显著提升RAG的性能,但仍然无法完全消除不准确或不完整的回答。究其原因,在于RAG系统的某些环节具有不确定性。

RAG流程:确定性与不确定性

RAG流程可以大致分解为以下几个步骤:

  1. 寻找相似性(Finding Similarities):纯粹的数学计算,具有确定性。相同的查询在相同的文档集上总是会检索到相同的片段。
  2. 重排序(Reranking):同样具有确定性。
  3. 上下文扩展(Context Expansion):只要逻辑一致,也具有确定性。
  4. 用户查询(User Queries):具有不确定性,可能模糊或不完整。
  5. 模型生成(Model Generation):具有概率性,结果可能有所不同。

可以看到,RAG流程中大部分环节都具有确定性,但用户查询和模型生成这两个环节却具有高度的不确定性。虽然可以通过查询重写和提示工程等技术来缓解这些不确定性,但最有效的改进往往在于我们完全可控的因素:文档

核心内容:RAG失败的意外收获

将文档上传到“与文档对话”工具的初衷是为了方便用户获取信息。然而,这个过程常常会带来一个意外的收获:一个强大的问题识别工具,可以帮助我们发现文档中最薄弱的环节。更棒的是,这些问题完全可以修复,因为它们存在于我们自己的文档中。

通过RAG,我们能够发现过期、混乱甚至错误的内容,从而清晰地认识到改进文档的必要性。

案例分析

假设用户提出以下问题:

Q: Premium计划的入职流程需要多长时间?

A: 抱歉,我在提供的文档中找不到相关信息。

乍一看,这似乎是RAG工具的缺陷。但经过仔细检查,我们可能会发现:一份文档详细描述了入职流程,但从未提及任何具体计划;另一份文档概述了Basic和Premium计划之间的差异,但没有提及入职流程。两份文档可能都被检索到,但语言模型被配置为不进行超出明确说明的推断或猜测。

当然,我们可以调整LLM的行为,使其更加宽松。但更好的解决方案是改进文档:明确Premium计划与其入职流程之间的联系。毕竟,如果LLM难以将这些信息联系起来,那么我们的客户也很有可能遇到同样的困难。

实践步骤:利用RAG改进核心内容

为了利用RAG来发现和解决文档中的问题,我们需要采取以下实践步骤:

  1. 准备审计工具:不要仅仅满足于将答案标记为“正确”或“错误”。你需要完整的可追溯性。对于每个响应,RAG系统应该提供:

    • 使用的嵌入和重排序模型
    • 生成最终答案的LLM
    • 检索到的原始片段
    • 重排序后的最终片段
    • 传递给LLM的改进问题
    • 提供给LLM的源文档的时间戳

    这些信息对于追踪失败的根本原因至关重要。

  2. 记录交互:向LLM提出有意义的、真实的提问,并记录回答不足之处,包括来源。

  3. 评估并确定故障点:根据以下指南评估失败原因:

    • 问题是否被正确“改进”?
    • 原始检索列表中是否包含回答问题的最佳文档?
    • 重排序列表中是否包含最佳文档?
    • LLM是否误解了问题的上下文或文档的内容?
  4. 纠正和改进

    • 如果评估结果表明问题与LLM不可预测的生成或其与上下文的交互有关(例如,尽管收到了相关片段,但它误解了问题或内容),则应尝试改进生成这些错误响应的提示(提示工程)。
    • 如果识别出的问题是最佳文档没有出现在原始列表或重排序列表中,则打开文档并尝试找出原因。文档是否缺少某些关键词、上下文或强调?相关信息之间的联系是否足够明确?
  5. 更新核心内容:根据LLM无法很好地回答的内容更新文档。重复上述步骤,直到文档清晰明了。

核心内容优化案例:企业内部知识库

假设一家科技公司使用RAG系统来帮助员工快速查找内部政策和流程。

问题: “如何申请远程办公?”

RAG初始回答: “请参考员工手册。”

问题分析: 这个回答过于宽泛,没有提供具体步骤或指向性信息。经过分析发现,员工手册中确实有关于远程办公的政策,但分散在不同的章节中,缺乏清晰的申请流程说明。

改进措施:

  1. 创建专门的远程办公申请指南: 编写一份详细的指南,明确申请条件、所需材料、审批流程和注意事项。
  2. 在员工手册中添加内部链接: 在相关章节中添加链接,引导员工直接跳转到远程办公申请指南。
  3. 优化关键词: 在指南中使用更具体的关键词,如“远程办公申请”、“居家办公申请”、“远程工作流程”等,提高检索准确性。

RAG改进后回答: “请参考《远程办公申请指南》,其中详细介绍了申请条件、所需材料和审批流程。您也可以在员工手册的第X页找到相关政策。”

效果: 改进后的RAG回答更精准、更实用,能够有效帮助员工快速获取所需信息,提高工作效率。

核心内容优化案例:在线教育平台

一个在线教育平台使用RAG系统来回答学生关于课程内容的问题。

问题: “什么是深度学习中的反向传播?”

RAG初始回答: “反向传播是一种用于训练神经网络的算法。”

问题分析: 这个回答过于简单,缺乏对反向传播原理的深入解释。经过分析发现,课程文档中虽然有关于反向传播的描述,但晦涩难懂,缺乏清晰的图示和案例。

改进措施:

  1. 重新编写反向传播章节: 使用更简洁易懂的语言解释反向传播的原理,并配以清晰的图示,帮助学生理解。
  2. 添加案例分析: 通过具体的案例演示反向传播在神经网络训练中的应用。
  3. 制作互动式练习: 设计互动式练习,让学生通过实践巩固对反向传播的理解。

RAG改进后回答: “反向传播是一种用于训练神经网络的算法,它通过计算损失函数对网络参数的梯度,并根据梯度调整参数,使损失函数最小化。您可以参考课程文档的第X章,其中包含详细的图示和案例,帮助您深入理解反向传播的原理。”

效果: 改进后的RAG回答更全面、更深入,能够有效帮助学生理解深度学习的核心概念,提高学习效果。

结语:让RAG成为您的内容质量守护者

如果您的基于LLM的工具在处理文档时遇到困难,那么您的用户很可能也会遇到同样的困难。利用这种反馈循环,让您的LLM成为评论家,而不仅仅是一个聊天机器人。

立即尝试与您的文档进行对话吧——您可能会惊讶于它能教给您关于您自己内容的知识。将RAG视为持续改进核心内容的工具,而不是简单的问答助手,才能真正发挥其价值。只有不断地优化核心内容,才能构建更强大、更可靠的RAG系统,最终提升用户体验和组织效率。