在Dify中启用本地Embedding模型可确保敏感数据不出内网,需先验证服务健康状态,再通过Web界面或.env文件配置API地址(如http://host.docker.internal:8000/v1),最后在知识库创建时指定该模型并抓包确认无外发请求。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在Dify中启用本地Embedding模型,可确保文档切片、向量生成、语义检索全过程不离开企业内网,从根本上阻断敏感数据(如客户身份证号、病历摘要、合同条款)被上传至第三方服务的风险。
确认Embedding模型已本地运行并可访问
先验证你的Embedding服务是否已在内网稳定提供HTTP接口。常见部署方式包括使用Sentence-Transformers封装为FastAPI服务,或通过Ollama、vLLM托管开源模型(如bge-m3、e5-base)。访问http://localhost:8000/health应返回{"status":"healthy"};若返回404或超时,说明服务未就绪,后续配置将无法生效。
这一步不可跳过——Dify不会主动检测后端连通性,错误配置会导致知识库上传后始终显示“处理中”,且无明确报错提示。
在Dify管理后台绑定本地Embedding服务
方法一:通过Web界面配置(推荐给非运维人员)
① 登录Dify管理员账户 → 进入【设置】→【模型设置】→【Embedding模型】
② 点击【添加模型】→ 模型类型选择“Remote API” → 填写名称(如“internal-bge-large”)
③ 在API Base URL栏填入你本地服务的完整地址,例如:【http://host.docker.internal:8000/v1】(注意:Docker容器内访问宿主机需用此特殊域名,而非localhost)
④ API Key留空(若本地服务未设认证)→ 点击【保存】
方法二:通过.env文件硬编码(适用于Kubernetes或Docker Compose生产环境)
编辑.env文件,追加以下三行:EMBEDDING_PROVIDER=remoteREMOTE_EMBEDDING_API_BASE=https://embedding.internal.company.com/v1REMOTE_EMBEDDING_API_KEY=
【必须重启dify-api容器才能使配置生效】
创建知识库时强制指定本地Embedding模型
进入【知识库】→ 【新建知识库】→ 在“Embedding模型”下拉菜单中,选择你刚刚配置的本地模型(如“internal-bge-large”);
若下拉列表为空,请返回上一步检查模型是否保存成功、API Base URL是否拼写错误、服务端口是否被防火墙拦截。
上传PDF/Word等文件后,Dify会调用本地服务完成文本分块→向量化→存入ChromaDB/Milvus。整个过程无任何原始文本流出内网,日志中仅记录任务ID与耗时,不落盘原始段落内容。
验证敏感数据是否真正未外泄
打开浏览器开发者工具 → 切换到Network标签页 → 上传一份含手机号、银行卡号的测试文档 → 观察所有XHR请求的目标域名:
✅ 正确情况:全部请求发往你配置的embedding.internal.company.com或host.docker.internal
❌ 错误情况:出现api.dify.ai、openai.com、dashscope.aliyuncs.com等外部域名 → 立即检查ALLOW_EXTERNAL_MODELS=false是否已设为true,该参数未启用将导致Dify自动回退至云端兜底模型。
抓包确认无明文敏感字段出现在请求体中——本地Embedding服务应只接收清洗后的纯文本段落(如已去除正则匹配的身份证号、手机号),该清洗逻辑需在Dify前置中间件或Embedding服务入口处自行实现。


















