为什么要自己搭
这两年各种 AI 知识库工具不少,但大部分要么数据得传到云端,要么收费不低。如果你手里有一些不想上传的文档(比如公司内部资料、个人笔记、技术手册),或者单纯希望断网也能用,那本地部署一套就挺合适。
Dify 负责知识库管理和问答流程,Ollama 跑本地模型,两个都是开源免费。搭好之后,PDF、Word、TXT 等文档直接往里扔,问什么它就基于你给的材料回答,所有数据都留你自己电脑上。
这篇文章就是我折腾的过程记录,照着做基本能成。
整体思路
-
用 Docker 跑 Dify(开源 AI 应用平台) -
用 Ollama 跑本地模型(小显存显卡也能跑小模型) -
把 Dify 连上 Ollama -
在 Dify 里建知识库,上传文档 -
测试问答
一、准备工作
硬件要求
内存:至少 8 GB(推荐 16 GB)
硬盘:20 GB 以上空闲空间
Windows 10/11(专业版或家庭版都能用,家庭版需要手动装 WSL2)
如果你打算跑 7B 以上的模型,内存最好 16 GB 起步,独显6G以上更好。
二、安装Dify
2.1 拉代码
打开 PowerShell(管理员模式),找个目录:
2.2 配置环境变量
cp .env.example .env
用记事本打开 .env,初始阶段保持默认就行,不用改什么。如果电脑上 80 端口被占用了,可以把 EXPOSE_NGINX_PORT 改成 8080
2.3 启动Dify
docker compose up -d
第一次启动会下载镜像,等几分钟。完成后查看状态:
docker compose ps
所有服务都应该是 Up 。
2.4 初始化管理账号
浏览器访问 https://localhost(端口改了就换成对应的)。按照页面提示注册邮箱、用户名、密码。
这里插一句:Dify 默认的数据库密码是 difyai123456,如果你的电脑只自己用、不连外网,没必要改。如果非要改,不能只改 .env,得同步改数据库和 Redis 里面的密码,比较麻烦,个人用我就跳过了。
如果是新手,不建议改,我改了密码出了问题,我又改回来。折腾够呛。
三、安装 Ollama 并下载模型
3.1 下载安装 Ollama
3.2 下载模型
打开 PowerShell 或命令行,执行:
模型大小:qwen2:7b 大概 4.4 GB,nomic-embed-text 只有 274 MB。如果你的机器内存小于 8 GB,可以试试 qwen2:1.5b 或 phi3:mini。
不用命令,也可以在安装好的ollama 窗口中下载。参考上图。
四、让 Dify 能连上 Ollama
关键点:Dify 跑在 Docker 容器里,它访问 Ollama 不能用 localhost,须用 host.docker.internal 。
4.1在 Dify 中添加 Ollama 模型
登录 Dify → 右上角头像 → 设置 →模型供应商→找到ollama插件(安装)。安装完成后如下图所示。
添加对话模型(用于问答):
模型类型:LLM
模型名称:qwen2:7b(跟你下载的名字一模一样)
基础 URL:https://host.docker.internal:11434
上下文长度:4096
最大 token 上限:4096
添加嵌入模型(用于知识库):
模型类型:Text Embedding
模型名称:nomic-embed-text
基础 URL:https://host.docker.internal:11434
保存即可
添加成功后,在下拉菜单中可以看到模型列表。
五、创建知识库
5.1 新建知识库
在 Dify 左侧菜单找到“知识库”,点击“创建知识库”。给它起个名字,比如“我的技术笔记”。
5.2 上传文档
点击“添加文档”,你可以:
上传本地文件(支持 PDF、Word、TXT、Markdown 等)
5.3 选择嵌入模型
嵌入模型选刚才添加的 nomic-embed-text。其他设置保持默认。
等它处理完成。Dify 会把文档切片,然后用嵌入模型把每一段转成向量存到本地(向量数据库 Weaviate 也是跑在你 Docker 里的,不会上传到任何地方)。
六、开始问答
6.1 创建一个聊天应用
左侧菜单 → 工作室 → 创建应用 → 选择“工作流” → 起个名字。
6.2 关联知识库
在应用编辑页面的“上下文”栏,选择你刚才建的知识库。
6.3 设置模型
在“模型”栏,选择刚才添加的 qwen2:7b。
6.4 测试
发布应用,然后在右侧对话框问它问题。比如你上传了一份经济数据,问“2010年GPD”它会从你上传的文档里找答案。
6.5 断网测试
关掉 Wi-Fi,刷新页面,再问一次。只要之前已经加载过模型(Ollama 本地跑着),Dify 和知识库都在本地,照样能答。这才是“离线可用”的意义。
测试结果如下:
七、一些踩过的坑
7.1 嵌入模型选错了导致知识库处理失败 Dify 里添加模型时,对话模型和嵌入模型不能混用。嵌入模型必须选类型为 Text Embedding 的。如果你在 Ollama 里只拉了对话模型,没有 nomic-embed-text 这种嵌入模型,知识库创建那一步会失败。
7.2 基础 URL 写 localhost 导致连不上 这是最容易犯的错。Docker 容器里的 localhost 指向容器自己,不是你的 Windows 宿主机。必须写 https://host.docker.internal:11434 。如果还不行,写你电脑的 IPv4 地址(比如 https://192.168.1.100:11434 )。
7.3 模型回答时很慢
- 小模型(1.5B ~ 3B)在 CPU 上也能跑,速度还行。
- 7B 以上的模型没有 GPU 的话会比较慢,可以降低上下文长度,或者换小一点的模型。
- 第一次加载模型会慢一些,后续问答会快一点(Ollama 会把模型部分留在内存)。
7.4 中文支持不好 Ollama 上的通用模型(如 llama3、phi3)中文能力一般。建议用专门的中文模型:
- qwen2:7b (通义千问 2,中文强)
- deepseek-R1:7b (代码和中文都还行)
- glm4:9b (智谱,需要更多内存)
对知识库感兴趣的,关注我一起进步哦。如果有技术咨询,请留言。












![表情[nanguo]-寻找资源网](http://www.seekresource.com/wp-content/themes/zibll/img/smilies/nanguo.gif)
![表情[haobang]-寻找资源网](http://www.seekresource.com/wp-content/themes/zibll/img/smilies/haobang.gif)
![表情[shuai]-寻找资源网](http://www.seekresource.com/wp-content/themes/zibll/img/smilies/shuai.gif)
![表情[deyi]-寻找资源网](http://www.seekresource.com/wp-content/themes/zibll/img/smilies/deyi.gif)
![表情[chi]-寻找资源网](http://www.seekresource.com/wp-content/themes/zibll/img/smilies/chi.gif)



暂无评论内容