混合检索 + 重排序改善RAG应用

简介: 随着时间推移,RAG 技术已经迅速成为在实际应用中部署大型语言模型(LLMs)的首选方式。本文介绍混合检索和重排序技术的基本原理,解释其对提升 RAG 系统文档召回效果的作用,并讨论构建生产级 RAG 应用的复杂性。通过对实验数据评估和测试结果的分析,本文还突出了混合检索 + 重排序在不同场景下的显著优势。
免费体验阿里云高性能向量检索服务:https://www.aliyun.com/product/ai/dashvector

向量banner制作-用于日常发文章.png


在当下这个时间点,每一个大模型应用开发者对 RAG(Retrieval Augmented Generation,检索增强生成)的技术概念都已经不再陌生,有不少技术文章将 RAG 简单归纳为基于 Embedding 的向量检索技术与大模型生成技术的结合。


但实际上,各行各业的开发者们在 RAG 应用方向上经过近一年的探索和实验后,普遍意识到一个问题:在打算将应用部署到生产环境时,仅仅依靠向量检索技术构建 RAG 应用是远远不够的。


Microsoft Azure AI 在官方博客上发布了一篇题为《Azure 认知搜索:通过混合检索和排序能力超越向量搜索》的文章。该文对在 RAG 架构的生成式 AI 应用中引入混合检索和重排序技术进行了全面的实验数据评估,量化了该技术组合对改善文档召回率和准确性方面的显著效果。


本文一方面将介绍这两项技术的基本原理,解释其为何能够改善 RAG 系统的召回效果。另一方面,也将讨论构建生产级 RAG 应用的复杂性。


RAG 概念解释

2024 年,以向量检索为核心的 RAG 架构成为解决大模型获取最新外部知识、同时解决生成幻觉问题的主流技术框架,并已在相当多的应用场景中得到实际应用。


开发者可以利用该技术以较低成本构建 AI 智能客服、企业智能知识库、AI 搜索引擎等,通过自然语言输入与各类知识组织形式进行对话。以一个有代表性的 RAG 应用为例(见下图):

在图中,当用户提问“美国总统是谁?”时,系统并非直接将问题提交给大模型来回答,而是首先在知识库中(如图中的维基百科)进行向量搜索,通过语义相似度匹配的方式查询相关内容(例如,拜登是美国现任第 46 届总统…),然后再将用户问题和搜索到的相关知识提供给大模型,以使大模型获得足够完备的知识来回答问题,从而获得更可靠的问答结果。


为什么需要这样做呢?

我们可以将大模型比作超级专家,他熟悉人类各个领域的知识,但也有自己的局限性。例如,他不了解你个人的一些状况,因为这些信息是私人的,不会在互联网上公开,所以他没有提前学习的机会。


当你想雇佣这个超级专家充当你的家庭财务顾问时,需要允许他在接受你的提问时先查看一下你的投资理财记录、家庭消费支出等数据。这样他才能根据你个人的实际情况提供专业的建议。


这就是 RAG 系统所做的事情:帮助大模型临时性地获取他所不具备的外部知识,允许他在回答问题之前先找答案。


根据上面这个例子,我们很容易发现 RAG 系统中最核心的是外部知识的检索环节。超级专家能否向你提供专业的家庭财务建议,取决于他能否精确找到需要的信息;如果他找到的不是投资理财记录,而是家庭减肥计划,那么再厉害的专家都会无能为力。


为什么需要混合检索?

上文提到,RAG 检索环节中的主流方法是向量检索,即语义相关度匹配的方式。技术原理是通过将外部知识库的文档先拆分为语义完整的段落或句子,并将其转换(Embedding)为计算机能够理解的一串数字表达(多维向量),同时对用户问题进行同样的转换操作。


计算机能够发现用户问题与句子之间细微的语义相关性,比如 “猫追逐老鼠” 和 “小猫捕猎老鼠” 的语义相关度会高于 “猫追逐老鼠” 和 “我喜欢吃火腿” 之间的相关度。在查找到相关度最高的文本内容后,RAG 系统会将其作为用户问题的上下文一起提供给大模型,帮助大模型回答问题。


除了能够实现复杂语义的文本查找,向量检索还具有其他的优势:

  • 相近语义理解(如老鼠/捕鼠器/奶酪、谷歌/必应/搜索引擎)
  • 多语言理解(跨语言理解,如输入中文匹配英文)
  • 多模态理解(支持文本、图像、音视频等的相似匹配)
  • 容错性(处理拼写错误、模糊的描述)


