RAG 系统里最容易踩的坑,就是只用语义搜索、或者只用关键词搜索。这两种策略各有硬伤——语义搜索能理解「退款」等于「退钱」,但用户报一串精确的订单号它搜不到;关键词搜索能精准命中错误代码,可用户说一句「怎么退钱」它就懵了。
三种检索策略,各有硬伤
检索策略主流就三种,长处和短板都很明确。
语义搜索用 Embedding 向量算语义相似度,能理解同义词、口语和模糊意图——用户说「怎么退钱」能匹配到「退款流程」。但精确匹配是它的弱项,搜「PRD 模板」可能漏掉「PRD 模板 v2.3」。准确率基线大概 70% 到 80%。
关键词搜索走 BM25 那套词频匹配,专治专有名词、编号、代码片段这类精确查询。但它不理解语义,「怎么退钱」搜不到「退款流程」。准确率基线 60% 到 70%。
混合检索把两路并行跑、结果融合到一起再排序,兼顾语义理解和精确匹配,是目前公认的最佳实践。代价是实现更复杂、得调融合权重。准确率基线能到 80% 到 90%。
混合检索是怎么把两路结果合到一起的
混合检索的关键不在「用了两种」,而在「怎么融合」。标准做法分四步。
一是语义搜索出候选——把查询向量化,在向量库里捞最相似的 20