重新思考RAG的相关性:相似≠相关

向量数据库大模型数据库

最近,我在阅读一些关于 RAG系统的资料时,发现了一个有趣的现象:RAG 的相关性问题远比我们想象的要复杂 。无论是从数据检索的角度,还是从大模型对相关性的理解来看,RAG 的表现都充满了挑战和机遇。

今天,我想和大家分享一下我的思考,希望能给大家带来一些启发,如有不对的地方欢迎讨论交流。

1. RAG 与相关性:不仅仅是向量嵌入 当我们谈论 RAG 时,很多人会立刻想到向量嵌入相似性度量 。确实,向量嵌入在 RAG 中扮演了重要角色,但相关性 并不仅仅依赖于这些技术。事实上,很多时候,传统的数据库查询和文本搜索已经足够解决问题向量嵌入 虽然强大,但并不是万能的。picture.image

举个例子,假设你在开发一个基于 LLM 的医疗保健应用程序。你可能会发现,与“使用 LLM 构建医疗保健软件”相关的信息在向量空间中可能包括“用于诊断疾病的 AI”和“用于视频游戏开发的 AI”。虽然这些信息在向量空间中看起来“相似”,但它们实际上缺乏关键的联系 。这就是为什么我们需要重新思考相关性的定义。

其实,我们早就开始用数据库和文本搜索了,而且用了好几十年,效果一直不错。大多数时候,用传统的方式查询数据反而更简单直接。向量嵌入 当然也有它的用处,但说实话,很多时候你并不需要那么复杂的技术——你想要的数据其实并不难找。

那问题来了:如果数据真的很难找呢?这时候是不是就该用 vectorDB 了?答案是:是,也不是 。因为这时候你真正面对的,其实是相关性 的问题。

2. 相关性:超越表面相似性 相关性 不仅仅是表面上的相似性。它涉及到更深层次的上下文理解,“对人类有用的信息对 LLM 也有帮助” 。因此,我们需要构建一个能够理解上下文、提供真正有用信息的系统,而不是仅仅依赖于向量相似性。

研究发现,添加不相关文档有时甚至能提高 RAG 系统的准确性 。这听起来有点反直觉,但背后的逻辑是:不相关文档可能通过某种方式“激活”模型的推理能力 ,从而帮助它更好地理解问题。然而,这并不意味着我们可以随意添加不相关文档。区分相关和非相关信息 仍然是 RAG 系统的核心挑战。

3. 数据量 vs. 效果:RAG 系统的双刃剑 QAnything 提到的实验让我对 RAG 系统的数据量问题有了新的认识。数据越多,效果越好吗? 这个问题看似简单,但答案却并不那么直接。picture.image

3.1 检索退化:相似 ≠ 相关

在实验中,一个典型的例子是“大连医科大学怎么样?”这个问题。在加入第三批数据之前,系统能够正确回答,但在加入第三批数据后,系统却错误地返回了与“大连理工大学”相关的信息。这是因为第三批数据中包含了与“大连理工大学”相关的句子,这些句子在向量空间中与“大连医科大学”非常相似,但实际上并不相关。picture.image

语义检索的核心矛盾在于:相似性 ≠ 相关性 。RAG 系统需要在有限的 LLM 输入 token 内,选择最相关的片段。如果检索到的片段虽然相似但不相关,就会导致回答错误。因此,如何优化检索机制,确保最相关的片段被选中,是 RAG 系统设计中的关键挑战

4. 如何定义和衡量相关性? 那么,如何定义相关性 ?这是一个复杂的问题。 《How Easily do Irrelevant Inputs Skew the Responses of Large Language Models?》 中提到了一些有趣的实验,研究者通过构建不同类型的信息(如无关信息部分相关的无关信息相关但误导性的无关信息 )来测试大模型对相关性的敏感性。

picture.image

例如,无关信息 可能与问题主题无关,但由于高相似性得分而被检索到。而部分相关的无关信息 则包含与问题主题部分重叠的信息,但不提供问题的答案。这些实验表明,大模型对相关性的理解与传统的检索系统并不完全一致 。我们需要更精细的方法来衡量和优化相关性。这篇论文有以下实验结论:

  • 大模型更容易被语义高度相关但不相关的信息误导。
  • 随着无关信息数量的增加,大模型识别真正相关信息的能力会降低。
  • 大模型对无关信息的鲁棒性会随着问题格式的变化而变化。例如,自由格式的问题(如开放式问答)通常比多选 QA 格式更鲁棒。在多选 QA 格式中,模型可能会因为选项的干扰而选择不相关的答案。 这说明,问题的设计方式也会影响模型对相关性的判断。

