对话访谈——五问RAG与搜索引擎:探索知识检索的未来

记一次关于RAG和搜索引擎在知识检索方面的对话访谈,针对 RAG 与传统搜索引擎的异同,以及它们在知识检索领域的优劣势进行了深入的探讨。

在这里插入图片描述

Q:传统搜索引擎吗,通过召回-排序的两阶段模式,实现搜索逻辑的实现,当前RAG技术也是通过:召回-生成两阶段实现的。你怎么看?

传统搜索引擎和 RAG 技术在架构上确实有一些相似之处,都采用了两阶段的处理模式。让我来分享一下我的理解,传统搜索引擎通常分为召回(Recall)和排序(Ranking)两个阶段:

  1. 召回阶段:通过倒排索引、term matching 等快速匹配文档,从海量库中筛选出与查询相关的候选文档集合。这一阶段侧重速度和覆盖度。
  2. 排序阶段:采用更精细的算法和更多特征,对召回的候选集进行精排,生成最终的排序结果。这一阶段侧重质量和相关性。

RAG 作为一种检索增强的生成式模型,也分为检索(Retrieval)和生成(Generation)两个阶段:

  1. 检索阶段:通过 embedding 向量相似度匹配等方式,从支撑知识库中检索出与输入最相关的 top-k 个知识片段。RAG 的检索通常是针对 passage 或 chunk 级别,相比传统搜索引擎粒度更细。
  2. 生成阶段:以输入 query 和检索出的知识片段为上下文,用生成式模型(如 seq2seq)产生最终的答案文本。生成阶段可以很好地整合和总结知识,生成连贯自然的答案。

可以看出,两者在 pipeline 结构和解耦逻辑专业化方面有相通之处。但 RAG 更侧重知识的语义检索与整合,以支持自动问答、对话、摘要等自然语言生成任务。而传统搜索引擎的目标是匹配和排列现有的网页文档,为用户提供导航服务。

Q:那能否更加详细分析下,两阶段模型相比端到端模式呢?

好的,我们来深入对比分析两阶段模型和端到端模式。
从工程实践来看,两阶段模型相比端到端模式有以下优势:

  1. **解耦与分治:**将复杂的搜索、问答任务解耦为两个相对独立的子问题和阶段。每个阶段可以采用不同的算法、模型和优化策略。这种模块化有利于系统的开发、调试、维护和迭代。
  2. 可解释性:两阶段模型的中间结果(检索结果、候选答案)是可察看、可解释的。这对于出错分析、循环优化很有帮助。相比之下,端到端模式更像是个黑盒子,中间过程难以解释。
  3. 资源效率:两阶段模型允许在不同阶段使用不同的计算资源。召回/检索阶段通常可以用性价比更高的 CPU 集群,而排序/生成阶段则可以下沉到 GPU/TPU 等 AI 加速器。这种异构计算有助于提升整体效率,控制成本。
  4. 冷启动与少样本:端到端模式通常是数据饥渴型的,需要海量的端到端标注数据。而两阶段模型可以为每个阶段独立地构建训练集,在数据资源受限时,可以利用少样本学习、迁移学习等技术,相对更容易冷启动。
  5. 人机协同:两阶段模型允许人工介入干预。比如可以对召回结果人工审核筛选,对生成答案人工参考修订。这种人机协同可以弥补算法的不足,提升答案质量,也有助于发现训练数据。而端到端模式通常难以进行人工干预。

当然,端到端模式也有自身的优势:

  1. 简单:端到端模式消除了中间步骤,直接学习从输入文本到输出文本的映射。这在概念和实现上都更简洁。
  2. 统一目标:端到端模式可以用单一的目标函数端到端优化,不同模块之间可以协同更紧密,整体效果可能更优。
  3. 免去人工特征:端到端模式不需要人工设计中间特征,神经网络可以自动学习到合适的中间表示。

两阶段模型和端到端模式其实是两种不同的范式,没有绝对的优劣。工业界较多采用两阶段模型,更多是从工程角度出发,看重其模块化、可解释、可干预等特性。而学术界的尝试更多是端到端模式,更强调模型的简洁性和整体优化。
未来可能会有更多融合两者思想的创新模式出现。还有,随着大模型和自回归模型的发展,未来搜索、问答的形态也可能发生颠覆性的变化。

