#RAG#DevOps

AI 搜索的相关性调优

搜索好不好用,核心是"相关性"——用户搜的和你返回的,匹配得上吗。本文讲清 AI 搜索相关性的调优:相关性信号(语义/关键词/权威/时效/个性化)、加权融合、离线评测(标注+指标)、点击反馈(隐式学习),以及避免"看似相关实则无用"。

本文要点

  • 主题聚焦:RAG、DevOps
  • 适合人群:独立开发者、全栈工程师、AI 应用开发者
  • 核心价值:快速理解背景、实践路径、常见误区和工程建议
作者 @admin·发布于 2025年11月24日·更新于 2026年7月23日

搜"退款流程",返回的第一条到底是讲退款,还是讲"退货政策"的边角料?搜索好不好用,命门就在这一个判断上。召回(recall)解决"有没有",相关性(relevance)解决"对不对"。一个返回 20 条全不相关结果的搜索,比直接说"没找到"更糟——它浪费用户时间,还透支信任。

一、相关性是搜索的灵魂

很多人把"搜索"等同于"检索":把 query 向量化,top-k 召回,完事。但召回只是把"可能相关"的候选拉进池子,用户看到、点开的,是排序后的前几条。这前几条到底相不相关,才是搜索体验的真正决定项。

先建立两个关键认知:

  • 召回 ≠ 相关。召回追求不漏(该回来的回来了没有),相关追求不噪(回来的对不对)。纯向量 top-k 召回率可能不错,相关性常常崩——因为"语义相近"和"真能回答这个问题"是两回事。搜"iPhone 续航"召回讲"安卓电池"的段落,语义近,但跑题。
  • 返回一堆不相关的,比不返回更糟。返回"没找到",用户会换词重搜;返回十条不相关的,用户会认定"这系统不行",直接离开。搜索引擎里有个经典现象:结果首页以后的点击率断崖式下跌。相关性差,等于没有。

二、六大相关性信号

判断"相不相关",不是单一维度,而是多信号综合。生产级搜索至少叠加这几个:

信号测什么怎么算
语义相似query 和文档意思近不近向量余弦
关键词匹配字面对不对得上BM25 / TF-IDF
权威性来源靠不靠谱PageRank / 引用数 / 域名权重
时效内容新不新发布时间衰减
个性化这个用户更可能要什么用户历史 / 偏好
点击别人觉得相关不相关CTR / 停留时长

逐个说。语义相似(向量) 擅长处理"换个说法"——搜"退款"能召回讲"退货退款流程"的段落;但弱在精确串和专有名词,"ErrorCode=E4021"向量常常匹配不上。关键词匹配(BM25) 和向量互补,专有名词、代码、型号、错误码这类精确查询完胜向量,生产搜索几乎都是两者混合。

权威性 决定把谁顶上来:两篇都讲同一个病,三甲医院指南和营销号洗稿,权威信号负责拉开差距。学术搜索看引用数,通用搜索看域名权重/外链,内部知识库看作者职级、文档点赞数。时效 上,搜"Next.js 部署",2020 年教程和 2026 年文档都"相关",但内容可能完全不同(App Router、Server Actions);新闻类查询时效权重得拉满,推个五年前的"最新消息"就是事故。个性化 负责消歧:同一个"苹果",果农要水果资讯,开发者要公司新闻。点击(隐式反馈) 是免费的、海量的相关性标注,数据量是人工标注的几千倍——后面单独讲。

三、加权融合:按场景调权重

这些信号不是简单叠加,而是加权打分。一个典型融合:

ts
// 多信号加权融合(伪代码)
score =
    0.35 * normalize(semantic_sim) +   // 语义
    0.25 * normalize(bm25)         +   // 关键词
    0.15 * normalize(authority)    +   // 权威
    0.10 * normalize(freshness)    +   // 时效
    0.15 * normalize(personalized);    // 个性化

关键不是公式,而是权重得按场景调:

  • 学术搜索:权威性拉高(引用数、影响因子决定一切),时效权重可以低(十年前的奠基论文依然相关)。
  • 新闻 / 资讯:时效拉满,昨天的头条今天就是旧闻。
  • 内部知识库:权威性看作者和部门,个性化弱(大家查的是同一套文档)。
  • 电商搜索:个性化 + 销量 + 好评率权重高,时效次要。
  • 代码 / 文档搜索:关键词权重最高(精确匹配符号名),语义辅助。

经验:没有"万能权重",只有"当前场景下的合理权重"。冷启动可以抄同类产品的配比,但一定要拿自己的评测集调。融合顺序上,常见做法是"两段式":先用便宜信号(向量 + BM25)粗排召回 50–100 条,再用贵的信号(个性化、权威)+ rerank 精排到 10 条。性能和效果兼顾。

四、Rerank:把最相关的顶上来

加权融合是线性打分,天花板有限——它捕捉不到 query 和文档之间的细粒度交互。这时候 rerank(重排) 登场。

Reranker 是 cross-encoder:把 [query, doc] 拼成一对,一起过模型,输出一个精修的相关性分。和 bi-encoder(query、doc 分别编码再算余弦)比,它能看到两边交互,准得多——但慢一个量级,所以只能用在召回后的小集合上。

