问题: 描述一下 RAG 中倒排索引的相关概念

👇 点击展开/折叠 面试背诵模板(建议先背这个) 倒排索引是一种将"文档ID→内容"的正向映射,逆向构建为"关键词→出现位置"的逆向映射。它由两个核心部分组成:词典(Term Dictionary,存储所有单词)和倒排列表(Posting List,存储每个单词在哪些文档中出现及出现位置)。在RAG的全文检索中,倒排索引用于快速定位哪些文档片段包含用户查询中的关键词,实现亚秒级检索响应。其经典实现是BM25算法,通过TF-IDF变体计算文档与查询的相关性分数。相比向量检索的语义匹配,倒排索引擅长精确匹配特定术语和专有名词,两者在混合检索中互补使用。
---

一、倒排索引的核心概念

正向索引(Forward Index):文档 → 包含的词语。例如:”文档1包含:大模型、RAG、检索”。

倒排索引(Inverted Index):词语 → 包含该词语的文档列表。例如:”RAG → 文档1、文档2、文档5”。

倒排索引的本质是将”文档→词”映射转换为”词→文档”映射,从而支持快速关键词检索。

二、倒排索引的物理结构

倒排索引由两个核心部分组成:

① 词典(Term Dictionary)

  • 存储所有在文档集合中出现过的词条(Term)
  • 通常按字典序排序,支持二分查找
  • 每个词条指向对应的倒排列表

② 倒排列表(Posting List)

  • 存储每个词条出现过的文档ID列表
  • 包含位置信息(词条在文档中的具体位置偏移量)
  • 附加频率信息(词频TF、文档频率DF)

三、倒排索引在RAG中的应用

在RAG系统的全文检索中,倒排索引的典型工作流程:

  1. 用户输入查询(如”什么是RAG”)
  2. 对查询进行分词处理(”RAG”)
  3. 在词典中快速定位”RAG”词条
  4. 读取对应的倒排列表,获取包含该词的文档片段
  5. 通过BM25等算法计算相关性分数
  6. 返回Top-K个最匹配的文档片段

四、倒排索引的核心算法:BM25

BM25是信息检索中最常用的相关性评分算法,基于词频(TF)和逆文档频率(IDF)改进而来。

核心机制:BM25通过分析查询词在文档中的出现频率(TF)以及该词在整个文档集合中的普遍性(IDF)来综合评分。如果一个词在特定文档中频繁出现,但在全局中相对罕见,则该文档很可能与查询高度相关。

优点:对停用词(如”的”、”是”)不敏感,能有效处理长文档,是倒排索引检索的经典实现。

五、倒排索引 vs 向量索引

在混合检索(Hybrid Search)中,两者协同工作:

对比维度 倒排索引(全文检索) 向量索引(语义检索)
匹配方式 精确关键词匹配 语义相似度匹配
擅长场景 专有名词、术语、ID、缩写 同义词、上下文理解、自然语言
典型案例 “产品型号ABC-123” “最近有什么热门话题”
经典算法 BM25、TF-IDF HNSW、IVF、余弦相似度
索引结构 词 → 文档列表 向量 → 聚类或图结构
检索速度 极快(亚秒级) 较快(取决于向量索引类型)

六、总结

在RAG系统中,倒排索引负责精确匹配,向量索引负责语义理解。混合检索通过结合两者(如并行执行BM25和向量检索后由RRF融合排序),实现了”既懂关键词又懂语义”的检索能力,是生产级RAG系统的标准配置。