Q:什么情况下适合端到端?什么情况下适合分阶段模式呢?

这是一个很好的问题。我认为选择端到端还是分阶段模式,主要取决于任务的特点、数据的规模、可解释性的要求等因素。让我们分别讨论适合端到端和分阶段模式的一些场景。
适合端到端模式的情况:

  1. 任务的端到端数据容易获取:如果任务的输入输出数据是直接可得、容易标注的,那么端到端模式会更有优势。因为端到端学习需要大量的配对数据,中间过程的数据反而不太重要。
  2. 任务的评估指标是端到端的:有些任务的评估指标天然就是端到端的,比如机器翻译的 BLEU 分数、语音识别的错词率等。这种情况下,端到端优化目标明确,分阶段优化的价值不大。
  3. 任务的流程难以拆分:有些任务很难清晰地划分阶段或模块,不同部分之间高度耦合。强行拆分可能会引入额外的误差和复杂度。这种情况下,端到端学习可能更简洁有效。
  4. 不需要人工干预和解释:如果任务对可解释性和人工干预的要求不高,那么端到端模式会更灵活高效。因为分阶段模式为了可解释性,常常需要损失一定的性能。

适合分阶段模式的情况:

  1. 任务的自然流程可分:许多任务天然就是若干个子任务的组合,每个子任务的输入输出、目标函数、知识领域都相对独立。这种情况下,分阶段建模更符合任务的认知逻辑。
  2. 任务需要人机协同:如果任务需要人工审核、修订、反馈等环节,那么分阶段模式可以提供更好的人机交互界面。每个阶段的输入输出都可以成为人机交互的接口。
  3. 数据和资源受限:如果任务缺乏大规模的端到端数据,但某些子任务的数据相对充足,则可通过分阶段建模,利用这些子任务数据提升整体效果。不同阶段也可以使用不同的计算资源。
  4. 可解释性很重要:在医疗、金融、法律等高风险领域,AI 系统的可解释性至关重要。分阶段模型可以提供清晰的推理链条,每个阶段的结果都可以审核、分析、调试。
  5. 任务在动态演进:现实世界的许多任务需求是动态变化的。分阶段模式允许我们更灵活地升级、替换某些模块,而不用推倒重来。这对系统的持续优化很有帮助。

当然,以上只是一些总体思路,具体问题还需具体分析。未来可能会涌现出更多融合两种范式优点的创新模式。我们还要持续关注前沿的研究进展。

Q:现在有一种论调:RAG陷入了传统搜索引擎的老路-两阶段模式,召回的上限限制了整体的性能,不如端到端的方式,如何看待这种说法?

首先,这种观点的合理之处在于:RAG 的生成质量的确受到召回质量的制约。如果召回阶段检索到的知识片段不相关、不完整,那么无论生成模型多强大,最终的答案质量也会打折扣。召回阶段成了系统的瓶颈或上限。这就像是"木桶效应",整体的效果取决于最短的那块木板。从这个角度看,端到端方法似乎能避免这种瓶颈,理论上可以达到更优的效果。
但我认为,这种观点也有其局限性和遗漏的地方:

  1. 忽视了知识的外部性:端到端方法通常假设知识全部蕴含在参数里,但现实中很多知识是外部的、动态变化的。RAG 的检索模块为引入外部知识提供了一个接口,使得系统可以适应开放域、持续学习的场景。而端到端方法很难处理系统训练之后的新增知识。
  2. 忽视了大模型的不足:尽管大模型已经展现了惊人的能力,但它们在数值推理、逻辑推理等方面还有局限。而 RAG 的检索结果可以为这些推理任务提供更可靠的素材和依据。因此在某些任务上,RAG 可能反而比纯端到端方法更有优势。
  3. 召回方法还有很大改进空间:目前的 RAG 系统大多采用了相对简单的召回方法,如 BM25、dense passage retrieval 等。但召回技术自身还有很大的发展空间,如利用知识蒸馏、query 改写、语义索引等。召回阶段的增强,可以很大程度提升 RAG 的上限。
  4. 两阶段也可以端到端联合优化:尽管 RAG 由两个模块组成,但我们也可以设计端到端的训练范式,让检索器和生成器相互适应,协同进化。这样既兼顾了模块化的优势,又能进行全局优化,实现 1+1>2 的效果。
  5. 融合是大势所趋:未来可能既不是 RAG 的两阶段,也不是纯粹的端到端,而是二者的融合。我们可以想象一种融合范式:先用端到端方法直接生成,再用 RAG 的检索结果对生成结果进行知识增强和事实矫正。这可能集两家之长。

