倒排索引(Inverted Index)

发布时间:2026/10/25 1:37:53

倒排索引(Inverted Index) 倒排索引Inverted Index倒排索引Inverted Index一、先从正排索引说起二、什么是倒排索引三、两者对比四、倒排索引的组成1. 词项字典Term Dictionary2. 倒排列表Posting List五、构建过程第一步文档分词第二步建立词到文档的映射第三步记录附加信息增强版六、查询过程七、与 BM25 的关系八、在向量数据库中的应用九、优缺点优点缺点十、典型应用场景总结倒排索引Inverted Index一、先从正排索引说起要理解倒排索引先看正排索引是什么。正排索引Forward Index是我们最自然的思考方式从文档出发找出文档里包含哪些词。文档ID → 内容 → 提取所有词举个例子假设有三篇文章文档ID内容Doc1“苹果手机很好用”Doc2“我喜欢吃苹果”Doc3“手机拍照功能强大”正排索引就是按文档整理出词汇表文档ID包含的词汇Doc1苹果、手机、很好用Doc2我、喜欢、吃、苹果Doc3手机、拍照、功能、强大这种结构存数据没问题但搜索的时候很慢。比如用户搜“苹果”需要遍历所有文档逐个检查是否包含这个词。文档少还好如果有几百万篇文章每次都全表扫描效率极低。二、什么是倒排索引倒排索引Inverted Index的思路正好反过来从词出发记录这个词出现在哪些文档里。把上面的数据倒过来词汇出现位置苹果Doc1, Doc2手机Doc1, Doc3很好用Doc1我Doc2喜欢Doc2吃Doc2拍照Doc3功能Doc3强大Doc3这就是倒排索引。用户搜“苹果”直接从倒排索引里找到这个词对应的文档列表瞬间返回结果。三、两者对比对比项正排索引倒排索引数据结构文档 → 词汇词汇 → 文档列表查询过程遍历所有文档直接查词表查询速度慢O(n)快O(1)存储结构简单稍复杂更新成本低较高典型应用数据库行存储搜索引擎、全文检索打个比方正排索引 一本书前面的目录按章节找内容倒排索引 一本书后面的关键词索引按词找位置四、倒排索引的组成倒排索引由两部分组成1. 词项字典Term Dictionary按字母顺序排列的所有词每个词指向它的倒排列表。苹果 → [Doc1, Doc2] 手机 → [Doc1, Doc3] 拍照 → [Doc3] ...2. 倒排列表Posting List每个词对应的文档列表通常会存储存储内容作用文档ID标识文档词频TF计算相关性位置信息支持短语搜索偏移量支持高亮存储的越详细查询功能越丰富但存储空间也越大。五、构建过程第一步文档分词原始文档Doc1: “苹果手机好用”Doc2: “我喜欢吃苹果”分词后Doc1: [“苹果”, “手机”, “好用”]Doc2: [“我”, “喜欢”, “吃”, “苹果”]第二步建立词到文档的映射词文档列表苹果[Doc1, Doc2]手机[Doc1]好用[Doc1]我[Doc2]喜欢[Doc2]吃[Doc2]第三步记录附加信息增强版词(文档, 词频, 位置)苹果(Doc1, 1, 0), (Doc2, 1, 3)手机(Doc1, 1, 1)好用(Doc1, 1, 2)我(Doc2, 1, 0)喜欢(Doc2, 1, 1)吃(Doc2, 1, 2)有了位置信息就能支持“苹果手机”这种短语搜索因为可以判断“苹果”和“手机”在Doc1中相邻出现。六、查询过程用户搜索“苹果手机”分词[“苹果”, “手机”]查倒排索引苹果 → [Doc1, Doc2]手机 → [Doc1, Doc3]求交集AND两个词都出现的文档 → [Doc1]返回结果Doc1如果是 OR 查询则合并列表 → [Doc1, Doc2, Doc3]七、与 BM25 的关系BM25 是计算搜索结果相关性的算法它的核心就是基于倒排索引。score(D, Q) Σ IDF(q) × (TF × (k₁1)) / (TF k₁ × (1 - b b × |D|/avgDL))用到的数据都来自倒排索引TF词频倒排列表里存着IDF逆文档频率根据词在多少个文档中出现计算所以倒排索引是搜索引擎的基础BM25 是排名的算法。八、在向量数据库中的应用像 Milvus 支持稀疏向量底层用的就是倒排索引的思路# 稀疏向量本质上就是 {词: 权重} 的倒排格式sparse_vector{苹果:0.8,手机:0.6}# 查询时也是用倒排索引快速定位collection.search(data[{苹果:0.7,手机:0.5}])稠密向量BERT、BGE做语义搜索倒排索引BM25、SPLADE做关键词匹配两者经常结合使用。九、优缺点优点查询速度快O(1) 级别支持布尔查询AND/OR/NOT可扩展性强适合海量数据缺点构建需要时间更新成本高存储空间比原文本大需要存索引无法处理同义词、语义匹配这一点靠稠密向量补救十、典型应用场景场景说明搜索引擎Google、百度最核心的数据结构数据库全文检索MySQL FULLTEXT、Elasticsearch推荐系统用户标签反向索引向量数据库稀疏向量检索总结倒排索引的核心思想就一句话不查文档找词而是查词找文档。这种反向的思路让全文搜索从全表扫描变成了查字典速度提升了成百上千倍。无论是 Google 搜索、数据库索引还是向量检索背后都离不开倒排索引。
延伸阅读

