挂上知识库 ≠ 生产可用
Dify 知识库上手很快。真正头疼的是:有时能搜到但答歪,有时换了文档效果悄悄掉,还说不清是检索差还是模型差。工程化就是把切分、索引、召回、生成、评测串成能回归的流程。
切分和元数据
切太碎,答案拼不起来;切太整,噪声大还容易超窗。按标题/段落语义切,留一点 overlap,表格和代码尽量整块。元数据带文档名、章节、更新时间、权限,后面过滤和追责都靠它。
Embedding 换模型通常要重建索引,单独发版,别和 Chat 模型同一天切。出问题会分不清责任。
召回别只调一个 TopK
常见链路:可选的 query 改写 → 向量召回 → 权限/业务过滤 → rerank → 取 TopN 进提示词。top_k、阈值、是否重排,全部配置化,靠评测集改,不靠感觉。
评测集不必大,但要覆盖:事实查找、步骤类 Runbook、易混淆概念、以及「应该说不知道」的无答案题。标一下应命中的文档 ID。指标看 hit_rate、答案是否被上下文支持、延迟和平均上下文 token。
线上和发布
盯无命中率、低分召回、点踩里「没按文档答」的比例。坏案例进 ES,周会消化后再改切分或补题。
发布节奏:预发增量入库 → 跑评测对比 → 小流量应用切换 → 观察 → 全量,并保留旧索引别名以便回滚。Dify 里生产应用尽量钉知识库版本,重要参数用工作流显式控制,避免后台随手改 TopK。
质量差时先分清检索还是生成。上下文突然变长,TTFT 和费用也会跟着坏,别一上来怪引擎。
转载请注明:周志洋的博客 » RAG工程化:从Dify知识库到生产级检索


