RAG 知识库检索参数怎么调?一篇讲清 top_k、BM25、Rerank、各种阈值的区别

很多人在刚开始做知识库问答、Dify 工作流、RAG 系统时,最容易遇到的问题不是"模型不够强",而是:

  • 为什么知识库明明有内容,模型却答不出来?
  • 为什么只答了一条,明明文档里还有很多条?
  • 为什么会把多篇文档拼在一起,答得乱七八糟?
  • top_k、Score 阈值、Rerank、重排阈值,到底分别控制什么?

这些问题本质上都不是"模型问题",而是:

知识库检索参数和切片策略没调对。


一、先说结论:RAG 的核心不是生成,而是检索链路

真实系统流程:

用户问题

→ 召回(top_k)

→ 过滤(Score阈值)

→ 重排(Rerank)

→ 再过滤(重排阈值)

→ 拼接上下文

→ 大模型生成

👉 模型答得好不好,取决于:

前面给了它什么内容


二、top_k:控制"先找多少资料"

举个例子(电商客服场景)

用户问:

退货流程是什么?

知识库里有 500 条切片。

  • top_k = 3 → 只取3条
  • top_k = 15 → 取15条

top_k 小

优点:

  • 干净
  • 精准

缺点:

  • 容易漏信息

top_k 大

优点:

  • 信息更全

缺点:

  • 噪音更多

一句话总结

top_k 决定模型"先看到多少参考资料"


三、Score 阈值:第一道过滤

作用:

过滤掉"不够相关"的候选内容

例如:

  • top_k = 10
  • Score 阈值 = 0.5

→ 最终可能只剩 5 条


一句话总结

Score 阈值 = 初检过滤线


四、Rerank:重新排序,让结果更准

Rerank 的作用:

对召回结果重新打分排序

流程:

初步检索

→ 得到候选结果

→ Rerank重新打分

→ 排序


举个例子(产品文档场景)

用户问:

如何创建用户账号?

初步检索可能返回:

  • 用户账号创建流程
  • 用户权限管理
  • 用户数据统计

Rerank 会把:

👉 "创建流程" 排到最前


一句话总结

Rerank = 二次排序,不增加内容,只提升准确度


五、重排阈值:第二道过滤

作用:

在 Rerank 后再次过滤低质量结果


对比总结

  • Score 阈值 → 初检过滤
  • 重排阈值 → 重排后过滤

六、三层过滤机制(非常关键)

假设你问:

用户注册流程有哪些步骤?

系统流程:

  • Score 阈值 = 0.5 → 第一轮过滤
  • 重排阈值 = 0.6 → 第二轮过滤
  • 最终相关度 = 0.7 → 最终拼接过滤

一句话总结

逐级收紧,层层过滤


七、BM25:传统关键词检索

适用于:

  • FAQ
  • 帮助文档
  • 产品说明
  • 固定术语

举例

搜索:

用户登录问题

BM25 返回:

  • 用户登录失败原因(高)
  • 用户登录流程(中)
  • 用户注册说明(低)

特点

优点:

  • 精确
  • 稳定

缺点:

  • 不理解同义词

一句话总结

BM25 = 关键词匹配型检索


八、精确搜索

特点:

必须完全匹配


举例

搜索:

用户注册流程

只返回:

  • 用户注册流程说明 ✅

不会返回:

  • 注册步骤 ❌

一句话总结

精确搜索 = 完全匹配,不做理解


九、语义检索(向量检索)

特点:

理解"意思相近"


举例

用户问:

怎么创建账号?

系统也能匹配:

  • 用户注册流程

一句话总结

语义检索 = 按意思找内容


十、混合检索(最推荐)

组合:

BM25 + 向量检索


作用

  • BM25 → 精确
  • 向量 → 语义

一句话总结

既要精准,也要理解语义


十一、为什么经常"只答一条"?(核心问题)

原因:

跨切片问题


举例(客服文档)

文档内容:

  1. 注册流程
  2. 登录流程
  3. 修改密码
  4. 找回密码

如果只召回 1 条:

👉 模型只回答一个


解决方案

  • 提高 top_k
  • 降低阈值
  • 优化切片结构
  • 提问加限制:逐条列出

十二、为什么会"答乱"?(跨文档问题)

问题:

多篇文档被混合回答


举例

用户问:

用户注册流程

系统召回:

  • 官网文档
  • 内部文档
  • FAQ
  • 培训材料

👉 模型拼着答 → 混乱


解决方案

  • 限制来源
  • 增加文档标识
  • 优先单文档回答

十三、检索参数 vs 生成参数(非常重要)


检索 top_k

作用:

控制"看多少资料"


生成 top_k / top_p

作用:

控制"怎么说话"


一句话总结

一个控制"看什么",一个控制"怎么说"


十四、生成参数

1)max_tokens

控制:

  • 回答长度

2)temperature

  • 低(0.1):稳定
  • 高(0.8):发散

一句话总结

低温稳定,高温发散


十五、实战调参建议

情况1:答不全

  • top_k ↑
  • 阈值 ↓
  • max_tokens ↑

情况2:答得乱

  • top_k ↓
  • 阈值 ↑
  • 开启 Rerank

情况3:不够准

  • 开启 BM25
  • 使用混合检索

十六、最终总结(最重要一句话)

RAG 的核心是:

召回 → 过滤 → 排序 → 生成

同时还要:

切片合理 + 提问清晰


十七、结语

真正懂 RAG,不是会用,而是:

知道为什么它会答错,并且知道怎么调。


💬 如果本文对你有帮助,欢迎点赞 + 收藏 + 分享

📌 更多 AI 工程实践内容,欢迎关注「YoanAILab」

相关推荐
Thomas.Sir15 小时前
第十二章:RAG知识库开发之【RAG的预检索和后检索:核心优化策略与实践】
人工智能·python·ai·rag·预检索·后检索
YoanAILab1 天前
从 CoT、RAG 到 Dify、Deep Research:一篇讲清 AI 问答系统的两条进化路线
人工智能·cot·dify·rag·deepresearch
weixin_492722821 天前
RAG 已死,Baklib 才是未来
rag
Chef_Chen1 天前
Agent学习--RAG(1)
学习·rag
麦哲思科技任甲林2 天前
四个软件三个步骤搭建本地知识库
大模型·rag·anythingllm·本地知识库
deephub2 天前
多 Aspect Embedding:将上下文信号编入向量相似性计算的检索架构
人工智能·大语言模型·embedding·rag
Thomas.Sir2 天前
第十一章:RAG知识库开发之【RAG 的缺陷分析与优化:从入门到实践的完全指南】
python·ai·rag·缺陷分析·效果评估
Thomas.Sir2 天前
第九章:RAG知识库开发之【LangChain 基础入门:从零构建大模型应用】
ai·langchain·检索增强·知识库
Trouvaille ~3 天前
零基础入门 LangChain 与 LangGraph(一):理解大模型、提示词、Embedding 和接入方式
算法·langchain·大模型·embedding·rag·langgraph·llm应用