Dify+Ollama本地知识库搭建教程:从零构建企业级RAG系统
在大模型落地企业场景的过程中,数据安全与回答幻觉 是两大核心痛点。单纯依赖大模型自身的通用知识,无法精准回答企业内部的规章制度、技术文档或私有数据。 本文将基于 Dify(开源 LLMOps 平台) + Ollama(本地大模型引擎),手把手带你从零构建一套 100% 离线、高精度的企业级 RAG(检索增强生成)知识库系统。 本文重点攻克:Docker 容器间网络映射、混合检索(Hybrid Search)配置、向量数据库选型、重排模型(Rerank)调优 等生产环境核心踩坑点。
一、为什么企业级 RAG 必须选择 Dify + Ollama?
市场上做本地知识库RAG的工具很多(如 MaxKB, AnythingLLM, FastGPT 等),但在企业级应用和复杂业务流落地层面,Dify LLMOps平台 依然是目前的综合天花板。
1.1 Dify LLMOps平台核心优势
- 真正的可视化 Workflow(工作流): 不止是"上传文档-检索-回答",Dify 支持根据意图识别自由挂载 API、条件分支、变量聚合,能轻松搞定复杂的企业 SOP 流程。
- 工业级 RAG 检索管线: 原生支持混合检索(Vector + BM25 全文检索) 与 Rerank 重排模型,检索召回率远超传统单向量检索。
- 数据安全与私有化: 结合 Ollama,可将模型权重、文本向量与关系型数据完全隔离在企业内网,满足数据合规审查。
1.2 系统架构概览
+---------------------------------------------------------------------------------+
| Dify LLMOps 平台 |
| +-------------------+ +--------------------+ +--------------------------+ |
| | 文档分段与清洗 | --> | 混合检索 + Rerank | --> | 可视化 Workflow 节点编排 | |
| +-------------------+ +--------------------+ +--------------------------+ |
+---------------------------------------------------------------------------------+
| (API)
v
+---------------------------------------------------------------------------------+
| Ollama 本地推理引擎 |
| +-----------------------------------+ +------------------------------------+ |
| | LLM (如 DeepSeek-R1 / Qwen2.5) | | Embedding / Rerank (如 BGE-M3) | |
| +-----------------------------------+ +------------------------------------+ |
+---------------------------------------------------------------------------------+
|
v
+---------------------------------------------------------------------------------+
| PostgreSQL + PGVector (向量数据库) |
+---------------------------------------------------------------------------------+
二、环境准备与 Docker 容器间网络打通
很多开发者在进行Ollama本地部署之后,尝试连接本地的 Ollama 时,频繁报 Connection Refused 或 Network Error,90% 的原因都卡在 Docker 容器的网络隔离上。
2.1 宿主机部署 Ollama 并配置跨域与网卡监听
默认情况下,Ollama 仅监听 127.0.0.1:11434,这会导致运行在 Docker 容器内部的 Dify 无法访问宿主机的 Ollama 服务。
Linux 系统(修改 Systemd 配置):
sudo systemctl edit ollama.service
在打开的配置文件中加入以下环境变量:
[Service] Environment="OLLAMA_HOST=0.0.0.0" Environment="OLLAMA_ORIGINS=*"
保存后重载并重启:
sudo systemctl daemon-reload sudo systemctl restart ollama
Windows / Mac 系统:
添加系统环境变量 OLLAMA_HOST=0.0.0.0 及 OLLAMA_ORIGINS=*,随后重启 Ollama 应用程序。
2.2 本地拉取核心模型
构建高精度 RAG 需要两类模型:生成模型(LLM) 与 向量嵌入模型(Embedding)。
# 1. 拉取对话/推理模型(根据显存选择 7B/8B 或 14B) ollama run qwen2.5:7b # 2. 拉取高质量多语言向量模型(必装) ollama pull bge-m3
三、Dify 本地搭建与服务联动
3.1 克隆并启动 Dify(使用 docker-compose)
git clone https://github.com/langgenius/dify.git cd dify/docker cp .env.example .env docker compose up -d
启动成功后,浏览器打开 http://localhost 注册管理员账号。
3.2 在 Dify 中添加 Ollama 模型供应商
进入 Dify 后台,点击 设置 -> 模型供应商 -> Ollama,配置参数如下:
- 模型类型: LLM
- 模型名称: qwen2.5:7b
- 基础 URL: http://172.17.0.1:11434 或 http://host.docker.internal:11434
注:切勿填 127.0.0.1,因为容器内部的 127.0.0.1 指的是容器自己!
用同样的方法,添加 Embedding 模型:
- 模型类型: Text Embedding
- 模型名称: bge-m3
- 基础 URL: http://host.docker.internal:11434
四、核心攻坚:企业级 RAG 知识库检索精度调优
很多同学搭建完本地知识库RAG后,发现"AI 依然在胡说八道",或者"明明文档里有的内容却查不到"。这通常是因为你用了默认的"傻瓜式"分段与检索策略。
要在生产环境达到 90% 以上的召回率,必须在 Dify 知识库中开启以下调优:
+-----------------------------------------------------------------------+
| 用户输入的 Query |
+-----------------------------------------------------------------------+
|
+-----------------------+-----------------------+
v v
+-----------------------+ +-----------------------+
| 向量检索 (Dense) | | 全文检索 (Sparse) |
| 语义相似度匹配 | | BM25 关键词精确匹配 |
+-----------------------+ +-----------------------+
| |
+-----------------------+-----------------------+
v
+-----------------------+
| Rerank 重排模型 | <-- 核心:二次打分排序
+-----------------------+
|
v
+-----------------------+
| Top-K 结果提交给 LLM |
+-----------------------+
4.1 文本分段(Chunking)策略
- 分段块大小(Max Chunk Length): 建议设置为 500 - 800 Tokens。太短会导致上下文断裂;太长会导致向量语义被稀释。
- 重叠分段(Overlap): 建议设置为 10% - 15%(如 50 Tokens)。这能有效保证切分边界处的语义完整性。
4.2 检索模式选型:启用"混合检索 (Hybrid Search)"
单靠"向量检索"很容易忽略专有名词、产品型号或错误代码,因为向量侧重的是语义而非字符匹配。
- 向量检索 (Dense Retrieval): 负责理解"意思相近"的句子。
- 全文检索 (Sparse Retrieval / BM25): 负责精确匹配"关键词/型号"。
在 Dify 知识库设置中,将检索模式改为 混合检索,并设置权重比例(如 向量 0.7 : 全文 0.3)。
4.3 引入 Rerank(重排模型)解决 Top-K 噪声问题
混合检索会召回大量相关片段,但很多片段可能只是"含有关键词"却并不解答问题。 配置 Rerank 模型(如本地部署 bge-reranker-large 或配置在线 Rerank API),重排模型会对召回的 Top-N 结果进行深度交叉编码评分,精准提取最相关的 Top-K 片段喂给大模型。
五、Dify 生产级 Workflow 工作流编排实战
简单的问答应用无法应对复杂的企业逻辑,我们需要利用 Dify 的 Workflow(工作流) 进行节点控制:
- 问题预处理(Problem Pre-processing): 增加 LLM 节点,将用户输入的口语化提问重写为包含完整上下文的检索关键词(Query Rewrite)。
- 知识库检索节点(Knowledge Retrieval): 绑定刚才配置的高精度知识库。
- 条件分支判断(IF/ELSE): 校验检索到的匹配度评分(Score)。如果评分低于 0.6,说明知识库无相关答案,直接走"转人工"或"回答不知道",彻底切断 AI 的瞎编路径。
- 上下文注入与 LLM 生成: 将检索出来的 Context 与系统 Prompt 结合,输出标准格式响应。
六、常用排障与性能优化 checklist
- 大文件上传超时: 修改 Dify Docker 目录下的 nginx/conf.d/default.conf,调大 client_max_body_size 100M;。
- 向量数据库 CPU 飙升: 若知识库文档超过数万条,默认的 PGVector 建议开启 HNSW 索引(Hierarchical Navigable Small World),查询速度可提升百倍。
- 并发吞吐提升: 在 Ollama 环境变量中增加 OLLAMA_NUM_PARALLEL=4,允许 Ollama 同时处理多个 Docker 请求。
七、企业级落地资源包与一键工作流
为了帮助大家快速验证和上线这套系统,我们将本文涉及的所有工程配置文件、工作流 JSON 模板以及测试数据集进行了系统整理,打包为 【Dify 本地企业级 RAG 落地套件】。
📁 资源包内部清单
- dify_enterprise_rag_workflow.json: 预先编排好的 Dify 高级 RAG 工作流模板,包含意图识别、重写、阈值过滤与拒答分支,下载后可在 Dify 直接导入。
- docker-compose-dify-ollama-bridge.yml: 预先配置好网络映射、环境变量及持久化挂载的开箱即用脚本。
- enterprise_policy_dataset.pdf: 精心特制的企业内部 HR/IT 规章制度测试数据集,可直接上传用于压测知识库召回率。
👇 完整落地套件获取方式 👇
💡 工程部署建议:保存后下载 JSON 模板,直接在 Dify 的"导入 DSL"中载入,3 分钟即可拥有生产级 RAG 架构!
八、相关工具推荐
在搭建本地知识库和调试 RAG 系统时,以下工具可能会帮到你:
- JSON 格式化校验工具 — 调试 API 请求和响应时快速格式化 JSON 数据
- Markdown 在线编辑器 — 编写技术文档和知识库内容
- Base64 编解码工具 — 处理配置文件中的编码数据
- YAML/JSON 互转工具 — 快速转换 docker-compose 配置文件格式
- Crontab 表达式计算器 — 设置定时任务,自动化知识库数据同步
八、常见问题 FAQ
Q1:Dify 和 Ollama 可以在 Windows 上部署吗?
可以。Windows 用户需要安装 Docker Desktop 并启用 WSL2 后端。Ollama 也有 Windows 原生版本,配置环境变量 OLLAMA_HOST=0.0.0.0 即可。
Q2:没有 GPU,纯 CPU 能跑 RAG 吗?
可以。Ollama 支持纯 CPU 推理,但建议选择参数量较小的模型(如 qwen2.5:7b)。Embedding 模型 bge-m3 在 CPU 上也能正常工作,只是响应速度会比 GPU 慢。
Q3:混合检索和向量检索有什么区别?
向量检索侧重语义理解,适合回答开放式问题;全文检索(BM25)侧重关键词匹配,适合精确查找专有名词。混合检索结合两者优势,召回率和准确率更高。
Q4:知识库文档很多时,检索速度会变慢吗?
默认情况下会。建议开启 PGVector 的 HNSW 索引,并合理设置 Top-K 值。对于超过 10 万条的企业级知识库,还可以考虑分库分索引策略。
Q5:RAG 知识库能接入微信小程序或企业微信吗?
可以。Dify 提供 REST API 接口,任何能调用 HTTP 接口的客户端都可以接入。如果你有定制开发需求,可以联系我们。
九、总结与下一步
搭建一个能跑通的 RAG 只需要 10 分钟,但搭建一个能在企业生产环境中"准确、安全、稳定"运行的 本地知识库RAG系统,需要对分段、向量数据库索引以及重排机制进行深入的工程调优。 希望本文的架构解析与实战模板能为你的企业 AI 落地提供切实的帮助!
💡 需要定制开发?
如果你在搭建企业级 RAG 系统时遇到技术难题,或者需要将知识库问答能力接入微信小程序、企业微信、钉钉等场景, 欢迎联系我们。 我们提供从本地知识库搭建到AI应用开发的一站式技术服务,帮助企业快速实现 AI 能力落地。
你在搭建 Dify 知识库或配置 Ollama 跨域时遇到了什么具体的 Error 堆栈?欢迎在评论区贴出,博主在线为你解答!