对比 Embedding 检索与关键词检索(如 BM25):RAG 场景下的适用性分析

目录

对比 Embedding 检索与关键词检索(如 BM25):RAG 场景下的适用性分析

一、什么是关键词检索与Embedding检索?

关键词检索(以 BM25 为代表)

Embedding 检索(语义向量检索)

二、在 RAG 场景下的适用性对比

举例说明

三、实践建议:融合式检索是趋势

四、总结



对比 Embedding 检索与关键词检索(如 BM25):RAG 场景下的适用性分析

近年来,Retrieval-Augmented Generation(RAG)成为大语言模型(LLM)结合外部知识的重要方式。在构建 RAG 系统时,检索模块的设计是核心之一,其中主流方法包括传统关键词检索(如 BM25)和基于向量的语义检索(Embedding)。这两种方式在实际应用中各有千秋,本文将从适用性、优势与劣势等角度,剖析它们在 RAG 场景下的差异。


一、什么是关键词检索与Embedding检索?

关键词检索(以 BM25 为代表)

BM25 是一种基于词频和逆文档频率的打分机制,是信息检索中经典的排序方法。其基本思想是:查询词在文档中出现得越多,且该词越稀有,该文档越相关。

优点:

  • 快速、成熟、可解释性强;

  • 不依赖训练,零资源也能用;

  • 对于结构化、术语明确的文本检索效果好。

缺点:

  • 完全基于字面匹配,无法处理语义;

  • 同义词、上下文理解能力弱;

  • 查询与文档词汇差异大时效果差。

Embedding 检索(语义向量检索)

Embedding 检索是将查询和文档分别编码为高维向量,在语义空间中进行相似度计算(如 cosine 相似度)。底层模型通常是 BERT、Sentence-BERT、MiniLM 等。

优点:

  • 理解语义,能识别同义、泛化表达;

  • 更适合长文本、复杂查询;

  • 可结合监督学习进一步优化召回质量。

缺点:

  • 模型训练和部署成本高;

  • 对领域外数据泛化能力不一定强;

  • 需要构建向量索引结构,占用更多资源。


二、在 RAG 场景下的适用性对比

RAG 结构中,检索质量直接影响生成效果。我们从几个关键维度进行对比:

维度BM25(关键词检索)Embedding 检索
语义理解能力
召回准确率高于 Embedding(在术语精确匹配时)高(尤其在开放域 QA、复杂语义表达)
召回多样性低(语义重复内容多)高(能捕捉不同表达)
鲁棒性(拼写/同义/表述差异)
部署复杂度
适合领域法律、医疗、术语密集型内容开放域、对话、多语言、多表达任务
对 LLM 生成影响生成内容依赖于匹配的准确性生成内容更自然、丰富

举例说明

BM25 更适合如下情境:

  • 用户查询:“2023年中国GDP”,BM25 能找到标题、字段都包含“2023”“中国”“GDP”的文档;

  • 用户提出精确法条或产品型号时。

Embedding 更适合如下情境:

  • 用户问:“去年我国经济增长情况如何?”虽然没出现“2023年”“GDP”这些词,但语义上是一样的,Embedding 可召回正确文档;

  • 用户表述不一致、包含错别字、口语化语言。


三、实践建议:融合式检索是趋势

现实中,这两类检索并非二选一。常见的做法是 “Hybrid 检索”,即关键词+Embedding 结合,优点互补:

  • 先用 BM25 快速过滤,再用 Embedding 精排;

  • 分别召回,再合并重排,提高多样性和语义覆盖;

  • 结合 reranker(如 cross-encoder)进一步提升质量。


四、总结

在 RAG 系统中,选择何种检索方式,需权衡 应用场景、数据类型、用户习惯、响应速度与资源成本

  • 关键词检索(如 BM25)依旧适用于结构化、术语明确、低成本需求的场景;

  • Embedding 检索更适用于语义丰富、自然语言查询频繁的生成式 AI 场景;

  • 两者结合,能达到更好的效果,尤其在企业级 RAG 系统中已成标配。

未来,随着多模态模型、领域微调 Embedding 的普及,Embedding 检索将在更多场景中替代关键词检索,成为 RAG 中的主力。


