链载Ai

标题: RAG 应用效果不太理想?试试以下RAG优化策略大幅提升问答效果 [打印本页]

作者: 链载Ai    时间: 昨天 11:18
标题: RAG 应用效果不太理想?试试以下RAG优化策略大幅提升问答效果

自从2022年12月 ChatGPT 横空面世以来,AI 领域获得了十足的关注和资本,其实AI的概念在早些年也火过一波,本轮 AI 热潮相比于之前的 AI,最大的区别在于:生成式。通过海量文本训练的、能识别人类语言、执行语言类任务、拥有大量参数的模型,称之为大语言模型。GPT、LLaMA、Mistral、BERT等都是LLM,LLM是对训练文本信息的压缩,同时拥有了泛化能力,不同于数据库和搜索引擎,LLM能创造性地生成历史上没有出现过的文本内容。

虽然LLM很强大,但有以下缺点:

现如今解决上面缺点的一种方案就是RAG,即检索增强生成(Retrieval Augmented Generation)。RAG能够将私域数据独立于LLM外,但又能在问答过程中被LLM参考,提高LLM的知识储备和实时更新能力,这样也可以降低LLM幻觉问题。一句话总结:RAG(检索增强生成) = 检索技术 + LLM 提示

但是RAG方案想真正落地到实际生产上,会遇到很多问题,为了解决这些问题,我们需要很多的优化方案,今天就来分享一些RAG领域常用的优化策略。

最近我们建立了交流群,感兴趣的朋友可以加群一起交流哈,二维码放在文末了

RAG 各模块有哪些优化策略?

如何利用 知识图谱进行上下文增强?

在典型的RAG架构中,基于向量数据库进行上下文增强存在如下问题:

  1. 无法获取长程关联知识
  2. 信息密度低(尤其当LLM context window较小时不友好)

那么如何利用 知识图谱进行上下文增强呢?

如何有选择地进行知识库召回

经典的RAG模型通过提供与问题相关的上下文信息来支持LLM在回答知识密集型问题。然而,这种方法存在两个主要问题:

在实际应用RAG时,我们常常通过精细化的工作流程设计和创新性的Prompt调整来尽量缓解上述问题。具体来说:

然而这些方案往往比较复杂,并可能引入一些难以控制的潜在问题。Self-RAG则是另一种解决这些挑战的方案。具体可以参考这篇文章:让你的RAG应用更加智能!引入自我反思的大模型 RAG 框架(Self-RAG)

如何让RAG支持多模态

对多模态RAG而言有三种技术路线,如下我们做个简要说明:

RAG Fusion 优化策略

思路:检索增强这一块主要借鉴了RAG Fusion技术,这个技术原理比较简单,概括起来就是,当接收用户query时,让大模型生成5-10个相似的query,然后每个query去匹配5-10个文本块,接着对所有返回的文本块再做个倒序融合排序,如果有需求就再加个精排,最后取Top K个文本块拼接至prompt。

优点:

缺点:无法从根本上解决理解用户意图的问题。

模块化 RAG 优化策略

动机:打破了传统的“原始 RAG”框架,这个框架原本涉及索引、检索和生成,现在提供了更广泛的多样性和更高的灵活性。

模块介绍:

信息。

文档与查询之间的相关性,这样做可以提升 RAG的鲁棒性。

查询转换(Query Transformations)

RAG 索引优化有哪些优化策略?

微调嵌入

检索处理流程

知识库召回率低

  1. 知识库里面是否有对应答案?如果没有那就是知识库覆盖不全问题

  2. 知识库有,但是没召回:

    1. 知识库知识是否被分割掉,导致召回出错,解决方法 修改分割方式 or 利用bert 进行上下句预测保证知识点完整性
    2. 知识没有被召回,分析 query 和 doc 的特点:字相关还是语义相关,一般建议是先用 es做召回,然后才用模型做精排

chunk大小指定多少

在构建RAG时,确定块大小是关键,它决定从向量存储中检索的文档长度。太小可能缺失关键信息,太大可能带来噪音。找到最佳块大小需要适当平衡,这通常通过反复试验来实现。不过,这并非随机尝试,而是通过在测试集上运行评估并计算指标来找出最佳值。LlamaIndex具有此类功能,详细信息可参考他们的博客。

如何通过 混合检索 提升 RAG 效果

虽然向量搜索有助于找到与查询语义相关的块,但在精确匹配关键词方面可能不足。比如,在数百万电商产品中搜“阿迪达斯 XYZ 参考白色运动鞋”,返回的都是白色阿迪达斯运动鞋,没有精确匹配XYZ参考。针对这种情况,混合检索能提供解决方案。它将矢量搜索和关键词搜索的优势结合起来,既能匹配相关关键字,又能保持查询意图的控制。想了解更多混合搜索信息,可查阅Pinecone的入门指南。

如何通过 重新排名 提升 RAG 效果

查询向量存储时,前K个结果可能并未按相关性排序。在这些相关块中,最相关的可能是第5或第7个,而非第1或第2个,这就需要重新排名。简单说,重新排名就是把最相关的信息调整到提示的前沿。这一概念已在LlamaIndex、LangChain和HayStack等多种框架中实现。比如,Diversity Ranker侧重于按文档多样性重新排序,而LostInTheMiddleRanker则在上下文窗口开始和结束间交替放置最佳文档。

RAG 如何 提升索引数据的质量

