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

相关推荐
小码哥哥5 天前
从TF-IDF到RAG:企业AI知识库检索技术的六次范式跃迁
人工智能·tf-idf
解局易否结局5 天前
鸿蒙端侧 NLP 实战:分词器 + TF-IDF + 朴素贝叶斯分类 + 文本相似度
华为·自然语言处理·分类·harmonyos·tf-idf
五条凪7 天前
简单理解 BM25 与 TF-IDF
人工智能·算法·搜索引擎·全文检索·tf-idf
All The Way North-7 天前
【NLP文本分类实战】随机森林 + TF-IDF 完整流程,准确率82.5%(数据分析/分词/模型训练)
随机森林·机器学习·nlp·tf-idf·文本分类·sklearn·保姆级教程
XGeFei8 天前
TF-IDF(词频-逆文档频率)
算法·tf-idf
小二·14 天前
RAG + 向量数据库实战:ChromaDB / Milvus / FAISS 选型与性能横评
数据库·milvus·faiss
想会飞的蒲公英18 天前
TF-IDF + 随机森林中文文本分类全链路实战:从训练脚本到 Flask API + Streamlit 前端
人工智能·pytorch·python·随机森林·分类·flask·tf-idf
zhiSiBuYu051722 天前
Milvus、Pinecone 与 FAISS 向量数据库选型与实战指南
数据库·milvus·faiss
li星野1 个月前
本地 RAG 问答系统实战:FAISS 检索 + DeepSeek 生成
faiss
NeilYuen1 个月前
gRPC结合FAISS构建AI助手语义缓存模块(一):设计
人工智能·缓存·faiss