我认为 RAG 代表的两阶段范式和端到端方法各有优劣,未来可能会融合发展。我们不应简单地认为 RAG 就是倒退或者走老路。RAG 的出现反而为我们理解和发展 QA 系统提供了新的视角。关键是要辩证地、创新地去思考如何取长补短,融合发展,创造出更优的范式。

Q:能否详细说下,未来畅想的融合的方式?

我来畅想几种可能的融合方式,这些设想旨在集两阶段模型和端到端模型之所长,扬长避短。

  1. 端到端生成 + 基于知识的后校正: 这种融合方式可以先用端到端的生成模型直接生成一个初步答案,然后用基于知识检索的方法(类似 RAG)对初步答案进行事实校对和细化完善。
    • 端到端模型负责生成流畅、自然、连贯的答案,捕捉语言的内在逻辑。
    • 基于知识检索的后处理模块负责纠正事实性错误,补充重要的细节,提供来源依据,保证答案的可靠性。
    • 后处理模块可以利用知识蒸馏等技术,从端到端模型中学习如何完成任务,不断提升自己。 这样既发挥了端到端生成的语言能力,又兼顾了答案的事实准确性。
  2. "针对任务的端到端"方法: 与其将端到端视为一个泛泛的目标,不如针对具体任务定制端到端的方法。每个任务都有其特定的知识源、问题类型、评价指标,适合定制优化。
    • 对于事实类问答,可以将知识库进行预处理和压缩,得到一个密集的知识表示,然后把它拼接到问题向量,最后端到端地生成答案。这里的"端到端"是指输入知识库和问题,直接输出答案。
    • 对于常识推理类问题,可以先基于图谱生成一个推理链,然后将推理链编码为一个向量,与问题向量拼接,去端到端生成答案。这里的"端到端"是指输入问题,结合背景知识,直接推理出答案。 这种"针对任务的端到端"兼顾了任务属性和端到端形式,可能比大而全的端到端更有效。
  3. 融合范式下的联合学习: 在融合的框架下,两阶段模型和端到端模型不是割裂的,而是可以相互学习、彼此促进的。
    • 端到端模型的生成结果可以作为两阶段模型的弱监督信号,指导检索阶段的优化。
    • 两阶段模型的推理过程可以看作一种"思维链",用来监督和解释端到端模型的中间过程。
    • 可以设计一个联合的损失函数,既包含端到端的损失,也包含每个阶段的损失,进行多目标学习。 通过联合学习,融合模型可以比单一模型学到更丰富、更强健的知识表示。
  4. 动态混合的自适应策略: 未来的系统可以根据具体问题和上下文,动态地决定采用两阶段模型还是端到端模型,或者决定两者的混合比例。
    • 对于事实类问题,可以更多地依赖基于知识的两阶段模型;对于需要常识推理的问题,可以更多地使用端到端生成。
    • 一些元学习的方法可以用来学习这种适应性策略,根据问题的特点,选择最优的推理路径。 这种自适应混合策略赋予了系统更大的灵活性,使其能应对不同类型的问题。

当然,以上只是一些初步的构想,具体的实现还面临诸多挑战。但我相信,随着两大范式的交叉融合,一定会涌现出更多创新的思路和方法。未来的 QA 系统很可能是一种多范式、多策略的综合体,能够灵活地应对开放领域的各种问题。

总结