基于以上挑战,我们可以从以下几个方面优化相关性的衡量:

4.3.1 结合多维度评分

传统的向量相似性评分(如余弦相似度)虽然有用,但不足以完全衡量相关性。我们可以结合以下多维度评分:

  • 语义相似性评分 :基于向量嵌入的相似性。
  • 上下文匹配评分 :基于信息是否能够回答问题的核心。
  • 任务目标评分 :基于信息是否有助于完成特定任务。

4.3.2 引入人类反馈

人类反馈 是衡量相关性的重要依据。通过让人类评估模型返回的结果,我们可以更好地理解哪些信息是真正相关的。例如,可以设计以下评估指标:

  • 有用性评分 :结果是否有助于完成任务?
  • 准确性评分 :结果是否准确回答了问题?
  • 相关性评分 :结果是否与问题真正相关?

4.3.3 优化提示工程

实验结论提到,CoT(Chain-of-Thought)提示指令增强提示 对提高模型辨别能力的效果有限,甚至可能产生副作用。因此,我们需要更精细地设计提示,帮助模型更好地理解任务和上下文。例如:

  • 明确任务目标 :在提示中明确告诉模型需要完成的任务。
  • 过滤无关信息 :在提示中加入“忽略无关信息”的指令,但需要结合其他优化手段。

4.3.4 动态调整检索策略

RAG 系统的检索策略需要根据任务和数据进行动态调整。例如:

  • 分层检索 :先进行粗粒度检索,再进行细粒度筛选。
  • 多轮检索 :通过多轮交互逐步缩小检索范围,提高相关性。

5. RAG 的短暂性:优势还是劣势? RAG 的另一个关键特性是它的短暂性 。RAG 的结果是临时的,每次请求后都会消失。这听起来可能有点烦人,但实际上,短暂性为实时应用程序提供了重要的优势 。它允许我们将数据隔离到特定的对话中,从而更容易防止数据泄露。

当然,短暂性也带来了一些挑战。我们需要不断地将数据重新注入上下文中,这对系统的设计和性能提出了更高的要求。但总的来说,短暂性是 RAG 系统的一个独特优势 ,尤其是在需要高度安全性和隐私保护的场景中。

6. 数据侧的优化:不仅仅是“越多越好” Qnything实验提醒我们,数据侧的优化并不是简单的“越多越好” 。虽然增加数据量可以扩展知识覆盖范围,但同时也可能引入噪声,导致检索退化。因此,数据去重、脏数据处理、以及数据与问题的精确匹配 ,都是优化 RAG 系统时需要考虑的重要因素。

6.1 数据质量 vs. 数据数量

在 RAG 系统中,数据质量比数据数量更重要 。高质量的数据能够显著提升系统的表现,而低质量或冗余的数据则可能导致系统性能下降。因此,在增加数据量之前,我们需要确保数据的相关性和准确性

6.2 快速迭代与稳定性

如果数据越多效果越好,那么我们可以通过快速迭代来优化系统。然而,实验结果表明,数据量的增加并不总是带来效果的提升 。因此,我们需要在迭代过程中持续监控系统的表现 ,确保每次数据更新都能带来正向的改进。

7. RAG未来的方向 我们正处于 AI 和 LLM 开发的早期阶段,就像早期的 Web 应用程序一样,我们现在建立的标准将决定未来 AI 应用程序的开发方式 。因此,我们需要以更周到的视角来对待 RAG 等工具,而不仅仅是将其视为一种“一刀切”的解决方案。

通过关注相关性短暂性 的细微差别,我们可以创建出能够提供更好、更精确结果的系统,现在是建立RAG最佳实践的机会

8. 参考文献

  1. 《再看RAG范式下大模型眼中的文档相关性:兼读大模型微调用于与文档版式分析》
  2. 《RAG系统:数据越多,效果越好吗?》
0
0
0
0
关于作者
相关资源
大规模高性能计算集群优化实践
随着机器学习的发展,数据量和训练模型都有越来越大的趋势,这对基础设施有了更高的要求,包括硬件、网络架构等。本次分享主要介绍火山引擎支撑大规模高性能计算集群的架构和优化实践。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论