虽然向量检索在以上情景中具有明显优势,但在某些情况中效果不佳。比如:

  • 搜索一个人或物体的名字(例如伊隆·马斯克、iPhone 15)
  • 搜索缩写词或短语(例如 RAG、RLHF)
  • 搜索 ID(例如 gpt-3.5-turbo、titan-xlarge-v1.01)
  • 而上述缺点正好是传统关键词搜索的优势所在。传统关键词搜索擅长:
  • 精确匹配(如产品名称、姓名、产品编号)
  • 少量字符的匹配(通过少量字符进行向量检索时效果非常不好,但很多用户恰恰习惯于只输入几个关键词)
  • 倾向低频词汇的匹配(低频词汇往往承载了语言中的重要意义,比如“你想跟我去喝咖啡吗?”这句话中的分词,“喝”“咖啡”会比“你”“吗”在句子中承载更重要的含义)


对于大多数文本搜索的情境,首要的是确保潜在最相关的结果能够出现在候选结果中,向量检索和关键词检索在检索领域各有其优势,混合检索正是结合了这两种搜索技术的优点,同时弥补了两者的缺陷。


在混合检索中,我们需要在数据库内提前建立向量索引和关键词索引。在用户输入问题时,通过两种检索模式分别在文档中检索出最相关的内容,如下图(混合检索流程):



“混合检索”实际上并没有明确的定义,本文以向量检索和关键词检索的组合为例,如果我们使用其他搜索算法的组合,同样可以被称为“混合检索”,例如,我们可以将用于检索实体关系的知识图谱技术与向量检索技术结合。


不同的检索系统各自擅长寻找文本(段落、语句、词汇)之间不同的细微联系,包括精确关系、语义关系、主题关系、结构关系、实体关系、时间关系、事件关系等,可以说没有任何一种检索模式能够适用于全部情境,混合检索通过多个检索系统的组合,实现了多个检索技术之间的互补。


选择何种检索技术,取决于开发者需要解决什么样的问题,RAG 系统的本质是基于自然语言的开放域问答系统,对于用户的开放性问题,要想获得高的事实召回率,就需要对应用情景进行概括和收敛,寻找合适的检索模式或组合。


在着手设计一个 RAG 系统之前,最好先考虑清楚自己的用户是谁,以及用户最可能提出什么样的问题。


为什么需要重排序?

混合检索能够结合不同检索技术的优势,以获得更好的召回结果。然而,在不同检索模式下的查询结果需要进行合并和归一化(将数据转换为统一的标准范围或分布,以便更好地进行比较、分析和处理),然后再一并提供给大模型。在这个过程中,我们需要引入一个评分系统:重排序模型(Rerank Model)。


重排序模型通过将候选文档列表与用户问题的语义匹配度进行重新排序,从而改进语义排序的结果(见图 3)。其原理是计算用户问题与给定的每个候选文档之间的相关性分数,并返回按相关性从高到低排序的文档列表。常见的 Rerank 模型如:Cohere rerank、bge-reranker 等。

在大多数情况下,由于计算查询与数百万个文档之间的相关性得分将会非常低效,通常会在进行重排序之前进行一次前置检索,因此,重排序一般放在搜索流程的最后阶段,非常适合用于合并和排序来自不同检索系统的结果。


然而,重排序并不是只适用于不同检索系统的结果合并,即使在单一检索模式下,引入重排序步骤也能有效帮助改进文档的召回效果,例如在关键词检索之后加入语义重排序。


在具体实践过程中,除了将多路查询结果进行归一化之外,我们会在将相关的文本分段交给大模型之前限制传递给大模型的分段个数(即 TopK,可以在重排序模型参数中设置),这样做的原因是大模型的输入窗口存在大小限制(一般为 4K、16K、32K、128K 的 Token 数量),我们需要根据选用的模型输入窗口的大小限制,选择合适的分段策略和 TopK 值。


需要注意的是,即使模型上下文窗口足够大,过多的召回分段可能会引入相关度较低的内容,从而导致回答的质量降低。因此,重排序的 TopK 参数并不是越大越好。


重排序并不是搜索技术的替代品,而是一种用于增强现有检索系统的辅助工具,它最大的优势在于,不仅提供了一种简单且低复杂度的方法来改善搜索结果,允许用户将语义相关性纳入现有的搜索系统中,还无需进行重大的基础设施修改。


以 Cohere Rerank 为例,我们只需要注册账户和申请 API,接入只需要两行代码。此外,Cohere Rerank 还提供了多语言模型,这意味着我们可以将不同语言的文本查询结果进行一次性排序。


Azure AI 实验数据评估

Azure AI 对 RAG 中几种常用的检索模式做了实验数据测试,包括关键词检索、向量检索、混合检索、混合检索 + 重排序。实验结果支持将混合检索 + 重排序视为改进文档召回相关性的有效方法,对于使用 RAG 架构的生成式 AI 场景尤其适用。


以下是针对不同数据集类型的测试结果,可以看到混合检索 + 重排序的组合在不同测试集下的召回质量上都有一定程度的提升。

以下是针对不同查询情景的评估结果,可以看到在各个用例情景下,混合检索 + 重排序在不同程度上提升了文档召回的质量。


总结