探讨了两阶段模型(如 RAG)和端到端模型在信息检索、知识问答等任务中的优劣和趋势。一种观点认为,RAG 受限于召回阶段的质量上限,不如端到端方法前景广阔。但我们辩证分析后发现,这种观点有一定道理,但也忽视了 RAG 的优势和改进空间。
RAG 的优势在于:1)能够引入外部动态知识;2)可以为数值、逻辑推理提供可靠依据;3)召回技术本身还有很大改进空间;4)两阶段模型也可以端到端联合优化;5)模块化设计更具可解释性和人机协同性。
我们进一步展望了未来两大范式可能的融合方式:1)端到端生成 + 基于知识的后校正;2)针对任务定制的端到端方法;3)融合范式下的联合学习;4)动态混合的自适应策略。这些设想旨在集两种范式之所长,扬长避短,发挥协同效应。
未来的信息检索、知识问答系统可能是一种多范式、多策略的复合体,能够兼顾知识的外部性、推理能力、可解释性、语言流畅度等多方面要求,灵活地应对开放领域的各种问题。两阶段模型和端到端模型不是对立的,而是可以互补、融合、协同进化的。关键是要开放、创新的思路,去探索适应不同任务和场景的最佳范式。
这次对话让我们对 RAG 和端到端方法有了更全面、辩证的认识,也展望了未来发展的诸多可能性。我们要继续保持开放、创新的态度,既要立足当下解决实际问题,也要放眼未来把握技术发展趋势。只有在实践中不断探索、优化、创新,才能推动问答系统技术的蓬勃发展,让其更好地造福人类社会。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/5365.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SDB2F5 1.5A,高达28V输出1.2MHz升压转换器芯片IC

一般说明 该SDB2F5是一个恒定的频率,5针SOT23电流模式升压转换器,低功耗应用。SDB2F5交换机位于1.2MHz,并允许使用高度小于或等于2mm的微小、低成本电容器和电感器。内部软启动的结果在小浪涌电流和延长电池寿命。 该SDB2F5操作从一个…

Spring6 当中的 Bean 循环依赖的详细处理方案+源码解析

1. Spring6 当中的 Bean 循环依赖的详细处理方案源码解析 文章目录 1. Spring6 当中的 Bean 循环依赖的详细处理方案源码解析每博一文案1.1 Bean的循环依赖1.2 singletion 下的 set 注入下的 Bean 的循环依赖1.3 prototype下的 set 注入下的 Bean 的循环依赖1.4 singleton下的构…

JavaScript中的Object方法、Array方法、String方法

个人主页:学习前端的小z 个人专栏:JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 🔥Object方法🌞1 Object.is()🌞2 Object.…

Windows中Redis安装配置

一,下载 Redis官网 Redis中文网 Redis的Github资源 安装 更改资源路径及添加环境变量 添加防火墙异常 设置最大缓存 三、验证redis安装是否成功 redis-cli

selenium4.x 之浏览器弹窗处理

一、浏览器自带弹窗alert弹窗 webdriver中处理JavaScript所生成的alert、confirm以及prompt弹窗是很简单的。具体思路是使用switch_to.alert()方法定位到alert/confirm/prompt弹窗。然后使用text/accept/dismiss/send_keys方法按需进行操做 操作 说明返回text返回alert/confir…

22 重构系统升级-实现不停服的数据迁移和用户切量

专栏的前 21 讲,从读、写以及扣减的角度介绍了三种特点各异的微服务的构建技巧,最后从微服务的共性问题出发,介绍了这些共性问题的应对技巧。 在实际工作中,你就可以参考本专栏介绍的技巧构建新的微服务,架构一个具备…

Centos 7 安装 Redis

Centos 7 安装 Redis 安装步骤1、安装软件源2、安装redis3、创建符号链接4、修改配置文件5、启动 redis6、停止redis 安装步骤 1、安装软件源 如果是Centos 8 直接yum install 就可以了 yum install -y redis但是如果是Centos 7,redis 默认的是 redis 3 系列&…

用于复杂任务的 AI 编码引擎:多文件多步骤拆解实现 | 开源日报 No.239

plandex-ai/plandex Stars: 3.1k License: AGPL-3.0 plandex 是一个用于复杂任务的 AI 编码引擎。 使用长时间运行的代理完成跨多个文件且需要多个步骤的任务将大型任务分解为较小子任务,逐一实现,直至完成整个工作帮助处理积压工作、使用陌生技术、摆…

