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工具(算距离),在这里代表非深度学习的向量检索。

### BM25TF-IDF在信息检索算法中的差异 #### 1. 基本概念 BM25TF-IDF都是用于衡量文档中词语重要性的方法,在信息检索领域广泛应用。然而两者存在显著区别。 对于TF-IDF而言,该模型通过计算词频(Term Frequency, TF)以及逆向文件频率(Inverse Document Frequency, IDF),以此评估某个单词在一个文档集合或语料库的重要性[^1]。具体来说,如果一个词项频繁出现在特定文档内,则其权重较高;反之则较低。同时IDF部分用来惩罚那些过于常见的词汇,因为这些词汇往往缺乏区分度。 相比之下,BM25不仅考虑了上述因素,还引入了一些额外参数来优化查询结果的相关性打分机制。它基于Okapi Best Matching (BM)家族的一系列改进措施发展而来,旨在解决传统TF-IDF存在的某些局限性问题。 #### 2. 参数调整能力 BM25相较于简单的TF-IDF具有更强的灵活性,主要体现在以下几个方面: - **长度归一化**:考虑到不同长度文档对关键词密度的影响,BM25加入了文档平均长度这一因子来进行适当补偿,使得较短文本不会因天然劣势而导致评分偏低的情况发生。 - **饱和函数应用**:为了防止极端高频次词条过度影响最终得分,BM25采用了特殊的饱和曲线处理方式,即当某词出现次数超过一定阈值后,增加幅度逐渐减缓直至趋于平稳状态。这有助于更合理地反映实际意义下的匹配程度。 ```python import math def bm25_score(tf, doc_len, avg_doc_len, idf, k1=1.2, b=0.75): """ 计算单个term的BM25分数 :param tf: term frequency in document :param doc_len: length of current document :param avg_doc_len: average length across all documents :param idf: inverse document frequency value for this term :return: BM25 score as float number """ numerator = tf * (k1 + 1) denominator = tf + k1 * ((1-b)+b*(doc_len/avg_doc_len)) return idf * (numerator / denominator) # 示例调用 bm25_example = bm25_score(5, 800, 400, math.log((100+1)/(5+0.5))) print(f"Example BM25 Score: {bm25_example}") ``` #### 3. 实际效果对比 尽管两种方案都能有效提升搜索引擎性能,但在面对复杂场景时表现有所分化。实验表明,在处理大规模数据集尤其是长篇幅文章的情况下,经过精心调参后的BM25能够提供更为精准可靠的排名顺序,从而改善用户体验并提高查准率和召回率指标。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值