16.倒排索引
文章目录
问题: 描述一下 RAG 中倒排索引的相关概念
👇 点击展开/折叠 面试背诵模板(建议先背这个)
一、倒排索引的核心概念
正向索引(Forward Index):文档 → 包含的词语。例如:”文档1包含:大模型、RAG、检索”。
倒排索引(Inverted Index):词语 → 包含该词语的文档列表。例如:”RAG → 文档1、文档2、文档5”。
倒排索引的本质是将”文档→词”映射转换为”词→文档”映射,从而支持快速关键词检索。
二、倒排索引的物理结构
倒排索引由两个核心部分组成:
① 词典(Term Dictionary)
- 存储所有在文档集合中出现过的词条(Term)
- 通常按字典序排序,支持二分查找
- 每个词条指向对应的倒排列表
② 倒排列表(Posting List)
- 存储每个词条出现过的文档ID列表
- 包含位置信息(词条在文档中的具体位置偏移量)
- 附加频率信息(词频TF、文档频率DF)
三、倒排索引在RAG中的应用
在RAG系统的全文检索中,倒排索引的典型工作流程:
- 用户输入查询(如”什么是RAG”)
- 对查询进行分词处理(”RAG”)
- 在词典中快速定位”RAG”词条
- 读取对应的倒排列表,获取包含该词的文档片段
- 通过BM25等算法计算相关性分数
- 返回Top-K个最匹配的文档片段
四、倒排索引的核心算法:BM25
BM25是信息检索中最常用的相关性评分算法,基于词频(TF)和逆文档频率(IDF)改进而来。
核心机制:BM25通过分析查询词在文档中的出现频率(TF)以及该词在整个文档集合中的普遍性(IDF)来综合评分。如果一个词在特定文档中频繁出现,但在全局中相对罕见,则该文档很可能与查询高度相关。
优点:对停用词(如”的”、”是”)不敏感,能有效处理长文档,是倒排索引检索的经典实现。
五、倒排索引 vs 向量索引
在混合检索(Hybrid Search)中,两者协同工作:
| 对比维度 | 倒排索引(全文检索) | 向量索引(语义检索) |
|---|---|---|
| 匹配方式 | 精确关键词匹配 | 语义相似度匹配 |
| 擅长场景 | 专有名词、术语、ID、缩写 | 同义词、上下文理解、自然语言 |
| 典型案例 | “产品型号ABC-123” | “最近有什么热门话题” |
| 经典算法 | BM25、TF-IDF | HNSW、IVF、余弦相似度 |
| 索引结构 | 词 → 文档列表 | 向量 → 聚类或图结构 |
| 检索速度 | 极快(亚秒级) | 较快(取决于向量索引类型) |
六、总结
在RAG系统中,倒排索引负责精确匹配,向量索引负责语义理解。混合检索通过结合两者(如并行执行BM25和向量检索后由RRF融合排序),实现了”既懂关键词又懂语义”的检索能力,是生产级RAG系统的标准配置。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 LGQ的博客!