跳到主内容
快讯直播
AI智模界
AI 词典

检索相似度阈值:RAG 里最容易被忽略的旋钮

一句话定义

检索相似度阈值(similarity threshold)是 RAG(Retrieval-Augmented Generation,AI 词典:检索增强生成">检索增强生成)流水线里的一条“分数线”:只有当文档片段与用户问题的相似度得分高于这条线时,这段内容才有资格被放进大模型的上下文。

这条线是怎么起作用的

向量检索会先把用户问题和知识库里的文档片段都转成向量,再计算两者的相似度(常用 cosine similarity 余弦相似度,或用点积、欧氏距离换算),得到一个分数。系统把知识库里的片段按分数从高到低排序,然后只看分数过线的那几条,拼进 prompt 交给模型作答。

你可以把它想成招聘筛简历:分数线定得太高,比如只接受“几乎一模一样”的片段,结果往往是一个候选都进不来,模型手里没材料,只能靠自己记忆作答,这正是幻觉的高发场景;分数线定得太低,又会把一堆沾边的、跑题的片段全塞给模型,上下文窗口(context window)被垃圾占满,关键信息反而被淹没。

和 top-k 的区别

这两个参数经常被混为一谈,但作用完全不同:

概念作用类比
top-k固定取分数最高的 k 条,不问好坏只招 5 个人,哪怕全场不及格也招满
相似度阈值设一条及格线,线上留、线下丢,条数不固定60 分以下一律不录用,可能一个都招不到
rerank(重排)对候选片段用更强的模型再打一次分复试重新面试,重新排序

实践中常见做法是两者叠加:先用阈值过滤掉明显不相关的片段,再截取 top-k 控制成本,最后用 rerank 精排。只有阈值、没有 top-k,可能一次召回几百条把上下文撑爆;只有 top-k、没有阈值,则必然每次都会把 k 条全部填满,哪怕第 3 条之后全是噪音。

实际意义与常见坑

对做 RAG 的团队来说,阈值直接决定两件事:召回为空,还是召回一堆垃圾。前者让模型“无据可依”,后者让模型“被带偏”,两种表现看起来都是答得不好,但修法完全相反。所以排查 RAG 效果时,先看检索结果本身是否合理,比反复调 prompt 有效得多。

最需要注意的一点:阈值不是绝对量。不同 embedding 模型的分数分布差别很大,同一句话在不同模型下的相似度可能一个 0.9、一个 0.6;是否对向量做归一化、用余弦还是内积,也会改变数值区间。因此网上流传的“阈值设 0.8”之类的经验值不能直接照搬,具体取值请以所用模型的官方文档和自有数据实测为准。

靠谱的定法是用一批真实用户问题加人工标注的“应有答案”,在小规模评估集上试几档阈值,观察召回内容的相关率与最终答案质量的曲线,选拐点。另一种省事的工程策略是保留一条较宽松的阈值做兜底:一旦没有任何片段过线,就让模型明确回答“资料中未找到相关信息”,而不是放任它自由发挥。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。