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

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

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

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

image

本文作为一篇关于混合检索和重排序技术入门的文章,一方面将介绍这两项技术的基本原理,解释其为何能够改善 RAG 系统的召回效果。另一方面,也将讨论构建生产级 RAG 应用的复杂性。

【一一AGI大模型学习 所有资源获取处一一】

①人工智能/大模型学习路线

②AI产品经理入门指南

③大模型方向必读书籍PDF版

④超详细海量大模型实战项目

⑤LLM大模型系统学习教程

⑥640套-AI大模型报告合集

⑦从0-1入门大模型教程视频

⑧AGI大模型技术公开课名额

RAG 概念解释

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

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

image

图 1 RAG 应用示意图

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

为什么需要这样做呢?

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

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

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

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

为什么需要混合检索?

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

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

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

  • 相近语义理解(如老鼠/捕鼠器/奶酪、谷歌/必应/搜索引擎)

  • 多语言理解(跨语言理解,如输入中文匹配英文)

  • 多模态理解(支持文本、图像、音视频等的相似匹配)

  • 容错性(处理拼写错误、模糊的描述)

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

  • 搜索一个人或物体的名字(例如伊隆·马斯克、iPhone 15)

  • 搜索缩写词或短语(例如 RAG、RLHF)

  • 搜索 ID(例如 gpt-3.5-turbo、titan-xlarge-v1.01)

而上述缺点正好是传统关键词搜索的优势所在。传统关键词搜索擅长:

  • 精确匹配(如产品名称、姓名、产品编号)

  • 少量字符的匹配(通过少量字符进行向量检索时效果非常不好,但很多用户恰恰习惯于只输入几个关键词)

  • 倾向低频词汇的匹配(低频词汇往往承载了语言中的重要意义,比如“你想跟我去喝咖啡吗?”这句话中的分词,“喝”“咖啡”会比“你”“吗”在句子中承载更重要的含义)

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

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

image

图 2 混合检索流程

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

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

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

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

为什么需要重排序?

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

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

image

图 3 混合检索 + 重排序

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

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

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

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

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

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

Azure AI 实验数据评估

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

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

image

图 4 针对不同数据集类型的测试结果

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

image

图 5 针对不同查询场景的评估结果

总结

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

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

如何系统的去学习大模型LLM ?

作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料 包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来

😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

四、AI大模型商业化落地方案

img

阶段1:AI大模型时代的基础理解
  • 目标:了解AI大模型的基本概念、发展历程和核心原理。
  • 内容
    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
      - L1.4.1 知识大模型
      - L1.4.2 生产大模型
      - L1.4.3 模型工程方法论
      - L1.4.4 模型工程实践
    • L1.5 GPT应用案例
阶段2:AI大模型API应用开发工程
  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
  • 内容
    • L2.1 API接口
      - L2.1.1 OpenAI API接口
      - L2.1.2 Python接口接入
      - L2.1.3 BOT工具类框架
      - L2.1.4 代码示例
    • L2.2 Prompt框架
      - L2.2.1 什么是Prompt
      - L2.2.2 Prompt框架应用现状
      - L2.2.3 基于GPTAS的Prompt框架
      - L2.2.4 Prompt框架与Thought
      - L2.2.5 Prompt框架与提示词
    • L2.3 流水线工程
      - L2.3.1 流水线工程的概念
      - L2.3.2 流水线工程的优点
      - L2.3.3 流水线工程的应用
    • L2.4 总结与展望
阶段3:AI大模型应用架构实践
  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
  • 内容
    • L3.1 Agent模型框架
      - L3.1.1 Agent模型框架的设计理念
      - L3.1.2 Agent模型框架的核心组件
      - L3.1.3 Agent模型框架的实现细节
    • L3.2 MetaGPT
      - L3.2.1 MetaGPT的基本概念
      - L3.2.2 MetaGPT的工作原理
      - L3.2.3 MetaGPT的应用场景
    • L3.3 ChatGLM
      - L3.3.1 ChatGLM的特点
      - L3.3.2 ChatGLM的开发环境
      - L3.3.3 ChatGLM的使用示例
    • L3.4 LLAMA
      - L3.4.1 LLAMA的特点
      - L3.4.2 LLAMA的开发环境
      - L3.4.3 LLAMA的使用示例
    • L3.5 其他大模型介绍
阶段4:AI大模型私有化部署
  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
  • 内容
    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景
学习计划:
  • 阶段1:1-2个月,建立AI大模型的基础知识体系。
  • 阶段2:2-3个月,专注于API应用开发能力的提升。
  • 阶段3:3-4个月,深入实践AI大模型的应用架构和私有化部署。
  • 阶段4:4-5个月,专注于高级模型的应用和部署。
这份完整版的大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

😝有需要的小伙伴,可以Vx扫描下方二维码免费领取🆓

  • 16
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值