如果你正在构建 RAG 系统,不妨尝试对比这两种检索方式,并结合你的业务特点选择最佳策略。

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

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

相关文章

【AI大模型】DeepSeek + 通义万相高效制作AI视频实战详解

目录 一、前言 二、AI视频概述 2.1 什么是AI视频 2.2 AI视频核心特点 2.3 AI视频应用场景 三、通义万相介绍 3.1 通义万相概述 3.1.1 什么是通义万相 3.2 通义万相核心特点 3.3 通义万相技术特点 3.4 通义万相应用场景 四、DeepSeek 通义万相制作AI视频流程 4.1 D…

【Unity】合批处理和GPU实例化的底层优化原理(完)

【Unity】批处理和实例化的底层优化原理 URP1.基础概念SetPassCallsDrawCallsBatches 2.重要性排序既然如此为什么仍然要合批? 3.unity主流的合批优化方案和优先级Early-Z透明物体情况 4.合批(小场景但是很复杂很多小物件刚需)合并纹理图集更…

当人类关系重构:从“相互需要”到“鹅卵石化”——生成式人工智能(GAI)认证的角色与影响

在数字化浪潮的席卷之下,人类社会正经历着前所未有的变革。人与人之间的连接方式、互动模式以及价值认同,都在悄然发生着变化。这一过程中,一个显著的现象是,人与人之间的关系逐渐从传统的“相互需要”模式,转变为一种更为复杂、多元且稳定的“鹅卵石化”结构。在此背景下…

ctfhow——web入门171~175

sql简介 web入门171 ——判断注入点: -1 union select 1,2,3 -- 其实在这之前可以先判断多少列,即 -1‘ group(order) by 3 -- group by用于将具有相同值的行分组成一个汇总行,可以查看是否报错确定列数 2&#x…

vue遗漏的知识点(动态组件.组件库的操作使用)

----动态组件&#xff08;vue2vue3通用&#xff09; <component :is"..."> 的作用 <component> 是 Vue 的内置组件&#xff0c;用于动态渲染其他组件。:is 属性 用于指定要渲染的组件。它的值可以是&#xff1a; 组件的名称&#xff08;字符串&#xf…

ip改变导致的数据库连接不上

前言 需要用到路由器&#xff0c;所以先把家里的路由器给拆了先用着。新的路由器到了之后&#xff0c;更换上新的路由器之后&#xff0c;调用到服务会有报错&#xff0c;记录一下更换路由器之后ip重新分配服务可能会报的错. 进一步可以看到有关网路在服务当中的影响。 正文 …

DeepSeek面试——模型架构和主要创新点

本文将介绍DeepSeek的模型架构多头潜在注意力&#xff08;MLA&#xff09;技术&#xff0c;混合专家&#xff08;MoE&#xff09;架构&#xff0c; 无辅助损失负载均衡技术&#xff0c;多Token 预测&#xff08;MTP&#xff09;策略。 一、模型架构 DeepSeek-R1的基本架构沿用…

基于HTML5的3D魔方项目开发实践

基于HTML5的3D魔方项目开发实践 这里写目录标题 基于HTML5的3D魔方项目开发实践项目概述核心技术实现1. 3D效果实现CSS3 3D变换魔方结构设计 2. 交互控制实现动画控制键盘控制触摸控制 技术难点与解决方案1. 3D变换控制2. 触摸体验优化3. 动画性能优化 项目收获总结项目展望 项…

23种设计模式-原型(Prototype)设计模式

原型设计模式 &#x1f6a9;什么是原型设计模式&#xff1f;&#x1f6a9;原型设计模式的特点&#x1f6a9;原型设计模式的结构&#x1f6a9;原型设计模式的优缺点&#x1f6a9;原型设计模式的Java实现&#x1f6a9;代码总结&#x1f6a9;总结 &#x1f6a9;什么是原型设计模式…

【MATLAB例程】交互式多模型(IMM),模型使用:CV,CT左转、CT右转,二维平面,三个模型的IMM,滤波使用EKF。订阅专栏后可查看代码

简单的介绍:本文所述的代码实现了一种基于交互多模型(IMM)算法的目标跟踪仿真,适用于复杂运动目标(如匀速、转弯运动)的状态估计。代码通过三个运动模型(匀速CV、左转弯CT1、右转弯CT2)的协同滤波,动态调整模型概率,最终输出综合跟踪结果。代码包含完整的仿真数据生成…

