Dify+Ollama本地知识库搭建教程:从零构建企业级RAG系统

2026-08-12 · LLM应用开发 · RAG检索增强生成

在大模型落地企业场景的过程中,数据安全与回答幻觉 是两大核心痛点。单纯依赖大模型自身的通用知识,无法精准回答企业内部的规章制度、技术文档或私有数据。 本文将基于 Dify(开源 LLMOps 平台) + Ollama(本地大模型引擎),手把手带你从零构建一套 100% 离线、高精度的企业级 RAG(检索增强生成)知识库系统。 本文重点攻克:Docker 容器间网络映射、混合检索(Hybrid Search)配置、向量数据库选型、重排模型(Rerank)调优 等生产环境核心踩坑点。

一、为什么企业级 RAG 必须选择 Dify + Ollama?

市场上做本地知识库RAG的工具很多(如 MaxKB, AnythingLLM, FastGPT 等),但在企业级应用和复杂业务流落地层面,Dify LLMOps平台 依然是目前的综合天花板。

1.1 Dify LLMOps平台核心优势

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,配置参数如下:

注:切勿填 127.0.0.1,因为容器内部的 127.0.0.1 指的是容器自己!

用同样的方法,添加 Embedding 模型:

四、核心攻坚:企业级 RAG 知识库检索精度调优

很多同学搭建完本地知识库RAG后,发现"AI 依然在胡说八道",或者"明明文档里有的内容却查不到"。这通常是因为你用了默认的"傻瓜式"分段与检索策略。

要在生产环境达到 90% 以上的召回率,必须在 Dify 知识库中开启以下调优:

+-----------------------------------------------------------------------+
|                            用户输入的 Query                           |
+-----------------------------------------------------------------------+
                                    |
            +-----------------------+-----------------------+
            v                                               v
+-----------------------+                       +-----------------------+
|  向量检索 (Dense)     |                       |  全文检索 (Sparse)    |
|  语义相似度匹配       |                       |  BM25 关键词精确匹配  |
+-----------------------+                       +-----------------------+
            |                                               |
            +-----------------------+-----------------------+
                                    v
                        +-----------------------+
                        |  Rerank 重排模型      |  <-- 核心:二次打分排序
                        +-----------------------+
                                    |
                                    v
                        +-----------------------+
                        | Top-K 结果提交给 LLM   |
                        +-----------------------+

4.1 文本分段(Chunking)策略

4.2 检索模式选型:启用"混合检索 (Hybrid Search)"

单靠"向量检索"很容易忽略专有名词、产品型号或错误代码,因为向量侧重的是语义而非字符匹配。

在 Dify 知识库设置中,将检索模式改为 混合检索,并设置权重比例(如 向量 0.7 : 全文 0.3)。

4.3 引入 Rerank(重排模型)解决 Top-K 噪声问题

混合检索会召回大量相关片段,但很多片段可能只是"含有关键词"却并不解答问题。 配置 Rerank 模型(如本地部署 bge-reranker-large 或配置在线 Rerank API),重排模型会对召回的 Top-N 结果进行深度交叉编码评分,精准提取最相关的 Top-K 片段喂给大模型。

五、Dify 生产级 Workflow 工作流编排实战

简单的问答应用无法应对复杂的企业逻辑,我们需要利用 Dify 的 Workflow(工作流) 进行节点控制:

六、常用排障与性能优化 checklist

七、企业级落地资源包与一键工作流

为了帮助大家快速验证和上线这套系统,我们将本文涉及的所有工程配置文件、工作流 JSON 模板以及测试数据集进行了系统整理,打包为 【Dify 本地企业级 RAG 落地套件】

📁 资源包内部清单

👇 完整落地套件获取方式 👇

夸克网盘下载

链接:https://pan.quark.cn/s/b7c16903c4af

提取码:Jdfj

💡 工程部署建议:保存后下载 JSON 模板,直接在 Dify 的"导入 DSL"中载入,3 分钟即可拥有生产级 RAG 架构!

八、相关工具推荐

在搭建本地知识库和调试 RAG 系统时,以下工具可能会帮到你:

八、常见问题 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 堆栈?欢迎在评论区贴出,博主在线为你解答!