跳到主内容
快讯直播
AI智模界
AI 词典

倒排索引:搜索框为什么能秒出结果

倒排索引(Inverted Index)是一张「词 → 文档列表」的账本:给定一个词,立刻知道哪些文档里有它、出现了几次。

先看它的反面。正排索引(Forward Index)是「文档 → 词」的映射:像一本书按章节顺序排版,你知道第 3 章讲了什么,但想知道某个词在全书写在哪几页,只能从第一页翻到最后一页。倒排索引就是书末的术语索引——按词排好,后面跟着页码。查「苹果」,直接翻到第 12、45、87 页,不必通读全书。

搜索引擎正是这么干的:把文档切成分词(token),建一张词典,每个词挂一条倒排列表(posting list),记录文档编号、词频、位置等信息。查询时把每个查询词的列表取出来做交集或并集,命中的文档立刻浮出水面。BM25 这类关键词打分算法就架在这层结构上:一个词在本篇出现得多、在全库出现得少,区分度就高,权重自然大。

正排索引倒排索引
映射方向文档 → 词词 → 文档
回答的问题这篇讲了什么哪些文档提到这个词
查询代价通常要扫全文直接定位文档列表
典型场景存储、按 ID 取原文关键词检索、BM25、条件过滤

需要分清的是:倒排索引不等于语义检索。向量检索(vector search)比的是向量相似度,能处理「同义不同词」——搜「手机」也能召回「iPhone」;倒排索引只认字面匹配,但胜在快、可解释、能做精确过滤。所以现在常见的混合检索(hybrid search)往往是两路召回,再合并排序。

对做 AI 的人:Lucene、Elasticsearch 以及 RAG(Retrieval-Augmented Generation,AI 词典:检索增强生成">检索增强生成)里的关键词召回,底层都是这个结构。工程上要操心分词器(中文尤其关键)、停用词、词典能否放进内存、倒排列表的压缩,以及增量写入时的段合并(segment merge)。具体实现细节以各项目官方文档为准。

对普通人:搜索框「秒出结果」,不是因为电脑读完了所有文章,而是它早就把这本账记好了。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。