在 RAG(检索增强生成)系统中,语义搜索是指基于含义而非仅仅依靠文字表面匹配来寻找信息的方法。
其核心原理是:利用嵌入模型(Embedding Model)将文本(无论是用户的查询还是知识库中的文档块)转换成高维空间中的向量。在这个向量空间中,语义上相似的文本在距离上会更接近。
工作流程:
例子:
用户问:“怎么修我的电脑?”
语义搜索能够找回包含“如何排除计算机故障”的文档。虽然“修”与“排除”不是同一个词,“电脑”与“计算机”也不是同一个词,但模型理解它们语义相近。
关键词搜索(如 BM25、TF-IDF,常见于 Elasticsearch 或传统数据库的 LIKE 查询)依赖于词汇匹配。如果文档里没有用户查询中的那个确切的词,就检索不到。
以下是两者的详细对比:
| 维度 | 关键词搜索 | 语义搜索 |
|---|---|---|
| 核心原理 | 词频统计、倒排索引、精确字符匹配 | 深度学习模型、向量相似度、意图理解 |
| 处理同义词 | 差(搜“汽车”找不到只写了“轿车”的文档) | 强(理解“汽车”和“轿车”指代同一事物) |
| 处理歧义 | 差(难以分辨“苹果”是水果还是手机,取决于词频) | 较强(结合上下文向量判断含义,虽然仍有局限) |
| 长尾查询 | 差(长句子容易匹配不到任何关键词) | 强(能够捕捉整句话的意图) |
| 可解释性 | 强(能明确知道是因为匹配到了哪个词) | 弱(难以解释为什么这两段文字在向量空间里近) |
| 响应速度/成本 | 极快,资源消耗低 | 相对较慢,需要 GPU 计算向量,存储成本高 |
| 精确匹配 | 极强(适合搜特定的序列号、姓名、错误代码) | 较弱(向量检索可能会模糊掉精确的字符信息) |
一句话总结:
关键词搜索是“查字典”,看字对不对;语义搜索是“问老师”,看意思懂不懂。
非常合适,且区分度高。
这是一个能够考察候选人深度和广度的好问题。面试官可以通过这个问题判断候选人是只会调 API 的“调包侠”,还是真正理解 RAG 原理的工程师。
初级/入门者:
like 查询。”中级/有经验者:
高级/专家:
如果你准备面试,遇到这道题,可以按照以下框架回答:
评论专区
评论加载中...登录后即可发表评论