Skip to main content

RAG prepare

MarshioAbout 3 minllmvlm

检索算法

检索,retrieval,是 RAG 中最重要的第一步。完整的检索流程包含两个阶段:表征(将文本转化为数学表示) 与 匹配(在数据库中寻找最相似的结果)。

稀疏检索(Sparse Retrieval)

稀疏检索主要基于关键词匹配。它非常擅长处理精确匹配(如人名、产品型号、特定术语),但难以理解同义词。

传统稀疏检索

  • TF-IDF: 经典的加权方法,根据词频(TF)和逆文档频率(IDF)计算权重。
  • BM25(Best Matching 25)

神经稀疏检索

这类模型利用深度学习(如 BERT)来学习词的权重,甚至能进行查询扩展(Query Expansion),即在向量中激活文档里没出现但相关的词。

  • SPLADE (V1/V2): 目前 SOTA(最先进)的稀疏检索模型。它通过 BERT 预测词表中的词项重要性,能自动实现“语义扩展”(例如搜“汽车”时,向量中“车辆”的维度也会被激活)。
  • DeepCT: 利用 BERT 学习每个词在特定上下文中的权重,替换传统的 TF 词频。
  • Doc2Query: 在索引阶段利用 T5 等生成模型为文档生成可能的问题,并拼接到文档中,从而增加关键词覆盖率。

稠密检索(Dense Retrieval)

稠密检索通过双编码器(Bi-Encoders)将文本映射到低维稠密向量(通常 768 或 1024 维),通过计算向量间的余弦相似度或内积来检索。它擅长处理语义相关性。

语义表征模型 (Embedding Models)

  • 双编码器 (Bi-Encoders): 如 DPR、BGE、E5、OpenAI text-embedding。将查询和文档独立编码。
  • 后交互模型 (Late Interaction): 如 ColBERT。保留 Token 级别的特征,在检索时进行细粒度交互,效果更好但存储开销大。

k-Nearest Neighbors

  • HNSW (基于图):性能最强,目前向量数据库的主流选择。
  • IVF (基于聚类):通过将向量空间划分为区域来缩小搜索范围。
  • PQ (乘积量化):通过压缩向量数据来降低内存占用。

Approximate Nearest Neighbor

  • HNSW (基于图):性能最强,目前向量数据库的主流选择。
  • IVF (基于聚类):通过将向量空间划分为区域来缩小搜索范围。
  • PQ (乘积量化):通过压缩向量数据来降低内存占用。

混合检索(Hybird Retrieval)

区别

特性Sparse Retrieval (如 BM25, SPLADE)Dense Retrieval (如 BGE, DPR, OpenAI)
匹配原理关键词/项 匹配语义/意图 匹配
优点精确匹配好(人名、货号);冷启动快;无需训练。语义理解强(同义词、意图);跨语言能力强。
缺点词汇鸿沟(搜“电脑”找不到“计算机”)。容易产生“幻觉”匹配;难以匹配生僻的特定词汇。
适用场景法律文件、技术手册、特定实体搜索。问答系统、聊天机器人、通用语义搜索。