news 2026/5/1 5:03:54

BM25, TF-IDF, Faiss-based methods

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
BM25, TF-IDF, Faiss-based methods

在深度学习(Deep Learning)和 BERT 大行其道之前,它们统治了信息检索(Information Retrieval, IR)领域几十年。

1. TF-IDF:统计学的直觉

全称:Term Frequency - Inverse Document Frequency(词频-逆文档频率)。

它的核心逻辑:怎么判断一个词重不重要?

假如你在查“TCU2 通信故障”。

  • TF (词频):如果一个文档里“TCU2”出现了 10 次,另一个只出现了 1 次,前者肯定更相关。——越多越好。

  • IDF (逆文档频率):如果“故障”这个词在每一篇日志里都出现,那它就是废话,对区分文档没有任何帮助。反之,“TCU2”如果只在 5% 的文档里出现,那它就是核心特征。——越稀有越重要。

计算方式:

系统会算出每个词的 $TF \times IDF$ 分数,生成一个稀疏向量。

  • 优点:极快,完全不需要训练,直接统计就有结果。

  • 本文中的致命伤(语义鸿沟):

    • 只认字,不认意

    • 如果用户查:“转换器异常”。

    • 文档里写的是:“变流器工作停止”。

    • 虽然在列车语境下这是同一个东西,但 TF-IDF 认为这是两个完全不同的词,分数可能为 0。这就是论文中提到的“Shallow bag-of-words similarity”(浅层词袋相似度)1。


2. BM25:工业界的“黄金标准”

全称:Best Matching 25(最佳匹配算法 25 版)。

它是 TF-IDF 的进化版

它是目前如果不使用深度学习,效果最好的检索算法,也是 Elasticsearch、Lucene 等搜索引擎的默认算法。它主要改进了 TF-IDF 的两个缺陷:

  1. 词频饱和(Term Frequency Saturation):

    • TF-IDF 的问题:“故障”出现 100 次的分数是出现 1 次的 100 倍。这不合理。

    • BM25 的改进:引入了饱和机制。出现 3 次和出现 100 次,得分差不多。它认为“有了就行,多了没用”。

  2. 文档长度归一化(Document Length Normalization):

    • 问题:长文档天然包含更多词,更容易被搜出来。

    • BM25 的改进:对长文档进行惩罚,对短文档进行补偿,保证公平性。

在本文中的角色

BM25 是传统方法的**“天花板”**。如果一个深度学习模型(比如 Naive RAG)跑出来比 BM25 还差,那这个深度学习模型就是失败的(通常意味着过拟合或者没训练好)。


3. Faiss-based methods:从“怎么算”到“怎么找”

全称:Facebook AI Similarity Search。

这里需要特别注意,Faiss 本身不是一个“模型”,而是一个“工具库”。它是由 Facebook (Meta) 开发的,专门用来在海量向量中快速找最近邻居(Nearest Neighbor Search)的工程神器。

为什么把它列在这里?

在论文的语境下,Faiss 代表的是**“非学习型的向量检索”**。

  • 通常搭配:当作者把 Faiss 和 TF-IDF/BM25 放在一起时,通常意味着这里的 Faiss 使用的是未经微调的简单向量(例如使用词向量的平均值,或者传统的 LSI/SVD 降维向量)。

  • 对比点:

    • TG-RL-RAG (本文方法):向量的分布是学出来的(通过 RL 调整 Agent 的策略)。

    • Faiss-based (基线):向量的分布是固定的(基于词频统计或静态 Embedding),Faiss 只是用来快速计算欧几里得距离或内积。


4. 深度解析:为什么这一组在实验中“全军覆没”?

请看论文中的实验结果(图 4 和图 5 的底部水平线,以及表 3):

  • Hit Rate 极低:BM25, TF-IDF, Faiss 的命中率都在0.4 ~ 0.5左右,远低于 TG-RL-RAG 的0.8 ~ 0.9

  • 无增长:它们的曲线是水平的,因为它们不需要训练数据(Training Set),给再多数据它们也学不到新东西 2。

根本原因分析(Report Highlights):

作为研究生汇报,你可以这样总结这部分基线的失败原因:

  1. 缺乏语义理解(The Semantic Gap):

    • 故障描述通常非常灵活。比如“显示屏黑了”和“HMI无显示”,TF-IDF 和 BM25 无法建立联系,但深度学习模型(如 Naive RAG)可以通过训练学会它们是同义词。

  2. 无法处理复杂句法:

    • 故障查询通常包含因果逻辑(“A 导致 B”)。传统方法只看词是否出现,不看词的顺序。Faiss(基于简单向量时)也往往由词向量平均而来,丢失了语序信息。

  3. 零样本的局限性:

    • 这三种方法都是非参数化(Non-parametric)非学习型的。它们无法像本文提出的 RL Agent 那样,通过与环境(Graph)的交互,根据反馈(Reward)来调整自己的检索策略。

总结

  • TF-IDF基石(算词频)。

  • BM25修正(加饱和度与长度惩罚),是传统检索的最强战力。

  • Faiss工具(算距离),在这里代表非深度学习的向量检索。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 4:53:50

Vue3 漏斗图

三种效果图&#xff1a;图一&#xff1a;<template><v-chart ref"vChartRef" :option"option"></v-chart> </template><script setup lang"ts"> import { ref, computed, PropType, nextTick } from "vue&qu…

作者头像 李华
网站建设 2026/5/1 2:38:28

22、Web与互联网管理实用脚本介绍

Web与互联网管理实用脚本介绍 在Web与互联网管理领域,有许多实用的脚本可以帮助我们更高效地完成各种任务。下面将详细介绍几个实用脚本,包括外部链接检查、Apache密码管理以及文件同步。 1. 外部链接检查脚本(checkexternal) 在网站维护过程中,检查外部链接的有效性是…

作者头像 李华
网站建设 2026/4/30 22:07:39

31、日期与时间处理脚本及Windows 10安装Bash指南

日期与时间处理脚本及Windows 10安装Bash指南 一、GNU date的强大功能 GNU date是一个强大的工具,安装后,许多日期计算变得简单。例如判断某一年是否为闰年,只需使用以下代码: if [ $( date 12/31/$year +%j ) -eq 366 ]如果一年的最后一天是该年的第366天,那么这一年…

作者头像 李华
网站建设 2026/4/29 13:38:57

收藏备用!程序员入门大模型:从0到1的学习全攻略

打开招聘软件不难发现一个趋势&#xff1a;传统开发岗位竞争愈发激烈&#xff0c;但大模型相关岗位却一路“绿灯”——算法工程师、大模型应用开发、Prompt工程师等职位薪资水涨船高&#xff0c;甚至不少公司开出“零基础培训入职”的条件。对程序员来说&#xff0c;现在学大模…

作者头像 李华
网站建设 2026/4/18 8:32:37

被 C 盘折磨这么多年,这次是最轻松的一次

我的 C 盘爆红了。 断断续续用安全软件清理了几次&#xff0c; 可越到后面&#xff0c; 就只能清理出几 M 的空间。 如果放在两年前&#xff0c; 下面我大概率会&#xff1a; 网上找一个 C 盘清理软件 → 被安装了全家桶软件 → 电脑彻底卡死。 但这次&#xff0c;我的行为习惯…

作者头像 李华
网站建设 2026/4/19 3:30:22

python-uniapp微信小程序的疫苗接种综合服务预约系统的设计与实现_8nt0wdue

文章目录系统截图项目技术简介可行性分析主要运用技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统截图 python-uniapp_8nt0wdue 微信小程序的疫苗接种综合服务预约系统的设计与实现 项目技术简介 …

作者头像 李华