一、语义搜索
在传统的搜索系统中,Elasticsearch 一直依赖 倒排索引(inverted index)+ BM25 算法,这种方式非常适合关键词匹配,但存在明显的局限性:
- 同义词问题:用户输入“手机”,但文档中写的是“智能电话”,传统搜索可能匹配不到。
- 语义理解问题:用户输入“谁写了红楼梦?”,关键词搜索会检索“谁”、“写”、“红楼梦”,但很难直接理解用户意图。
- 上下文问题:传统搜索不理解句子整体含义,例如“最好的编程语言是什么”,它只会匹配“最好”和“编程语言”,而不是理解这个问题是在寻找“排名”或“推荐”。
为了解决这些问题,Elasticsearch 从 8.0 版本开始,逐渐引入了 dense_vector 向量字段、knn search、以及 semantic_text 查询,结合大语言模型(LLM)和向量搜索(vector search),构建出真正的 语义搜索(semantic search) 能力。
二、Elasticsearch 语义搜索核心原理
语义搜索的关键是 Embedding 向量化。
-
Emb