必须同时配置多路召回与重排序,否则top-5相关性不足75%;混合检索需显式设置vector_weight+keyword_weight=1.0;rerank需启用并设concurrency≥4,a10g最优值为4。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在Dify中实现高精度检索,必须同时配置多路召回(向量+关键词)与重排序(Rerank),否则仅靠单一路径召回的文档Top-5相关性不足75%,且易被语义相近但业务无关的噪声文档挤占位置。
启用混合检索并设置双路权重
进入Dify控制台 → 应用管理 → 知识库 → 检索设置 → 检索模式选择“混合检索”。
在自定义配置JSON中填入以下内容,【vector_weight和keyword_weight之和必须严格等于1.0】: { "retrieval_mode": "hybrid", "vector_weight": 0.65, "keyword_weight": 0.35, "top_k": 15 }
这一步不能只点开开关就结束——若不显式声明权重,Dify会回退到默认1:1均分,导致长尾查询(如含专业缩写、口语化表达)的BM25匹配失效。
配置Rerank模型与并发执行策略
方法一:通过应用级YAML配置(推荐用于生产环境) 编辑 apps/{app_id}/config.yml,在 retrieval 节点下添加:
rerank:
enabled: true
model: "bge-reranker-v2-m3"
top_k: 8
concurrency: 4
方法二:通过全局 config.py 启用(适用于调试或单模型部署)
在 dify/config.py 中设置:
RETRIEVAL_METHOD = "hybrid"
RERANK_MODEL_NAME = "bge-reranker-v2-m3"
RERANK_TOP_K = 8
RETRIEVAL_PIPELINE = "rerank_first"
【concurrency: 4 是关键阈值】:低于该值时P95延迟陡增;高于该值且GPU显存<12GiB时将触发OOM崩溃。A10G卡实测最优值为4,V100建议设为6。
验证Rerank是否真实生效
第一步:启动Dify API服务后,执行CLI命令触发单次推理
docker-compose exec api python -m app.rerank.runner \
--query "客户投诉响应超时怎么处理?" \
--docs '["客服SOP第3.2条:2小时内首次响应", "工单系统升级公告", "2023年满意度调研报告"]' \
--verbose
第二步:观察输出日志中的 scores 字段是否呈现明显梯度(如 0.92 → 0.41 → 0.18),而非全部趋近于0.5;若三者得分差<0.1,说明模型未加载或输入格式错误。
第三步:对比开启前后 /chat 接口返回的 context_docs 字段——重排序生效后,原始向量检索排第7、第12的文档应跃升至第1、第2位。