更多相关文章

2026/10/25 1:37:53

C#系统学习路线:从基础语法到面向对象和异步编程实战

简介:《C#玩家指南》第三版是一份面向C#零基础读者的系统性入门教程,以Visual Studio 2017为实践环境,从安装配置、编写第一个Hello World程序起步,渐进讲解变量、类型系统、数学运算、决策与循环、数组、枚举、方法等基础语法&am…

2026/10/25 1:32:53

V821 NTP 对时

文章目录1、环境介绍2、用户 menuconfig 配置3、联网4、NTP 同步5、参考文章6、总结1、环境介绍 芯片:V821 D2-WBX 系统:openwrt 2、用户 menuconfig 配置 添加 ntpdate 工具: CONFIG_PACKAGE_ntpdatey3、联网 时间同步前,板…

2026/10/25 1:32:53

1.Ollama下载安装,指定安装位置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/25 2:32:58

Hadoop核心架构解析:HDFS、YARN与MapReduce协同原理

1. Hadoop核心架构解析:三驾马车如何协同工作?在大数据领域摸爬滚打多年,我见过太多初学者面对Hadoop时一脸茫然的样子。这个2006年诞生的分布式系统框架,如今已成为企业级数据处理的标配工具。但很多人对它的理解停留在"Had…

2026/10/25 2:32:58

北京知名的商业地产销售代理公司有哪些

商业地产操盘常踩坑?找对服务商是关键找商业地产销售代理机构时,多数甲方都会遇到这几个普遍踩坑点: 前期定位拍脑袋,对区域客群、消费力、竞品动态没系统认知,导致后期招商难、销售去化慢策划和销售两张皮,前期方案好…

2026/10/25 2:32:58

碳素窑炉配套耐火材料生产厂家甄选与用户口碑参考

碳素窑炉耐材难选?先看清这4个常见踩坑难题 碳素窑炉长期处于高温、强冲刷、冷热交替频繁的工况环境中,耐火材料的品质直接决定了窑炉的服役周期和生产连续性。但在实际采购过程中,不少碳素企业的设备负责人都遇到过类似的烦恼: 耐材寿命短…

2026/10/25 2:32:58

卫星高度计与浮标数据对比验证技术解析

1. 项目概述:为什么需要对比验证高度计与浮标数据?在海洋观测领域,卫星高度计和浮标数据是两种最常用的海面高度测量手段。我处理这类数据对比工作已有七年,发现两者数据差异常达到5-15厘米。去年处理南海一组数据时,甚…

2026/10/25 2:27:58

VDA 6.3-2023第四版红皮书:过程审核新标准与现场落地指南

简介:VDA 6.3-2023红皮中文版(扫描)过程审核第四版是德国汽车工业协会(VDA)发布的过程审核标准文件,面向汽车制造商、供应商及质量管理体系审核人员,适用于产品诞生过程与批量生产阶段的内部审核…

2026/10/25 0:02:22

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/25 0:02:23

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/25 0:02:23

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/25 0:02:22

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/25 0:02:23

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/25 0:02:23

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