语义搜索是什么?向量检索与关键词检索全面对比
摘要:语义搜索用向量表达"意思",关键词检索用倒排索引匹配"字面";前者解决同义与意图匹配,后者保障精确与可解释,多数生产环境需要两者混合而非二选一。
用户搜"冬天穿的外套",关键词检索可能只召回标题里带"冬天"和"外套"的商品,把"轻薄羽绒服"漏掉;换成语义检索,能召回语义相近的羽绒服,却可能把"冬天用的暖手宝"也算进来。这不是哪个更好的问题,而是两种检索范式在"字面匹配"与"语义匹配"上的分工。本文拆解两种检索的工作原理、效果边界与成本差异,给出对比表与选型建议,并说明为什么混合检索(hybrid search)正在成为主流做法。
关键要点
- 关键词检索匹配字面与词频,语义检索匹配向量距离,两者的召回逻辑根本不同。
- 语义检索的核心价值是解决词汇鸿沟:用户用词与文档用词不一致时仍能召回。
- 关键词检索在精确匹配、可解释性与低成本上仍有明显优势,尤其适合型号、编码、人名。
- 语义检索依赖嵌入模型,模型选型与更新成本是落地时最容易被低估的一环。
- 混合检索把两路召回结果融合,通常比单一路线的相关性更高,已是多数场景的默认选择。
- 评估时不要只看整体准确率,要按查询类型分段:精确型查询与模糊型查询的结论往往相反。
一、关键词检索:倒排索引与词频统计
关键词检索的做法是把文档切成词,建立"词 → 文档列表"的倒排索引,查询时同样切词,再按词频、逆文档频率、字段长度等因素给候选文档打分。
这套方法的代表算法是 BM25。它的判断依据是:查询词在文档中出现得越多、该词在整个语料中越稀有、文档本身越短,得分就越高。Elasticsearch 等主流检索系统的默认文本匹配即建立在这类统计之上,匹配查询(match query)会先对查询串做分词,再按相关性打分返回。
它强在三处。 一是精确:搜"iPhone 15 Pro 256G"这种带型号与规格的查询,字面匹配能直接锁定目标,语义模型反而可能因为过度泛化把"iPhone 15"也拉进来。二是可解释:得分能拆解为每个词的具体贡献,排查"为什么这条没召回"时可以直接看词是否命中。三是成本低:不需要模型推理,索引体积也远小于向量索引。
它弱在一处,但很致命:词汇鸿沟。 用户说的词和文档里写的词不是同一个时,字面匹配就失效了。搜"保暖外套"召回不了标题只有"羽绒服"的商品,搜"怎么退款"匹配不到写的是"退货流程"的帮助文档。
二、语义检索:把意思编码成向量
语义检索(也称向量检索、稠密检索)先把文本映射成固定维度的稠密向量(embedding),语义相近的文本在向量空间中距离更近;查询时把查询词也编码成向量,再检索距离最近的若干条。
这一路线在工程上成熟的标志,是稠密向量检索在开放域问答任务上超过了传统稀疏检索。Facebook AI 在 2020 年提出的 Dense Passage Retrieval(DPR)用双编码器把问题与段落分别编码为向量,在多个开放域问答数据集上的检索准确率超过了强 BM25 基线。句向量方面,Sentence-BERT 通过孪生网络结构让模型能产出可直接用余弦相似度比较的句子向量,把句向量检索的开销从上万次模型推理降到一次编码加一次相似度计算,是语义检索得以大规模落地的关键一步。
它的核心价值是跨越词汇鸿沟。 "保暖外套"与"羽绒服"在向量空间里距离很近,因此能被召回;跨语言场景下,同一意思的不同语言表述也能被映射到相近位置。
代价有三。 一是需要模型:要选嵌入模型、要部署推理服务、要考虑模型更新时的全量重刷。二是算力与存储:向量索引的体积通常显著大于倒排索引,且相似度检索需要近似最近邻算法支撑。三是可解释性弱:很难向业务方解释"为什么这条排在前面",排查问题时缺少像词频那样直观的依据。
三、两者对比:一张表看清差异
| 维度 | 关键词检索(稀疏) | 语义检索(稠密) |
|---|---|---|
| 匹配依据 | 字面词项与词频统计 | 向量空间距离 |
| 索引结构 | 倒排索引 | 向量索引(HNSW / IVF 等) |
| 同义词召回 | 依赖人工同义词词表 | 天然支持,无需维护词表 |
| 精确型号 / 编码 | 强,直接命中 | 弱,易被语义相近项干扰 |
| 长句与自然语言提问 | 弱,切词后语义丢失 | 强,整句编码保留意图 |
| 可解释性 | 高,可拆解到词 | 低,难以归因到具体词 |
| 部署成本 | 低,无需模型 | 中高,需嵌入模型与向量库 |
| 冷启动 | 可立即生效 | 需要编码全量语料 |
| 典型失效场景 | 词汇鸿沟、拼写变体 | 精确匹配、稀有实体、数字规格 |
四、语义检索解决不了什么
把语义检索当成万能替代,是落地中最常见的误判。以下四类场景,纯向量召回通常不如关键词检索。
精确标识符。 订单号、SKU、型号、错误码、人名。这些字符串的语义信息极少,向量化后彼此距离很近,容易互相干扰。搜"ERR_2049"应该精确命中该错误码的说明页,而不是"ERR_2048"和"ERR_2050"。
数字与规格约束。 "500 元以下的打印机""256G 以上"。向量模型对数量关系的表达不稳定,这类需求应当交给结构化过滤(filter)而不是语义召回。
严格的业务规则。 某些商品必须置顶、某些内容必须屏蔽、某些品类在特定区域不可售。这些是规则问题,不是相关性问题,混进语义召回只会增加排查难度。
极小语料。 文档数量只有几十到几百条时,关键词检索配合同义词表往往已经足够,引入向量检索的边际收益不抵工程成本。
五、混合检索:为什么多数场景要两者并用
既然各有边界,主流做法是把两路召回合并。混合检索(hybrid search) 指同一查询同时走关键词召回与向量召回,再把两路结果融合成最终排序。
融合方式通常有两类:一是加权求和,把两路的归一化得分按权重相加,权重可按查询类型动态调整;二是倒数排名融合(RRF),按各路结果的排名而非原始得分融合,避免两路得分尺度不一致带来的偏差。
混合的价值在互补:关键词路保底,确保精确查询不失控;向量路兜底,把字面不匹配但语义相关的结果捞回来。实践中,只要语料规模到了一定量级且查询存在多样性,混合检索的相关性通常优于任何单一路线。
落地时还需注意两点。一是查询理解前置:先判断查询类型(精确型号 / 自然语言提问 / 宽泛品类),再决定两路的权重配比,比固定权重效果好。二是评估要分段:整体指标会掩盖真相,应把测试集按查询类型拆开,分别看精确型与模糊型的表现,否则很可能出现"整体涨了、精确查询却崩了"而不自知。
如果你正在规划搜索与推荐的统一底座,可先读搜索推荐协同:一体化增长方案,两者共用同一份向量索引是协同成本最低的切入点。
六、选型建议
- 语料小、查询多为精确词:先用关键词检索 + 同义词表,不要急着上向量。
- 查询以自然语言提问为主(帮助中心、知识库、问答):优先上语义检索,收益最直接。
- 电商、内容平台等混合查询场景:直接做混合检索,两路召回 + 融合排序。
- 已有关键词检索且运行稳定:不要替换,增量加一路向量召回做融合,风险与成本都最小。
- 必须保留人工干预能力:无论用哪条路线,都要保留置顶、屏蔽、同义词等规则层,业务运营离不开它。
常见问题
问:语义搜索会取代关键词搜索吗?
答:不会,短期内也不应该。语义检索擅长跨越词汇鸿沟,关键词检索在精确型号、编码、人名等场景仍明显更强,且可解释、成本低。主流做法是混合检索:两路召回后融合排序,而不是用一条路线替换另一条。
问:什么情况下值得上语义检索?
答:三个信号同时出现时收益最大:查询以自然语言提问为主(如"怎么申请退款")、用户用词与文档用词差异大、且内容量已大到人工维护同义词表不现实。反过来,若查询多为精确型号或编码,语义检索的边际收益有限。
问:向量检索的嵌入模型怎么选?
答:先看语言与领域匹配度,再看向量维度与推理成本的平衡。通用多语言模型适合起步;垂直领域(医疗、法律、工业)术语特殊,通用模型表现会明显下降,需用领域语料微调。选型时应用自己的真实查询集做召回评测,不要只看公开榜单。
问:混合检索的两路结果怎么融合?
答:两种常见做法。加权求和是把两路得分分别归一化后按权重相加,实现简单但要求两路得分尺度可比;倒数排名融合(RRF)按各路结果的排名位置融合,不依赖得分尺度,工程上更稳健,是多数系统的默认选择。
问:上了语义检索后,同义词词表还需要维护吗?
答:需要,但职责变了。语义模型能覆盖大部分同义表达,但业务强相关的等价词(品牌别名、内部简称、促销叫法)模型学不到,仍需人工维护。词表从"召回的主力"变成"精确纠偏的补充",维护量通常会下降。
问:怎么判断语义检索有没有真的提升效果?
答:按查询类型分段评估。建一个标注测试集,把查询分为精确型(型号、编码)与模糊型(自然语言提问、宽泛品类),分别看召回率与首位命中率。只看整体指标会被平均掉——常见的失败是模糊型涨了、精确型掉了,整体看起来持平甚至上涨。
关于通智云
通智搜索面向本文描述的检索场景,提供关键词召回、语义向量召回与混合融合排序能力,支持按查询类型动态调配两路权重并保留人工干预规则层。通智云(TENGENCE)是 AI 时代的企业增长引擎,专注公域引流获客与私域转化成交;核心产品为通智 GEO(GEO + SEO 双引擎)与通智搜索。
相关阅读
- 什么是站内搜索?原理、核心指标与优化框架
- 推荐系统与搜索的协同:一体化增长方案
- 电商站内搜索优化方案:5 步提升搜索转化率
- 千人千面推荐算法原理:从协同过滤到深度学习
- 搜索推荐一体化:为什么 1+1>2?
数据来源
- arXiv《Dense Passage Retrieval for Open-Domain Question Answering》(Karpukhin 等,2020):提出双编码器稠密检索(DPR),在多个开放域问答数据集上的 top-20 检索准确率超过强 BM25 基线。
- arXiv《Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks》(Reimers & Gurevych,2019):用孪生网络产出可直接用余弦相似度比较的句向量,把句向量检索开销从上万次推理降为一次编码加相似度计算。
- Elasticsearch《What is vector search?》:向量检索把非结构化数据映射为稠密向量并按相似度召回,用于语义匹配与相似内容检索。
- Elasticsearch 官方指南《Match query》:匹配查询先对查询串分词再按相关性打分的机制,是关键词检索(稀疏检索)的典型实现。
立即行动
免费试用通智云 | 免费预约专家咨询和诊断 | 了解通智搜索