news 2026/6/12 10:59:17

一篇文章讲明白tf-idf,BM25

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一篇文章讲明白tf-idf,BM25

第一章基础概念

1.1TF-IDF 核心概念

TF-IDF 是文本向量化工具,核心目标是「把文本转化为可量化的关键词权重向量」,而非直接计算相似度:

  • TF(词频):一个词在某篇文档中出现的次数,反映该词在文档内的重要性;

  • IDF(逆文档频率):一个词在整个文档库中出现的文档数越少,IDF 越高,反映该词的 “区分度”(比如 “RAG” 比 “的” 区分度高);

  • 核心逻辑:TF × IDF = 词的最终权重 → 每篇文本转化为 “词 - 权重” 的向量(比如「大模型:0.8,RAG:0.9」);

  • 关键特点:仅做 “文本→向量” 的转换,相似度需后续用余弦相似度等工具计算;无词频饱和(高频词权重易失真)、无文档长度归一化(长文档易占优)

1.2BM25核心概念

BM25 是检索场景专用的相似度评分算法,核心目标是「直接计算查询与文档的相关性分数」,专为 RAG 等检索场景设计:

  • 核心逻辑:对查询中的每个关键词,计算其在文档中的 “贡献分”(融合 TF、IDF,新增「词频饱和度」「文档长度归一化」)→ 所有关键词贡献分求和 = 最终相似度评分;

  • 关键优化(对比 TF-IDF)

    1. 词频饱和:高频词的权重增长会放缓(比如 “RAG” 出现 10 次≠权重涨 10 倍),避免刷屏;

    2. 长度归一化:显式修正文档长度影响(长 / 短文档公平对比);

  • 关键特点:无需向量转换,直接输出相似度分数;是 RAG 中文本召回的首选,效果远优于 TF-IDF。

第二章tf-idf计算

2.1计算方法

TF-IDF 的计算流程核心是「先分词预处理,再逐词算 TF/IDF,最后合成向量」,全程围绕 “把文本转化为关键词权重向量” 展开

总流程(5 步):预处理 → 算 TF → 算 IDF → 算 TF-IDF 权重 → 生成文本向量

2.2计算实例

第三章bm25计算

3.1计算方法

通过上述计算公式,可以得到每个词的在每个文档中的相似度,把query中每个词的相似度加起来就是query和每个文档的相似度

第四章总结

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

利用Miniconda管理多个PyTorch项目环境,避免依赖冲突

利用 Miniconda 管理多个 PyTorch 项目环境,避免依赖冲突 在深度学习项目开发中,一个看似不起眼却频繁“暴雷”的问题是什么?不是模型调参失败,也不是 GPU 显存不足,而是——“为什么你的代码能跑,我的就不…

作者头像 李华
网站建设 2026/6/6 9:49:13

一文搞懂大模型微调

前言 你是不是也有过这样的困惑:明明调用GPT、Llama这些大模型的API能解决通用问题,但一到自己的业务场景——比如让模型识别行业专属术语、生成符合公司风格的文案、处理特定格式的数据分析——效果就大打折扣?要么回答偏离需求,…

作者头像 李华
网站建设 2026/6/2 12:39:57

从Anaconda下载到PyTorch GPU运行:一站式操作手册

从Anaconda下载到PyTorch GPU运行:一站式操作手册 在深度学习项目中,最让人头疼的往往不是模型设计或调参,而是环境配置——明明代码没问题,却因为 torch.cuda.is_available() 返回 False 而卡住;或者换了台机器&…

作者头像 李华
网站建设 2026/6/9 18:47:40

清华镜像源配置教程:大幅提升Miniconda和pip安装速度

清华镜像源配置:加速 Miniconda 与 pip 安装的实战指南 在人工智能项目开发中,你是否经历过这样的场景?——深夜赶实验,运行 conda install pytorch 后盯着终端进度条一动不动,半小时过去只下载了 30%,最终…

作者头像 李华
网站建设 2026/6/10 17:22:48

从Anaconda到Miniconda:为何轻量级Python环境更适合AI研发

从Anaconda到Miniconda:为何轻量级Python环境更适合AI研发 在人工智能项目日益复杂的今天,你是否遇到过这样的场景?一个同事说“我的代码跑得好好的”,而你在本地却因为依赖版本不兼容、CUDA 驱动错配或某个包缺失而卡住数小时。更…

作者头像 李华
网站建设 2026/6/7 23:30:41

GitHub项目如何复现?Miniconda-Python3.10帮你锁定依赖版本

GitHub项目如何复现?Miniconda-Python3.10帮你锁定依赖版本 在人工智能和数据科学领域,你有没有遇到过这样的场景:从GitHub上克隆了一个热门开源项目,照着README一步步执行安装命令,结果却卡在某个包的版本冲突上&…

作者头像 李华