13.4 第一代:关键词搜索(稀疏检索)
最早的做法:把用户的问题当成搜索关键词,在文档库里找包含这些词的文档。
比如用户问”头疼吃什么药”,系统搜索包含”头疼""什么""药”这些词的文档,找到一堆相关文章,塞给 AI。AI 读完后回答。
13.4.1 稀疏检索的原理
这种方法叫关键词检索,在信息检索领域有更专业的名字——稀疏检索。“稀疏”的意思是:绝大多数词的权重是 0,只有少数匹配到的词有权重。这跟后面要讲的”稠密检索”(每个维度都有值)形成对比。
最早用的是一种叫 BM25 的算法——它像一个给词打分的裁判:一个词在文档里出现的次数越多分越高(词频),但如果这个词在很多文档里都出现(比如”的""是”这类常见词),它的权重会被大幅拉低(逆文档频率)。BM25 早在 1994 年就被提出,至今仍是搜索引擎的默认排序算法。
BM25 的核心公式虽然不展开,但它的三个关键参数值得了解:
- k1:控制词频饱和度。一个词出现 2 次比 1 次重要,但出现 100 次不会比 50 次重要 2 倍——词频的影响是”饱和”的。
- b:控制文档长度归一化。长文档天然包含更多词,不能因为它长就给更高分。b 越大,对长文档的惩罚越大。
- avgdl:平均文档长度。用于归一化,自适应不同长度的文档集合。
13.4.2 倒排索引 — 稀疏检索的引擎
稀疏检索能在大规模文档库中快速搜索,靠的是倒排索引(Inverted Index)。它的原理就像书的索引页:
- 正向索引:文档 1 包含词 [A, B, C],文档 2 包含词 [B, D, E]…
- 倒排索引:词 A 出现在文档 [1, 5, 9],词 B 出现在文档 [1, 2, 7]…
搜索时,只需要查”倒排表”就能立刻找到所有包含该词的文档,不需要遍历整个文档库。这就是为什么 Google 能在 0.3 秒内搜索整个互联网——不是因为它把每个网页都读了一遍,而是因为它查了倒排索引。
13.4.3 稀疏检索的优缺点
优点:精确匹配能力强。搜”iPhone 15 Pro Max 256GB 蓝色”——BM25 能精确找到包含所有这些词的文档。搜人名、地名、产品型号、法律条款编号——这是稀疏检索的主场。而且计算效率高,不需要 GPU,不需要 Embedding 模型,几十年前的服务器就能跑。
缺点:不懂语义。“头疼”和”头痛”是同一个意思,但关键词匹配会觉得这两个词不一样。“苹果手机”和”iPhone”指的是同一个东西,但关键词完全匹配不上。BM25 看不到”今天天气真不错”和”今日气候宜人”是同一个意思 1。
2026 年的定位:稀疏检索不再单独使用,但它的精确匹配能力在混合检索中不可替代——它弥补了稠密检索在专有名词、数字、代码等精确匹配场景的短板。
← 上一节:13.3 分块策略 —— RAG 的地基 | 下一节:13.5 第二代:语义搜索(稠密检索) →
注释
-
传统信息检索,BM25 算法 ↩