关键词搜索
2026/7/23大约 4 分钟
传统关键词搜索,在计算机视觉或大模型(RAG)的技术语境下,通常指的是基于字面精确匹配(Lexical Match / Textual Match)的文本检索技术。
它的核心物理逻辑是:不猜测用户问题的“底层意图”,而是像一把严丝合缝的尺子,直接去数据库里数一数用户输入的每一个字符(如“Triton”、“Chunk”)在文档中出现的频率、位置和稀缺度。
在工业界(如 Elasticsearch、Opensearch 等现代搜索引擎和知识库后端),传统关键词搜索的演进和工作原理可以被硬核拆解为以下三个核心步骤:
一、 核心底座:倒排索引(Inverted Index)
传统关键词搜索之所以能实现毫秒级的海量文档检索,靠的是倒排索引这一底层数据结构。
- 正向索引(书的目录):找第 3 章,看里面讲了什么。
- 倒排索引(书后的术语索引表):将所有文档彻底打碎(分词),记录每一个词(Term)分别出现在了哪几篇文档的哪个位置。
【 原始文档库 】 【 倒排索引表 】
┌───────────────────────┐ ┌───────────────────────────────┐
│ 文档 1: "Triton 算子" │ │ "Triton" ───> [文档 1, 文档 2] │
│ 文档 2: "vLLM 算子" │ ───[分词]───>│ "算子" ───> [文档 1, 文档 2] │
│ 文档 3: "RAG 知识库" │ │ "vLLM" ───> [文档 2] │
└───────────────────────┘ │ "知识库" ───> [文档 3] │
└───────────────────────────────┘
当用户输入“Triton 算子”时,搜索引擎不需要去全文遍历几百万篇文档,而是直接去倒排索引表里查 "Triton" 和 "算子" 这两个词,瞬间锁定目标文档。
二、 统治工业界的数学算子:BM25 算法
捞出包含关键词的文档后,搜索引擎怎么给它们排先后顺序?现在业界的事实标准是 BM25(Best Matching 25)算法。
BM25 评分的底层逻辑是 TF-IDF 模型 的升级版,它主要由三个物理维度联合计算得分:
- 词频(TF - Term Frequency):
某个关键词在当前这篇文档里出现的次数越多,说明这篇文档和关键词越相关,得分越高。
- BM25 优化:引入了词频饱和度(如下图。当一个词在文章里出现 5 次和 10 次,相关性有明显提升;但出现 500 次和 1000 次,相关性几乎没区别了。BM25 设定了一个天花板,防止被恶意堆砌关键词)。
- 逆文档频率(IDF - Inverse Document Frequency):
用来评估一个词的稀缺度和重要性。如果一个词在全网所有文档里都高频出现(比如“的”、“在”、“是什么”),那它的 IDF 分数就很低;相反,如果一个词极度罕见(比如“vLLM”、“RoPE”),只要某篇文档包含它,分值就会瞬间飙升。 - 文档长度惩罚(Document Length):
如果一整本书(50万字)里只提了一句“Triton”,和一篇只有 200 字、通篇都在讲“Triton”的技术博客相比,短博客的得分会显著提权,因为它的内容更加聚焦。
三、 传统关键词搜索的物理优缺点(为什么大模型时代还需要它)
在大模型 RAG 系统做 混合检索(Hybrid Search) 时,传统关键词搜索依然不可或缺,因为它具有现代向量搜索无法替代的独特物理属性:
✅ 核心优势
- 专有名词绝对精准:当用户检索特定的“型号(如
iPhone 17 Pro)”、“产品 ID”、“工号”、“电话号码”或“特定的代码报错信息”时,关键词搜索能够 100% 精确命中。而向量搜索很容易在连续高维空间中把它泛化、漂移到相似的产品上。 - 毫秒级的高并发与低成本:它完全是磁盘和内存的倒排索引表查表与基础算术运算,不需要任何高昂的显卡(GPU)进行在线矩阵暴算,也不需要消耗 Token 费用。
❌ 致命死穴
- 无法理解同义词与人话:如果用户搜“单车维修”,而文档里写的是“自行车修理”,传统关键词搜索由于字面无法严丝合缝对齐,会直接返回“未找到结果”。
- 容易被多义词误导:比如用户搜“苹果”,其意图是想买智能手机,但系统可能会捞出一堆关于“水果种植技术”的文档。
极简总结: 传统关键词搜索就是依靠倒排索引进行精确字面卡槽匹配的查表技术。在大模型时代,它被作为 RAG 混合检索的第一道硬核钢筋防线,专门用来锁死那些绝对不能错的型号、数据和术语,再通过 RRF(倒数排名融合) 算法与现代向量语义搜索进行长短互补。
