当你在电商网站搜索“便宜好用的电脑”,但商品标题里写的却是“高性价比笔记本”,你希望搜索引擎能足够“聪明”,为你返回正确的结果。然而,传统的搜索引擎很可能会因为找不到“便宜”或“电脑”这两个字,而无情地告诉你“未找到相关商品”。
这就是搜索领域长期存在的“语义鸿沟”——用户表达的“意思”和数据库里存储的“字面”无法匹配。
为了跨越这道鸿沟,搜索技术经历了一场深刻的进化。Easysearch 作为现代搜索引擎的代表,同时掌握了两种强大的能力:传统的全文搜索和新兴的向量检索。前者像一个严谨的“文字警察”,后者则更像一位善于推理的“读心神探”。
1. “文字警察”:全文搜索的精准与无奈 #
传统的全文搜索,其核心武器是我们在之前文章中介绍过的倒排索引。它的工作原理,就像是为海量文档建立了一张巨大的“关键词-文档”映射表。
- 工作模式:关键词精确匹配。你输入“笔记本”,它就去倒排索引里找到所有包含“笔记本”这个词的文档。
优点:
- 快如闪电:对于明确的关键词,倒排索引能实现毫秒级的响应。
- 绝对精准:搜索“iPhone 15 Pro Max”,绝不会返回三星的手机。这对于SKU、人名、错误码、代码函数等精确查找场景至关重要。
无奈之处:
这位“文字警察”过于依赖字面证据,缺乏变通能力,导致了:
- 同义词困境:无法理解“买”和“购买”是同一个意思。
- 概念盲点:无法理解“国王”和“女王”在概念上是高度相关的。
- 语言障碍:搜索中文“狗”,自然找不到英文文档里的 “dog”。
为了解决这些问题,我们需要一位能理解语言背后深层含义的“神探”。
2. “读心神探”:向量检索的诞生 #
如果我们能将文字的“意思”转换成数学,是不是就能让机器理解语义了?答案是肯定的。这就是向量检索 (Vector Search) 的核心思想。
向量是什么?
想象一下,我们有一张巨大的“宇宙意义地图”。在这个地图上,每一个词、每一句话,甚至每一张图片,都被表示为一个坐标点。这个坐标点,就是向量。
- 核心原则:意思相近的内容,它们在地图上的坐标也相近。
- 生成过程:通过 Embeding 模型,将非结构化的数据(文本、图片)转化为一串固定长度的数字(即向量)。
搜索如何进行?
有了这张“意义地图”,搜索不再是“匹配关键词”,而是变成了一个几何问题:
“在地图上,找到与我查询坐标点距离最近的那些点。”
优点:
- 理解概念:能轻松跨越同义词、近义词的障碍。搜索“如何变得更快乐”,它能找到一篇标题为“提升幸福感的五个技巧”的文章。
- 支持跨模态:不同格式的内容都被转换成了统一的数学坐标,我们可以轻松实现“以图搜图”、“以文搜图”等高级功能。
3. Easysearch 的向量利器:ANN 近似查找 #
注意:需要安装
knn插件
要在海量数据中进行向量检索,如果对每一个点都计算一遍距离(即 KNN, K-Nearest Neighbors),计算量将是天文数字。因此,Easysearch 采用了一种更聪明的策略——ANN (Approximate Nearest Neighbors),即近似最近邻查找。
在 Easysearch 中,我们可以通过 knn_dense_float_vector 字段类型来存储和查询向量,示例 mappings 如下:
"mappings": {
"properties": {
"embedding": {
"type": "knn_dense_float_vector",
"dims": 768, // 向量维度,由你的 Embedding 模型决定
"model": "lsh", // lsh: ANN 搜索;exact: 精确搜索
"similarity": "cosine" // 距离计算方法 (如余弦相似度)
}
}
}
注意:
- 字段名中的
knn描述的是功能目标(找到 K 个最近邻居)。但其底层的实现,是通过lsh(局部敏感哈希) ANN 算法来完成的。 - ANN 的核心思想是“牺牲绝对精度,换取数量级的性能提升”。它不保证找到的 100% 是最接近的点,但在实践中,其准确率(如 99%)已经完全足够,而查询速度却提升了成百上千倍。对于“语义”这种本就有些模糊的概念,这种取舍是完全值得的。
4. 神探组合:混合搜索,1+1 > 2 #
现在,我们同时拥有了“文字警察”和“读心神探”,但他们各自也有短板:
- 全文搜索:过于死板,容易漏掉相关结果。
- 向量检索:有时过于“联想”,可能缺乏关键词的硬性约束。比如搜索“苹果手机换电池”,你最想看到的官方指南可能因为关键词匹配度不高而被排在后面。
真正的王牌,是将两者结合起来——混合搜索 (Hybrid Search)。
Easysearch 允许你在同一次查询中,同时执行全文搜索和向量检索,然后通过智能的结果融合算法 (Reciprocal Rank Fusion, RRF),将两份结果列表合并成一份最终排名。
混合搜索的工作流程:
- 并行执行:用户查询“高性价比笔记本”同时触发:
- 全文搜索:查找包含“笔记本”等关键词的文档。
- 向量检索:将“高性价比笔记本”转换成向量,在“意义地图”上查找最近邻。
- 独立排名:两路搜索各自产生一份排名列表。
- 智能融合 (RRF):RRF 算法会综合考虑一个文档在两个列表中的排名位置,给出一个最终的综合分数,生成一份既包含关键词精确匹配,又包含语义相关扩展的完美结果列表。
# 创建一个 RRF pipeline
PUT /_search/pipeline/rrf-pipeline
{
"rerank_processors": [
{
"hybrid_ranker_processor": {
"combination": {
"technique": "rrf",
"rank_constant": 60
}
}
}
]
}
# 可选地,让上述 pipeline 成为索引默认的 pipeline
PUT /my-index/_settings
{
"index.search.default_pipeline" : "rrf-pipeline"
}
# 进行混合搜索
GET /my-index/_search
{
"query": {
"hybrid": {
"queries": [
{
"match": {
"text": "电脑"
}
},
{
"knn_nearest_neighbors": {
"field": "embedding",
"vec": {"values": [-0.374, -0.119, ...]}, # '高性价比笔记本' 的向量表示
"candidates": 50
}
}
]
}
}
}
5. 总结:何时派上你的“神探组合”? #
- 只用全文搜索:当你的场景是日志查询、代码搜索、站内精确内容查找时,它依然是最高效、最精准的选择。
- 只用向量检索:当你的场景是图片搜索、推荐系统、跨语言问答等纯语义驱动的应用时,它是你的不二之选。
- 使用混合搜索:对于绝大多数现代的、面向用户的搜索框,如电商搜索、知识库问答、社区内容发现,混合搜索都应该是标配。它能确保在用户输入模糊或使用同义词时,依然能召回最相关的结果,同时又不会丢失关键词匹配带来的确定性。
结论:
Easysearch 通过在一个统一的平台内提供全文、向量及混合搜索能力,真正实现了搜索的现代化。它不仅能找到用户输入的“字面”,更能深刻理解用户想要表达的“意思”。这不仅是一次技术升级,更是搜索体验的一次认知飞跃。





