必须启用重排模型并配置过滤逻辑才能让dify检索结果聚焦高相关片段,否则向量检索易引入无关干扰段落;需确认版本≥v0.6.12、部署bge-reranker服务(xinference或flagembedding)、在工作流中启用重排序节点并设置top_k、score_threshold及filters。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在Dify中让检索结果真正聚焦于高相关片段,必须启用重排模型并配置过滤逻辑,否则向量检索返回的Top-K内容常含语义相近但实际无关的干扰段落,直接喂给LLM会引发回答空泛或错误。
确认Dify版本与Rerank支持状态
进入Dify管理后台 → 点击左下角「设置」→「系统信息」,核对当前版本号是否 ≥ v0.6.12。【v0.5.x及更早版本不支持Rerank配置项,强行修改config.py将触发启动失败】。
打开终端,执行 dify-cli version 命令二次验证。若显示 command not found,说明未安装CLI工具,需先运行 pip install dify-cli。
部署BGE-Reranker服务(二选一)
方法一:用Xinference一键托管(推荐)
① 拉取并启动Xinference容器:docker run -d --gpus all -p 9997:9997 --name xinference -v /path/to/models:/root/.xinference/models xprobe/xinference:latest --host 0.0.0.0 --port 9997
② 在宿主机执行模型注册:xinference register --model-name bge-reranker-base --model-type rerank --model-path /path/to/models/bge-reranker-base --is-builtin False
③ 启动模型服务:xinference launch --model-name bge-reranker-base --model-type rerank --n-gpu 1。成功后返回模型UID,复制备用。
这一步不能跳过模型注册——Xinference默认不加载rerank类型模型,未注册就launch会报Model not found且无明确提示。
方法二:用FlagEmbedding启动FastAPI服务
安装依赖:pip install FlagEmbedding
启动服务(监听8001端口):python -m FlagEmbedding.reranker.api_server --model_name_or_path /opt/dify/plugins/rerank/bge-base --host 0.0.0.0 --port 8001 --device cuda:0
服务启动后暴露 POST /rerank 接口,接收JSON请求体,返回归一化得分数组。
在工作流中启用重排序节点并配置过滤规则
进入Dify工作流编辑界面 → 找到「检索」节点 → 点击右侧齿轮图标 → 开启「启用重排序」开关。
添加「重排序」节点,拖入检索节点下游,连接二者 → 在节点配置中选择模型类型为「自定义API」或「本地模型」 → 填写服务地址:
• 若用Xinference,填 http://localhost:9997/v1/rerank,并在「模型UID」栏粘贴上一步复制的UID;
• 若用FlagEmbedding,填 http://localhost:8001/rerank。
配置过滤参数:
• top_k:设为3~5,避免过多低分段落污染上下文;
• score_threshold:设为0.65~0.75,低于该值的段落直接丢弃;
• filters:可选填来源白名单(如 ["manual", "faq"])或排除关键词(如 ["deprecated", "obsolete"])。
保存工作流并发布,此时每次检索都会先经重排模型打分,再按阈值和数量截断,只把真正相关的段落送入LLM上下文。