想开发一款带有视频通话/共享屏幕功能的产品?那WebRTC是你必须要知道的!

作为一名技术爱好者,我总是对各种协议、各种功能感兴趣,两周前我想为我的开源项目ChatCraft集成视频通话功能,我就开始了对应技术的研究,然后我盯上了WebRTC。在这个研究过程中,我恶补了大量有关WebRTC的知识&#xff…

Golang错误处理机制

文章目录 Golang错误处理机制panic异常recover捕获异常自定义错误 Golang错误处理机制 panic异常 panic异常 Go的类型系统会在编译时捕获很多错误,但有些错误只能在运行时检查,比如除零错误、数组访问越界、空指针引用等,这些运行时错误会引…

上位机图像处理和嵌入式模块部署(树莓派4b进行自动化测试)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 硬件、软件功能开发ok只是产品开发的第一步。怎么做到自动化测试、保证产品质量才是关键。很多时候,我们给客户提供了功能,…

Leetcode-17.04. 消失的数字

面试题 17.04. 消失的数字 - 力扣(LeetCode)https://leetcode.cn/problems/missing-number-lcci/ 目录 面试题 17.04. 消失的数字 - 力扣(LeetCode) 题目 解题(注释) 第一种方法 第二种方法 第三种方法 题目 数组nums包含…

73、栈-柱状图中最大的矩形

思路: 矩形面积:宽度*高度 高度如何确定呢?就是在宽度中最矮的元素。如何确定宽度,就是要确定左右边界。 当我们在处理直方图最大矩形面积问题时,遇到一个比栈顶柱子矮的新柱子时开始计算面积的原因关键在于如何确定…

医院手术室麻醉信息管理系统源码 自动生成麻醉的各种医疗文书(手术风险评估表、手术安全核查表)

目录 手术风险评估表 一、患者基本信息 二、既往病史 三、手术相关信息 四、风险评估因素 五、风险评估结果 手术安全核查表 一、患者身份与手术信息核对 二、术前准备核查 三、手术团队与职责确认 四、手术物品与设备核查 五、术中关键步骤核查 六、术后核查 七…

远程桌面的端口配置与优化

在现代企业环境中,远程桌面连接已成为日常工作中不可或缺的一部分。然而,随着网络攻击的增加,确保远程桌面连接的安全性变得尤为重要。其中一个关键的安全因素是端口配置。 一、远程桌面默认端口 远程桌面协议(RDP)默…

亚马逊关键字搜索商品列表API接口:探索海量商品的利器

亚马逊关键字搜索商品列表API接口允许开发者通过输入关键字或特定参数,在亚马逊平台上进行商品搜索,并返回符合搜索条件的商品列表信息。这些信息包括商品的标题、图片、价格、评价等,为商家、开发者以及市场分析师提供了丰富的商品数据支持。…

docker里部署SpringBoot项目,访问不到扬声器,如何解决??

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

# 从浅入深 学习 SpringCloud 微服务架构(七)Hystrix(1)

从浅入深 学习 SpringCloud 微服务架构(七)Hystrix(1) 一、Hystrix:基于 RestTemplate 的熔断配置 1、Hystrix 介绍: 1)Hystrix 是由 Netflix 开源的一个延迟和容错库, 用于隔离访…

《21天学通C++》(第十二章)运算符类型与运算符重载

1.为什么要重载运算符&#xff1f; 通过重载运算符&#xff0c;可以将复杂的操作封装成简单的运算符形式&#xff0c;简化代码&#xff0c;提高可读性下面举一个简单的例子 计算两个点的坐标之和。 1.不重载运算符 #include <iostream> using namespace std; class P…

GCB | 陆地生态系统C:N:P化学计量对降水变化的响应

西北农林科技大学水保学院上官周平研究员团队在陆地生态系统C:N:P化学计量对降水变化的响应方面取得新进展&#xff0c;并以“C:N:P stoichiometry of plants, soils, and microorganisms: Response to altered precipitation”为题发表在国际生态环境领域著名期刊Global Chang…