ts
// 两段式:粗排召回 + 精排重排
const candidates = await hybridSearch(query, 50);             // 向量+BM25 粗排
const ranked = await reranker.rerank(query, candidates, 8);   // cross-encoder 精排

为什么效果立竿见影?因为召回阶段(向量 + BM25)的排序误差大,top-50 里最相关的可能排在第 30 位;cross-encoder 能把它顶到前 3。对用户来说,第 3 和第 30 就是"好用"和"垃圾"的差别。 选型上 bge-reranker、Cohere Rerank、jina-reranker 都成熟,成本可控——只跑几十条候选。如果你的搜索还没上 rerank,这是 ROI 最高的单点优化,先做这个。

五、离线评测:把"感觉相关"变成"分数相关"

调相关性最忌"凭感觉"。你需要一个标注评测集,把"相关不相关"量化。

建集:选 100–300 条真实 query,每条人工标注"哪些文档相关、相关程度几档"(通常 0/1/2 三档:不相关 / 相关 / 非常相关)。这是脏活,但没它一切调优都是玄学。跑这几个核心指标:

  • nDCG@k(归一化折损累计增益):相关性排序最常用的指标,同时考虑相关程度和位置——位置越靠前、相关程度越高,分越高。nDCG@10 = 0.82 意味着前 10 条排序质量不错。
  • MRR(平均倒数排名):第一个相关结果平均排在第几位。MRR = 0.5 即第一个相关结果平均在第 2 位。
  • Recall@k:相关文档有没有进前 k,偏召回,配合 nDCG 看。
text
DCG@k  = Σ rel_i / log2(i + 1)      (越靠后,折扣越大)
nDCG@k = DCG@k / iDCG@k            (实际排序 / 理想排序)

用法:每次调权重 / 换 reranker / 改融合策略,跑一遍评测集,看 nDCG 涨了没。涨了才上线,跌了就回滚——和 RAG 评估一个逻辑。进阶做法是按 query 类型切片(导航型 / 信息型 / 事务型),看哪类拖后腿,针对性调权重。bad case 分析永远比看总分更有用。

六、点击反馈:免费的海量标注,但小心位置偏置

人工标注贵且慢,而用户的每一次点击都是一条隐式标注:点了 = 大概率相关,跳过 = 大概率不相关,点了立刻返回 = 不满意。这就是隐式反馈。

几种用法:

  • CTR 作为相关性信号回灌排序:某条结果对某 query 的点击率高,加权提分。
  • 停留时长 / 跳出率修正点击质量:点了但 3 秒返回,不是真相关。
  • 点击跳跃对:"用户从结果 A 跳到 B"暗示 A 没满足、B 更可能相关。

但点击数据有个大坑:位置偏置(position bias)。排在前面的结果 CTR 天然就高——不是更相关,而是用户懒得往下翻。直接拿 CTR 当相关性,会让"已经排在前面的"越排越前,马太效应固化次优解。解法是去偏(debias):用 Expected Reciprocal Rank(ERR)、位置随机化(position randomization)或反事实估计剥离位置因素。生产级系统都会做这一层。不做去偏的点击反馈,比不用还危险——它会系统性地把你锁死在次优排序上。

七、避免"看似相关实则无用"

最后说一个常被忽略、但很致命的问题:相关性 ≠ 有用。一条结果可能每个关键词都对得上、语义也近,但内容是垃圾——洗稿、凑数、过时、SEO 农场文章。把这种"看似相关"的结果顶上来,用户体验比"不相关"还差。

几道防线:

  • 质量过滤:入库前过质量分(内容长度、信息密度、来源信誉),低质量压根不进索引,或降权。
  • 去重 / 近似去重:同一内容被洗稿几十遍,只留权威原始来源。SimHash / MinHash 做近似去重。
  • SEO 垃圾识别:关键词堆砌、标题党、内容农场特征——单独训个分类器拦掉。
  • 内容新鲜度校验:对时效敏感的 query,超过阈值的旧内容直接过滤,不管"相关分"多高。
  • 用户反馈通道:点踩、"结果不相关"按钮。负面信号是金矿,能直接喂回排序模型。

经验:做搜索的人常盯着"召回准不准",但用户离开的真实原因,往往是"前几条是垃圾"。质量门控和相关性排序同等重要,别只优化后者。

小结

  • 相关性是搜索的灵魂:召回解决"有没有",相关性解决"对不对"。返回一堆不相关的,比不返回更糟。
  • 多信号融合:语义、关键词、权威、时效、个性化、点击——按场景调权重,没有万能配比。
  • rerank 是 ROI 最高的单点优化:cross-encoder 把召回阶段埋没的相关结果顶上来。
  • 离线评测把感觉变数字:标注集 + nDCG/MRR,每次改动跑一遍,涨了才上线。
  • 点击反馈是免费标注,但必须去偏:位置偏置不除,反馈越用越歪。

搜索调优的成熟度,看一件事:你能不能说出"这次改版 nDCG@10 从 0.71 涨到 0.83",而不是"感觉搜得准了"。 把信号、融合、rerank、评测、反馈这套循环跑起来,搜索才从"能用的 demo"变成"好用的产品"。

Related

相关推荐