索引数据的质量直接影响RAG答案的质量,因此优先工作是在摄取数据前尽可能清理它们——垃圾入则垃圾出。这包括删除重复/冗余信息,识别不相关文档,及时校验事实的准确性。在使用过程中,对RAG的维护和更新过时文档也至关重要。在构建RAG时,我们常常忽视了清理数据这一步骤,直接倒入所有文档而未验证其质量。

以下我建议可以快速解决一些问题:

  1. 通过清理特殊字符、奇怪的编码、不必要的 HTML 标签来消除文本噪音……还记得使用正则表达式的老的NLP 技术吗?可以把他们重复使用起来;

  2. 通过实施一些主题提取、降维技术和数据可视化,发现与主题无关的文档,删除它们;

  3. 通过使用相似性度量删除冗余文档

如何通过添加元数据 提升RAG 效果

将元数据与索引向量结合使用有助于更好地构建它们,同时提高搜索相关性。

以下是一些元数据有用的情景:

元数据很有用,因为它在向量搜索之上增加了一层结构化搜索。

如何通过 输入查询与文档对齐 提升 RAG 效果

LLMs 和 RAGs 之所以强大,因为它们可以灵活地用自然语言表达查询,从而降低数据探索和更复杂任务的进入

门槛。然而,有时,用户用几个词或短句的形式作为输入查询,查询结果会出现与文档之间存在不一致的情况。通过一个例子来理解这一点。这是关于马达引擎的段落(来源:ChatGPT):

发动机堪称工程奇迹,以其复杂的设计和机械性能驱动着无数的车辆和机械。其核心是,发动机通过一系列精确协调的燃烧事件将燃料转化为机械能。这个过程涉及活塞、曲轴和复杂的阀门网络的同步运动,所有这些都经过仔细校准,以优化效率和功率输出。现代发动机有多种类型,例如内燃机和电动机,每种都有其独特的优点和应用。对创新的不懈追求不断增强汽车发动机技术,突破性能、燃油效率和环境可持续性的界限。无论是在开阔的道路上为汽车提供动力还是驱动工业机械,电机仍然是现代世界动态运动的驱动力。

在这个例子中,我们制定一个简单的查询,“你能简要介绍一下马达引擎的工作原理吗?”,与段落的余弦相似性

为 0.72。其实已经不错了,但还能做得更好吗?

为了做到这一点,我们将不再通过段落的嵌入来索引该段落,而是通过其回答的问题的嵌入来索引该段落。考虑这三个问题,段落分别回答了这些问题:

  1. 发动机的基本功能是什么?
  2. 发动机如何将燃料转化为机械能?
  3. 发动机运行涉及哪些关键部件,它们如何提高发动机的效率?

通过计算得出,它们与输入查询的相似性分别为:

  1. 0.864
  2. 0.841
  3. 0.845

这些值更高,表明输入查询与问题匹配得更精确。将块与它们回答的问题一起索引,有助于解决对齐问题并提高搜索相关性:我们不是优化与文档的相似性,而是优化与底层问题的相似性。

如何通过 提示压缩 提升 RAG 效果

研究表明,在检索上下文中的噪声会对RAG性能产生不利影响,更精确地说,对由 LLM 生成的答案产生不利影

响。一些方案建议在检索后再应用一个后处理步骤,以压缩无关上下文,突出重要段落,并减少总体上下文长度。

选择性上下文等方法和 LLMLingua 使用小型LLM来计算即时互信息或困惑度,从而估计元素重要性。

RAG 未来发展方向

RAG 的三大未来发展方向:垂直优化、横向扩展以及 RAG 生态系统的构建。

Rag 的垂直优化

尽管 RAG 技术在过去一年里取得了显著进展,但其垂直领域仍有几个重点问题有待深入探究:

  1. RAG 中长上下文的处理问题
  2. RAG 的鲁棒性研究
  3. RAG 与微调(Fine-tuning)的协同作用
  4. RAG 的工程应用

在工程实践中,诸如如何在大规模知识库场景中提高检索效率和文档召回率,以及如何保障企业数据安全——例

如防止 LLM 被诱导泄露文档的来源、元数据或其他敏感信息——都是亟待解决的关键问题。

RAG 的水平扩展

在水平领域,RAG 的研究也在迅速扩展。从最初的文本问答领域出发,RAG 的应用逐渐拓展到更多模态数据,

包括图像、代码、结构化知识、音视频等。

RAG 生态系统

下游任务与评估RAG通过集成广泛的知识库信息,展现了处理复杂查询和生成丰富回应的潜力。在开放式问题解答、事实验证等任务中,RAG表现出色。其应用不仅提升了信息准确性和相关性,还增强了回应的多样性和深度。特别在医学、法律和教育等专业领域,RAG能够以较低训练成本和优秀性能突显其价值。完善RAG评估体系,发展更精确的评估指标如上下文相关性、内容创新性等,以及提高模型可解释性,都是未来工作重点。

技术栈在RAG的技术生态中,相关技术栈的发展起着关键作用。ChatGPT的流行带动了LangChain和LLamaIndex等技术的发展,它们提供了丰富的RAG相关API,成为大模型时代的核心技术。同时,也有新兴技术栈涌现,如Flowise AI6专注于低代码操作,使用户可以简单地操控RAG各类AI应用。如HayStack、Meltno和Cohere Coral这样的新兴技术也在不断进步。随着技术栈的发展与优化,RAG技术也得到了推动。目前,RAG工具链的技术栈已初步建立,许多企业级应用纷纷涌现,但一个全面的整合平台还在完善中。







欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5