--- title: "向量检索 vs 关键词检索:Easysearch 如何同时支持两种搜索能力" date: 2026-02-16 lastmod: 2026-02-16 description: "深入解析向量检索与关键词检索的原理差异,详细说明 Easysearch 如何通过统一架构实现语义搜索与传统搜索的协同能力" tags: ["Easysearch", "向量检索", "混合搜索"] summary: "在现代搜索系统里,单纯的关键词匹配已经无法满足用户对 **语义理解 **和 **个性化搜索体验 **的需求。为了让搜索更智能、更贴近用户意图,越来越多的系统开始引入 向量检索。而市场上成熟的搜索引擎仍然离不开 关键词检索 的稳定基础。那么,什么是向量检索和关键词检索?它们有什么区别?Easysearch 又是如何在一个系统中同时支持这两种搜索方式的?我们从核心原理出发,用通俗的语言来解释这些问题。 一、关键词检索:基于文字匹配的传统搜索 # 什么是关键词检索? # 关键词检索就是我们日常熟悉的那种搜索方式:系统按照用户输入的词去查找包含这些词的文档,并根据一定的排序算法返回结果。例如: 搜索 “搜索引擎 原理” 系统会查找文档中同时包含 “搜索引擎” 和 “原理” 的内容,并根据匹配程度、文档权重等因素排名。 关键词检索的核心在于: 索引结构 — 通常是反向索引(Inverted Index),每个词对应出现它的所有文档列表。 分词与权重 — 文本被拆分成词或词组,计算词频(TF)或结合逆文档频率(IDF)来衡量重要性。 相关性排序 — 利用算法(如 BM25 或类似模型)评估文档与查询的匹配质量。 这样做的优势是: 查询速度快,执行效率高 结果可解释性强 对精确匹配表现优异 但它也有局限: 无法理解用户没有明确表达的语义 对同义词、表达差异不够敏感 结果可能对“词序/词形变化”缺乏弹性 这就是为什么传统搜索在满足精确检索时很有效,但在“理解模糊意图”上存在不足的原因。 二、向量检索:从语义层面理解查询 # 什么是向量检索? # 向量检索(Vector Search)是近几年兴起的搜索方式,它基于一种思想: 把文本映射到一个多维空间,使语义相似的句子在空间上更接近。 传统关键词检索关心的是词是否匹配,而向量检索关注的是“语义相似度”。 向量如何表示文本? # 现代机器学习模型(例如 embedding 模型)可以把一段文字转换为一个数值向量,例如:" --- 在现代搜索系统里,单纯的关键词匹配已经无法满足用户对 **语义理解 **和 **个性化搜索体验 **的需求。为了让搜索更智能、更贴近用户意图,越来越多的系统开始引入 **向量检索**。而市场上成熟的搜索引擎仍然离不开 **关键词检索** 的稳定基础。那么,什么是向量检索和关键词检索?它们有什么区别?Easysearch 又是如何在一个系统中同时支持这两种搜索方式的?我们从核心原理出发,用通俗的语言来解释这些问题。 --- ## 一、关键词检索:基于文字匹配的传统搜索 ### 什么是关键词检索? 关键词检索就是我们日常熟悉的那种搜索方式:系统按照用户输入的词去查找包含这些词的文档,并根据一定的排序算法返回结果。例如: > 搜索 “搜索引擎 原理” 系统会查找文档中同时包含 “搜索引擎” 和 “原理” 的内容,并根据匹配程度、文档权重等因素排名。 关键词检索的核心在于: - **索引结构** — 通常是反向索引(Inverted Index),每个词对应出现它的所有文档列表。 - **分词与权重** — 文本被拆分成词或词组,计算词频(TF)或结合逆文档频率(IDF)来衡量重要性。 - **相关性排序** — 利用算法(如 BM25 或类似模型)评估文档与查询的匹配质量。 这样做的优势是: - 查询速度快,执行效率高 - 结果可解释性强 - 对精确匹配表现优异 但它也有局限: - 无法理解用户没有明确表达的语义 - 对同义词、表达差异不够敏感 - 结果可能对“词序/词形变化”缺乏弹性 这就是为什么传统搜索在满足精确检索时很有效,但在“理解模糊意图”上存在不足的原因。 --- ## 二、向量检索:从语义层面理解查询 ### 什么是向量检索? 向量检索(Vector Search)是近几年兴起的搜索方式,它基于一种思想: **把文本映射到一个多维空间,使语义相似的句子在空间上更接近。** 传统关键词检索关心的是词是否匹配,而向量检索关注的是“**语义相似度**”。 #### 向量如何表示文本? 现代机器学习模型(例如 embedding 模型)可以把一段文字转换为一个数值向量,例如: "如何理解搜索意图" → [0.12, -0.03, 0.88, ...] 这个向量代表了这句话的整体语义特征。对两段语义相近的句子,它们对应的向量在空间中距离更近。 在向量检索中,核心就是: - 把所有文档转成向量并建立索引 - 把查询也转成向量 - 通过计算查询向量与文档向量之间的相似度(如余弦相似度)来返回最相关的文档 这种方式比关键词检索更善于捕获“整体意思”,尤其适合: - 语义搜索 - 模糊问法 - 最近邻查找(KNN 查询) --- ## 三、两个世界的差异:关键词 vs 向量 | 特性 | 关键词检索 | 向量检索 | | -------- | -------------------- | -------------------------- | | 基础 | 词与词的匹配 | 向量空间语义距离 | | 优点 | 精确、快速、解释性强 | 理解模糊语义、支持语义搜索 | | 局限 | 不理解同义/上下文 | 对精确匹配不一定最佳 | | 使用场景 | 日常搜索、严格匹配 | 智能问答、个性化搜索 | 关键词检索和向量检索不是二选一,而是**互补的搜索能力**。在实际系统中,它们可以一起工作,让搜索既能保持可靠性、解释性,又能有更强的语义理解能力。 --- ## 四、Easysearch 如何同时支持两种检索能力 作为一款分布式搜索型数据库,Easysearch 与传统全文搜索引擎一样,天生支持结构化/全文检索,同时也内置了对向量检索的支持。其核心设计理念是: > **在统一的索引和查询机制下,让关键词检索与向量检索各自发挥优势,并在需要时组合使用。** 下面我们从工程层面逐步解释它是如何做到的。 --- ### 1. 单一索引,多种检索模式 Easysearch 的索引不仅是传统的反向索引,它也支持向量字段类型。你可以在创建索引时定义某些字段为向量类型,然后在这些字段上执行向量搜索。 例如: ```json PUT /my-index { "mappings": { "properties": { "content_vector": { "type": "knn_dense_float_vector", "knn": { "dims": 50, "model": "lsh", "similarity": "cosine" } } } } } ``` 这个定义让一个字段既可以做传统文本字段,又可以作为向量检索字段。 --- ### 2. 向量检索通过 kNN API 实现语义查找 Easysearch 提供了 [kNN(近邻搜索)API](https://docs.infinilabs.com/easysearch/main/docs/references/search/knn_api/),用于执行向量空间中最相似向量的查询。该 API 允许指定: - 向量字段 - 查询向量 - 相似度函数(如余弦距离、L1/L2 距离) 这样,系统就能在搜索时直接基于语义向量进行“最相似项查找”,而不仅仅是关键词匹配。 --- ### 3. 搜索管道(Search Pipeline)实现请求预处理 关键词检索和语义检索的处理过程略有不同: - 关键词检索直接使用词表、反向索引和匹配逻辑 - 向量检索需要先将文本转换成向量表示 为了解决这个差异,Easysearch 使用 **搜索管道机制(Search Pipelines)** 来处理搜索请求。 搜索管道可以按顺序执行一系列处理器: 1. 拦截请求文本 2. 若需要向量检索,则调用模型或外部服务生成查询向量 3. 将向量信息放入查询结构 4. 最终发送给搜索引擎执行 举例来说,使用 `[semantic_query_enricher](https://docs.infinilabs.com/easysearch/main/docs/references/ai-integration/search-text-embedding/)` 处理器可以自动将查询文本转换成向量,无需用户手工构造向量数组。 > [点击链接跳转到文档可以查看详细用法](https://docs.infinilabs.com/easysearch/main/docs/references/ai-integration/search-text-embedding/) --- ### 4. 混合搜索:关键词与语义协同提升相关性 Easysearch 不仅支持纯向量搜索和纯关键词搜索,还支持更高级的混合搜索能力(比如结合关键词匹配信号和语义相似度信号)。这种搜索策略让两者的优势互补: - 关键词信号快速筛选精确匹配 - 向量检索捕获语义近似 组合结果后,可以得到既精确又语义相关的结果,特别适合用户输入不够规范或涉及含义层面查询的场景。 --- ## 五、工程上的协同:为什么不只选一种 简单的关键词检索足够快速可控,但在“模糊意图”下容易漏掉语义相关内容;而纯向量检索虽然擅长语义相似性,却可能在精确性上弱于关键词匹配。 Easysearch 通过 统一的索引结构、可配置的管道和兼容的查询 API 同时支持: - 传统搜索:高效、解释性强 - 向量搜索:语义意识强 - 混合搜索:两者兼顾 这样的设计让搜索系统既能在“查找包含关键字的文档”方面有传统优势,同时在“理解用户意图”上利用现代向量技术。 --- ## 六、总结:统一搜索、协同理解 在搜索领域,“理解用户意图”和“匹配用户输入”从来不是二选一的问题,而是如何在不同场景下灵活使用不同技术的能力。 通过在一个系统内同时支持关键词检索和向量检索,Easysearch 让搜索既保持了传统全文搜索的稳定和效率,又具备了语义理解层面的能力,从而能够更全面、更准确地响应用户的查询意图。