本文讨论了在 RAG 系统中引入混合检索和语义重排序对于改善文档召回质量的原理和可行性,但仅仅是 RAG 检索管道设计中的一部分环节。


改善 RAG 应用的效果不能依赖于一个个独立的单点优化,而是要具备系统性的工程设计思维。要深刻理解用户的使用场景,将复杂的开放域问答问题概括为可收敛的一个个情景策略,只有在此基础之上,才能合理地选择索引、分段、检索、重排等一系列技术组合。


免费体验阿里云高性能向量检索服务:https://www.aliyun.com/product/ai/dashvector

向量banner制作-用于日常发文章.png

相关文章
|
2月前
|
存储 数据挖掘 机器人
使用LOTR合并检索提高RAG性能
RAG结合了两个关键元素:检索和生成。它首先使用语义搜索等高级技术来浏览大量数据,包括文本、图像、音频和视频。RAG的本质在于它能够检索相关信息,然后作为下一阶段的基础。生成组件利用大型语言模型的能力,解释这些数据块,制作连贯的、类似人类的响应。与传统的生成模型相比,这个过程确保RAG系统可以提供更细致和准确的输出。
158 2
|
2月前
|
存储 机器学习/深度学习 人工智能
为什么「检索增强」可以解决大模型的「幻觉」问题?
简述为什么「检索增强」可以解决大模型的“幻觉”问题。
|
自然语言处理 算法 数据挖掘
自蒸馏:一种简单高效的优化方式
背景知识蒸馏(knowledge distillation)指的是将预训练好的教师模型的知识通过蒸馏的方式迁移至学生模型,一般来说,教师模型会比学生模型网络容量更大,模型结构更复杂。对于学生而言,主要增益信息来自于更强的模型产出的带有更多可信信息的soft_label。例如下右图中,两个“2”对应的hard_label都是一样的,即0-9分类中,仅“2”类别对应概率为1.0,而soft_label
自蒸馏:一种简单高效的优化方式
|
2月前
|
人工智能 自然语言处理 搜索推荐
混合检索 + 重排序改善 RAG 应用
混合检索(向量+关键词)与重排序技术结合能显著提高文档召回率和准确性。RAG系统通过检索和重排序模型提供更精准的上下文信息给大模型,以生成更可靠的答案。开发者需根据应用场景选择合适的检索策略,并注意重排序的TopK值设定,以平衡召回质量和效率。
|
11天前
|
机器学习/深度学习 数据采集 人工智能
【机器学习】CLIP模型在有限计算资源下的性能探究:从数据、架构到训练策略
【机器学习】CLIP模型在有限计算资源下的性能探究:从数据、架构到训练策略
153 0
|
2月前
|
机器学习/深度学习 人工智能
论文介绍:PreFLMR——扩展细粒度晚期交互多模态检索器以提升知识视觉问答性能
【5月更文挑战第3天】PreFLMR是扩展的细粒度晚期交互多模态检索器,用于提升知识视觉问答(KB-VQA)性能。基于FLMR,PreFLMR结合大型语言模型和检索增强生成,增强准确性与效率。通过M2KR框架全面评估,PreFLMR展示出色性能,尤其在E-VQA和Infoseek等任务。然而,其在预训练阶段未充分训练知识密集型任务,且仍有优化训练方法和数据集混合比例的空间。[论文链接](https://arxiv.org/abs/2402.08327)
54 1
|
2月前
|
自然语言处理 搜索推荐 算法
【一文读懂】基于Havenask向量检索+大模型,构建可靠的智能问答服务
Havenask是阿里巴巴智能引擎事业部自研的开源高性能搜索引擎,深度支持了包括淘宝、天猫、菜鸟、高德、饿了么在内的几乎整个阿里的搜索业务。本文针对性介绍了Havenask作为一款高性能的召回搜索引擎,应用在向量检索和LLM智能问答场景的解决方案和核心优势。通过Havenask向量检索+大模型可以构建可靠的垂直领域的智能问答方案,同时快速在业务场景中进行实践及应用。
110629 63
|
2月前
|
存储 人工智能 数据处理
一文读懂:大模型RAG(检索增强生成)
RAG(检索增强生成)旨在弥补大模型知识局限性、幻觉问题和数据安全性的不足。它通过向量搜索从私域数据库中检索相关信息,结合问题生成提示,使模型能提供准确答案。
|
2月前
|
数据可视化
R语言实现有限混合模型建模分析
R语言实现有限混合模型建模分析
|
2月前
|
Linux 异构计算 Docker
QAnything本地知识库问答系统:基于检索增强生成式应用(RAG)两阶段检索、支持海量数据、跨语种问答
QAnything本地知识库问答系统:基于检索增强生成式应用(RAG)两阶段检索、支持海量数据、跨语种问答
QAnything本地知识库问答系统:基于检索增强生成式应用(RAG)两阶段检索、支持海量数据、跨语种问答