跳到主要内容

设计搜索引擎

问题

设计一个支持语义搜索的搜索系统,兼顾关键词精确匹配和语义理解。

答案

一、系统架构

二、核心组件

Query 理解

功能方法
意图识别分类器判断搜索意图
查询改写LLM 扩展同义词
拼写纠错编辑距离 + 语言模型
实体识别NER 提取关键实体

索引存储

存储用途
ElasticsearchBM25 倒排索引 + 全文搜索
向量数据库Embedding 语义检索
Redis热门查询缓存

融合排序

RRF(Reciprocal Rank Fusion)

RRF(d)=rR1k+r(d)\text{RRF}(d) = \sum_{r \in R} \frac{1}{k + r(d)}

将多路检索结果按排名融合,k 通常取 60。

三、AI 增强搜索

增强方式说明
语义检索Embedding 匹配,理解同义词和意图
Query 改写LLM 扩展查询
AI 摘要对搜索结果生成摘要(如 Perplexity)
对话式搜索多轮对话逐步细化需求

常见面试问题

Q1: BM25 和向量检索各自的优劣势?

答案

场景BM25 更好向量更好
专有名词✅ 精确匹配❌ 可能模糊
同义词❌ 需要同义词表✅ 语义理解
跨语言
速度✅ 快

最佳实践:混合搜索,两者互补。


相关链接