搭建私人对外git空间

# 创建用户&#xff0c;指定不可登录的 Shell&#xff08;git-shell 或 /usr/sbin/nologin&#xff09; sudo adduser --system --shell /usr/bin/git-shell --group git # 验证用户配置 grep git /etc/passwd # 预期输出&#xff1a;git:x:998:998::/home/git:/usr/bin/git-s…

PHP中yield关键字的使用

PHP版本>5.5 原理&#xff1a;yield关键字会生成一个Generator类的对象&#xff0c;PHP通过Generator实例计算出下一次迭代的值&#xff0c;再次返回一个Generator对象并停止循环&#xff08;即循环一次执行一次&#xff09;。 理解&#xff1a;使用在for/foreach/while循…

Vue3 实战:基于 mxGraph 与 WebSocket 的动态流程图构建

本文将详细介绍如何在 Vue3 项目中集成 mxGraph 可视化库&#xff0c;并通过 WebSocket 实现画布元素的实时更新。适合有 Vue 基础的前端开发者学习参考。 一、技术栈准备 Vue3&#xff1a;采用 Composition API 开发mxGraph&#xff1a;JavaScript 流程图库&#xff08;版本 …

Linux目录及文件管理

目录 一.Linux目录基本结构 1.常见目录及其作用 二.常用文件处理命令 1.七类常见的linux的文件 2.cat&#xff08;查看文件内容&#xff09; 3.more(分页查看文件内容&#xff09; 4.less(分页查看文件内容&#xff09; 5.head&#xff08;从头部查看文件内容&#xff0…

电机控制常见面试问题(二十)

文章目录 一.整流电路绕组接法二.电机为什么需要转速器三.电机转矩产生原理四.电机控制中载波频率大小的确定五.开关周期 Tpwm 一.整流电路绕组接法 为了引出直流的输出&#xff0c;一定要在整流变压器的二次侧引出零线&#xff0c;所以二次侧绕组必须接成星形 一次绕组必须要…

arm之s3c2440的I2C的用法

基础概念 IC&#xff08;Inter-Integrated Circuit&#xff09;又称I2C&#xff0c;是是IICBus简称&#xff0c;所以中文应该叫集成电路总线。 IIC的总线的使用场景&#xff0c;所有挂载在IIC总线上的设备都有两根信号线&#xff0c;一根是数据线SDA&#xff0c;另一 根是时钟…

MyBatis-Plus(Ⅲ)IService详解

目录 一、逐一演示 1.save&#xff08;插入一条&#xff09; 结果 断言&#xff08;引入概念&#xff09; 2.saveBatch&#xff08;批量插入&#xff09; 结果 3.saveOrUpdateBatch&#xff08;批量插入&更新&#xff09; 结果 4.removeById&#xff08;通过id删除…

可视化图解算法:删除有序(排序)链表中重复的元素-II

1. 题目 描述 给出一个升序排序的链表&#xff0c;删除链表中的所有重复出现的元素&#xff0c;只保留原链表中只出现一次的元素。 例如&#xff1a; 给出的链表为1→2→3→3→4→4→5, 返回1→2→5. 给出的链表为1→1→1→2→3 返回2→3. 数据范围&#xff1a;链表长度 0≤…

23种设计模式-中介者(Mediator)设计模式

中介者设计模式 &#x1f6a9;什么是中介者设计模式&#xff1f;&#x1f6a9;中介者设计模式的特点&#x1f6a9;中介者设计模式的结构&#x1f6a9;中介者设计模式的优缺点&#x1f6a9;中介者设计模式的Java实现&#x1f6a9;代码总结&#x1f6a9;总结 &#x1f6a9;什么是…

基于云服务器的数仓搭建-hive/spark安装

mysql本地安装 安装流程&#xff08;内存占用200M&#xff0c;升至2.1G&#xff09; # 将资料里mysql文件夹及里面所有内容上传到/opt/software/mysql目录下 mkdir /opt/software/mysql cd /opt/software/mysql/ # 待上传文件 install_mysql.sh mysql-community-client-8.0.3…