什么是语义搜索?通俗讲解嵌入、关键词与混合搜索

按含义搜索,而不仅仅是匹配词语——这是 RAG 与 AI 搜索背后的核心概念。

Aquila 团队 更新于 2026年6月19日

语义搜索按含义而非精确词语匹配来查找结果。关键词搜索对”如何重置我的密码”只会找到包含这些字面词语的文档,而语义搜索还会找出一篇标题为”恢复账户访问权限”的页面——因为它理解这两个短语的含义几乎相同。它的做法是把文本转换成称为嵌入的数值向量,并找出在”含义空间”中最接近的那些向量。这正是现代 AI 搜索和 RAG 的基础。

关键词搜索与语义搜索

关键词搜索(经典方法,例如 Elasticsearch 中的 BM25)根据查询词出现的频率和显著程度对文档排序。它快速、透明,在精确匹配上无可匹敌——错误代码、产品 SKU、人名、精确引文。它的弱点在于:它很死板。它会漏掉同义词、改写和意图。搜索”car”时,它找不到”automobile”。

语义搜索理解”car”和”automobile”含义相近,理解”法国的首都”与”巴黎”相关,也理解一个问题可以匹配一个措辞完全不同的答案。它的弱点是:它可能过于模糊,会漏掉精确字符串(它可能不会优先匹配你输入的那个确切 SKU),而且计算成本更高。

关键词(BM25)语义(向量)
匹配依据字面词语含义 / 意图
处理同义词
精确字符串(SKU、代码)极佳可能漏掉
速度 / 成本非常快、便宜较重(需要嵌入)
可解释性高(你能看到匹配的词)较低(都是向量)

什么是嵌入?

嵌入是一串数字——一个向量——用来表示一段文本的含义。嵌入模型读取文本,并输出比如 768 个数字(每个维度都捕捉含义中的某个潜在层面)。关键特性是:含义相近的文本会产生彼此靠近的向量,处于这个高维空间中;而不相关的文本则相距很远。

因此”那只猫坐在垫子上”和”一只猫科动物在地毯上休息”会落在彼此附近,而”季度营收预测”则落得很远。语义搜索的工作方式是:先把你的查询嵌入,然后找出与之最接近的已存储文档向量——使用余弦相似度这样的距离度量。这些最近邻就是你的搜索结果。

流行的开源嵌入模型包括 nomic-embed-textmxbai-embed-large(两者都可通过 Ollama 在本地运行);常见的云端选项是 OpenAI 的 text-embedding-3-small。有一条规则最为重要:用同一个模型嵌入你的文档和你的查询,否则向量将无法相互比较。

什么是混合搜索?

混合搜索同时运行关键词搜索和语义搜索,并融合两者的得分。你能兼得两者之长:关键词匹配对精确词语的精准度,以及语义匹配对同义词和意图的召回率。在实践中,大多数优秀的生产级搜索系统都采用这种方式,因为纯语义搜索往往会漏掉用户同样期望能命中的精确匹配场景。许多向量数据库——其中包括 Qdrant 和 Weaviate——原生支持混合搜索。

向量数据库在其中扮演什么角色?

要大规模进行语义搜索,你需要某个地方来存储数百万个嵌入并快速检索它们。这就是向量数据库(或向量索引)。它构建一种结构——通常是 HNSW 图——能在毫秒级内找到近似最近邻,而不必把你的查询与每一个向量逐一比较。可选方案从 pgvector(一个 PostgreSQL 扩展)到 Qdrant、Chroma 和 Weaviate 这样的专用引擎不等。我们在自托管 RAG 指南中会讲到如何选择其中之一。

何时使用哪种方法

  • 使用关键词搜索,当精确匹配占主导时:代码搜索、法律引用、带精确 ID 的产品目录,或任何用户输入他们期望按字面匹配的字符串的场景。
  • 使用语义搜索,当意图和措辞各异时:FAQ / 帮助中心、文档问答、“按我的意思搜索”,以及任何为 RAG 流程中的 LLM 提供输入的场景。
  • 使用混合搜索,当你两者都想要时——老实说,这正是大多数真实世界的搜索。如果可以,就从混合搜索开始;它是最稳妥的默认选择。

这如何连接到 AI 搜索与 RAG

语义搜索是检索增强生成的检索那一半。在 RAG 中,你对知识库进行语义搜索,找出与问题最相关的文本块,然后把这些文本块交给 LLM,让它写出一个有依据、有引用的答案。同样的机制驱动着像 Vane 和 Khoj 这样的开源 AI 回答引擎。理解了语义搜索和嵌入,现代 AI 搜索技术栈的其余部分就不再神秘了。

常见问题

语义搜索和神经搜索是一回事吗? 在常见用法中基本上是的。“神经搜索”强调嵌入来自神经网络;“语义搜索”强调目标(按含义搜索)。人们交替使用这两个术语。

语义搜索会取代关键词搜索吗? 不会——它是补充。关键词搜索在精确匹配上仍然胜出。混合搜索结合了两者,通常是最强的选择。

我需要 GPU 才能做语义搜索吗? 对于在中等规模语料上生成嵌入并运行向量搜索,CPU 就足够了。GPU 主要用于加速对超大数据集的嵌入,或运行大型本地模型。

嵌入和向量数据库有什么区别? 嵌入是一段文本的数值表示。向量数据库存储许多嵌入并高效检索它们。嵌入是数据;数据库是它存放和被查询的地方。


这是基础;真正有趣的是在它之上构建。阅读自托管 RAG 完整指南,把语义搜索变成一个私有的 AI 知识库,或浏览全部指南。Aquila 是归你所有的 AI 搜索的独立家园。掌控你自己的搜索。

继续学习

更多关于自托管 AI 搜索、RAG 和向量数据库的指南。