在实际 AI 应用开发中将大模型能力与私有知识结合构建一个能回答专业问题的智能助手是许多开发者和团队的核心需求。然而直接调用云端大模型 API 不仅涉及成本、数据安全和网络延迟问题其知识库也未必包含你的内部文档。Ollama 和 Dify 的组合为在个人电脑或内网服务器上零成本搭建一个功能完整的本地知识库问答系统提供了可能。Ollama 负责在本地轻松运行和下载各种开源大模型而 Dify 则提供了一个直观的图形化界面让你无需编写复杂代码就能完成知识库构建、工作流编排和应用发布。本文将带你从零开始在 Windows 或 Linux 系统上完成 Ollama 与 Dify 的本地部署与集成。整个过程不依赖昂贵的 GPUCPU 也可运行轻量级模型不产生 API 调用费用并且所有数据都在本地处理。无论你是想快速验证一个想法还是为团队搭建一个内部知识查询工具这套方案都能提供一个可运行的起点。我们将涵盖环境准备、软件安装、模型加载、知识库创建、应用配置以及常见问题的排查路径确保你能成功部署并理解其背后的工作机制。1. 理解 Ollama 与 Dify 的核心角色与工作流程在开始动手之前清晰理解这两个工具各自承担的角色以及它们如何协同工作是避免后续配置混乱的关键。这并非简单的“A 装完装 B”而是需要让两者在正确的配置下进行通信。1.1 Ollama本地大模型的“发动机”Ollama 是一个开源项目它的核心目标是简化在本地计算机上运行大型语言模型的过程。你可以把它想象成一个本地的模型管理器和运行时引擎。核心功能它提供了简单的命令行工具让你能够一键下载、运行和管理各种开源大模型如 Llama 2、Mistral、Gemma、Qwen 等。Ollama 会处理好模型文件的下载、加载到内存、以及通过一个标准的 API 接口兼容 OpenAI API 格式提供服务。为什么选择它无需手动配置复杂的 Python 环境、CUDA 驱动或模型转换工具。对于初学者和希望快速原型验证的开发者来说它极大地降低了门槛。即使是在只有 CPU 的机器上它也能运行经过量化的轻量级模型。工作方式安装 Ollama 后你通过ollama run model-name命令即可在本地启动一个模型服务。这个服务默认会在http://localhost:11434提供一个 API 端点。Dify 后续将通过这个地址与 Ollama 通信。1.2 DifyAI 应用的“组装车间”Dify 是一个开源的 LLM 应用开发平台。它提供了一个可视化的界面让开发者可以通过拖拽和配置的方式构建基于大模型的应用程序如智能客服、知识库问答、文本摘要等。核心功能Dify 将 AI 应用开发抽象为几个核心概念模型配置、提示词编排、知识库管理、工作流设计和应用发布。你不需要从零开始写代码处理对话逻辑、上下文管理或文件解析Dify 已经将这些功能模块化。为什么选择它对于构建知识库问答系统Dify 的优势在于其强大的知识库处理能力。它支持上传多种格式文档TXT, PDF, Word, PPT, Markdown自动进行文本分割、向量化需要配置向量数据库和索引构建。当用户提问时Dify 会自动从知识库中检索相关片段并将其作为上下文连同问题一起发送给大模型从而得到基于私有知识的回答。与 Ollama 的集成Dify 支持将 Ollama 作为其“模型供应商”之一。你只需要在 Dify 的后台配置中填入 Ollama 服务的 API 地址即http://localhost:11434和你想使用的具体模型名称Dify 就能将请求转发给本地的 Ollama 服务。1.3 整体协作流程一次完整的知识库问答背后的数据流如下用户在 Dify 发布的 Web 应用界面提出问题。Dify 服务接收到问题首先在其知识库中进行语义检索找到相关的文本片段。Dify 将这些片段作为上下文与用户原始问题一起按照预设的提示词模板组装成完整的请求。Dify 通过 HTTP 请求将组装好的内容发送到配置好的Ollama API 端点http://localhost:11434/v1/chat/completions。Ollama 服务加载的本地大模型处理请求生成回答。Ollama 将回答返回给 Dify。Dify 将最终回答呈现给用户。理解这个流程后你就会明白后续的配置核心就是确保 Ollama 服务正常启动并且 Dify 能正确连接到它。2. 环境准备与 Ollama 的安装部署我们将分别介绍在 Windows 和 Linux以 Ubuntu 为例系统上的安装步骤。无论哪种系统请确保你的机器至少有 8GB 可用内存对于运行 7B 参数的量化模型是基本要求。如果需要运行更大模型则需要更多内存。2.1 Windows 系统安装 Ollama对于 Windows 用户Ollama 提供了最便捷的安装方式。访问官网下载前往 Ollama 官方 GitHub 发布页面下载最新的 Windows 安装包通常是.exe文件。安装与启动运行下载的安装程序。安装完成后Ollama 通常会以服务形式自动启动并在系统托盘显示图标。你也可以在开始菜单中找到 “Ollama” 并运行它。验证安装打开 PowerShell 或命令提示符CMD输入以下命令ollama --version如果正确显示版本号说明安装成功。拉取模型Ollama 安装后不自带模型需要手动拉取。我们选择一个流行的轻量级模型作为起点例如qwen2.5:7b7B 参数的 Qwen 2.5 模型或llama3.2:3b更小的 3B 参数模型。在命令行中执行ollama pull qwen2.5:7b注意首次拉取模型可能需要较长时间因为需要从网络下载数 GB 的模型文件。如果下载速度慢可以考虑配置镜像源下文会提到。运行模型服务拉取完成后运行以下命令启动模型服务ollama run qwen2.5:7b这个命令会启动一个交互式对话界面。同时Ollama 的 API 服务已经在后台运行。你可以按CtrlC退出交互界面但服务通常仍在后台运行。可以通过访问http://localhost:11434来验证 API 是否可用。2.2 Linux 系统安装 Ollama在 Linux 上通常使用一键安装脚本。使用安装脚本打开终端执行以下命令curl -fsSL https://ollama.com/install.sh | sh该脚本会自动检测你的系统架构下载并安装 Ollama。启动服务安装完成后Ollama 服务通常会自动启动。如果没有可以使用 systemd 命令启动sudo systemctl start ollama # 设置开机自启 sudo systemctl enable ollama验证与拉取模型与 Windows 步骤类似验证版本并拉取模型。ollama --version ollama pull qwen2.5:7b2.3 配置国内镜像源加速下载如果从官方源下载模型速度不理想可以配置环境变量使用国内镜像源加速。Windows在“系统属性 - 环境变量”中为用户或系统添加一个新的环境变量。变量名OLLAMA_MODELS变量值https://mirror.ghproxy.com/https://github.com/ollama/ollama.git修改后需要重启命令行终端或 Ollama 服务使之生效。Linux在终端中执行以下命令然后重启 Ollama 服务。export OLLAMA_MODELShttps://mirror.ghproxy.com/https://github.com/ollama/ollama.git # 如果要永久生效可以将这行命令添加到 ~/.bashrc 或 ~/.zshrc 文件末尾 echo export OLLAMA_MODELShttps://mirror.ghproxy.com/https://github.com/ollama/ollama.git ~/.bashrc source ~/.bashrc sudo systemctl restart ollama配置完成后再次执行ollama pull命令下载速度可能会有显著提升。2.4 验证 Ollama API 服务在继续部署 Dify 之前务必确认 Ollama 的 API 服务工作正常。打开浏览器或使用curl命令测试。使用curl命令测试在终端中执行curl http://localhost:11434/api/generate -d { model: qwen2.5:7b, prompt: Hello, world!, stream: false }如果返回一个包含生成文本的 JSON 响应说明 Ollama 服务运行正常且模型加载成功。如果遇到连接拒绝或模型未找到的错误请检查 Ollama 服务是否正在运行以及模型名是否拼写正确。3. Dify 的本地部署与配置Dify 提供了多种部署方式包括 Docker Compose、纯 Docker 和源码部署。为了最大程度简化环境依赖我们选择使用Docker Compose进行部署这是官方推荐的方式能一次性启动 Dify 所需的所有服务Web 前端、后端 API、数据库等。3.1 安装 Docker 与 Docker Compose如果你的系统尚未安装 Docker需要先进行安装。Windows/macOS直接下载 Docker Desktop 安装包并安装。Docker Desktop 自带 Docker Compose。Linux (Ubuntu/Debian)可以通过官方脚本安装。# 安装 Docker curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo usermod -aG docker $USER # 将当前用户加入 docker 组避免每次用 sudo newgrp docker # 刷新组权限或注销重新登录 # 安装 Docker Compose 插件 sudo apt-get update sudo apt-get install docker-compose-plugin安装完成后运行docker --version和docker compose version验证。3.2 使用 Docker Compose 部署 Dify创建项目目录并下载配置文件mkdir dify cd dify curl -o docker-compose.yaml https://raw.githubusercontent.com/langgenius/dify/main/docker/docker-compose.yaml这个docker-compose.yaml文件定义了 Dify 应用及其依赖的 PostgreSQL、Redis 等服务。启动 Dify 服务docker compose up -d这个命令会拉取所有必要的 Docker 镜像并在后台启动容器。首次运行需要下载镜像请耐心等待。完成后可以使用docker compose ps查看容器状态确保所有服务都是Up状态。访问 Dify 控制台 在浏览器中打开http://localhost:3000。你应该能看到 Dify 的初始化页面。按照提示设置管理员账号和密码完成初始化安装。3.3 在 Dify 中配置 Ollama 作为模型供应商成功登录 Dify 控制台后最关键的一步是让 Dify 知道如何使用我们本地运行的 Ollama 服务。进入模型配置在 Dify 左侧导航栏点击“模型供应商” - “ 添加模型供应商”。选择模型类型在供应商列表中找到并选择“Ollama”。如果列表中没有可能需要检查 Dify 版本或选择“自定义模型供应商OpenAI 兼容”。填写配置信息模型供应商名称自定义例如“本地 Ollama”。模型类型选择“文本生成”。API 地址填写http://host.docker.internal:11434/v1。这是关键配置。host.docker.internal是 Docker 容器内部访问宿主机服务的特殊域名。11434是 Ollama 默认端口。/v1是 Ollama 提供的 OpenAI 兼容 API 路径。API 密钥Ollama 默认不需要密钥留空即可。测试连接并添加模型点击“测试连接”如果显示成功说明 Dify 能够访问到 Ollama 服务。然后在下方“模型列表”区域点击“新建模型”。模型名称填写你在 Ollama 中拉取的模型名称例如qwen2.5:7b。模型类型保持“文本生成”。其他参数如上下文长度、最大 token 数等可以暂时使用默认值或根据模型能力调整例如 Qwen2.5 7B 可支持 32K 上下文。保存并设为默认保存模型供应商配置并将刚刚添加的qwen2.5:7b模型设置为当前工作空间的默认模型。重要提示如果 Dify 运行在 Docker 中而 Ollama 运行在宿主机使用host.docker.internal是标准做法。如果在 Linux 上且 Docker 使用--networkhost模式或者 Ollama 也运行在 Docker 网络中则需要使用不同的地址如http://localhost:11434或容器 IP。如果测试连接失败这是首要排查点。4. 构建与测试你的第一个本地知识库应用现在Ollama 和 Dify 都已就绪并成功连接。接下来我们创建一个真正的知识库问答应用。4.1 创建知识库并上传文档新建知识库在 Dify 控制台点击“知识库” - “ 创建知识库”。配置知识库输入知识库名称如“产品手册”。索引方法选择“高性能”或“高精度”。对于本地测试“高性能”足以满足需求它使用基于词袋的检索方式无需向量数据库。“高精度”需要配置额外的向量数据库如 Qdrant, PGVector效果更好但更复杂。我们首次体验选择“高性能”。其他设置如分段规则、处理方式可暂用默认值。上传文档在创建好的知识库详情页点击“上传文件”。支持 TXT, PDF, DOCX, MD 等格式。你可以上传一份公司简介、产品说明书或任何你想用于问答的文本资料。Dify 会自动对文档进行文本提取、分割和索引构建。4.2 创建文本生成型应用并关联知识库新建应用点击“应用” - “ 创建应用”选择“文本生成型应用”。配置提示词在应用编排页面你会看到一个“对话”节点。点击它进行配置。关联模型确保模型选择为我们之前配置的qwen2.5:7b。编写提示词系统提示词是指导模型行为的核心。例如你可以输入你是一个专业的客服助手请严格根据提供的知识库内容回答用户问题。如果知识库中没有相关信息请如实告知“根据现有资料我无法回答这个问题”不要编造信息。添加上下文在“上下文”区域开启“知识库”开关。然后在下方选择我们刚刚创建的“产品手册”知识库。还可以设置“引用”开关让模型在回答时注明来源段落。预览与测试页面右上角有“预览”按钮。点击后在右侧的聊天窗口直接提问例如“你们公司的主要产品是什么”。Dify 会从“产品手册”知识库中检索相关内容并连同你的问题一起发送给本地的 Ollama 模型最终将生成的答案展示给你。4.3 发布与访问应用测试无误后就可以发布这个应用了。发布应用在应用编排页面点击顶部“发布”按钮。选择“直接发布 API”或“Web 站点”。对于内部使用“Web 站点”会生成一个可分享的链接。访问 Web 应用发布为 Web 站点后Dify 会提供一个 URL。你可以在浏览器中打开这个 URL一个独立的、无需登录的聊天界面就出现了。你可以将这个链接分享给同事他们就可以直接向这个基于本地知识库的 AI 助手提问了。5. 常见问题排查与优化建议部署过程中可能会遇到各种问题以下是按照排查优先级整理的清单。5.1 连接类问题问题现象可能原因检查与解决方式Dify 测试模型连接失败1. Ollama 服务未运行。2. 网络地址/端口错误。3. 防火墙/安全组阻止。1. 在终端运行ollama list确认服务状态。用curl http://localhost:11434/api/tags测试 API。2.重点检查Dify 容器内能否访问宿主机。在 Dify 的 Docker 容器内执行docker exec -it dify-api-1 curl http://host.docker.internal:11434/api/tags。如果失败尝试将配置中的 API 地址改为宿主机的实际 IP如http://192.168.1.x:11434/v1。3. 检查宿主机防火墙是否开放了 11434 端口。模型拉取pull速度极慢网络连接到 Ollama 官方仓库不畅。按照前文所述配置OLLAMA_MODELS环境变量为国内镜像源。Dify 启动失败端口被占用本地 3000、5432PostgreSQL、6379Redis等端口已被其他程序使用。1. 使用netstat -ano | findstr :3000(Win) 或lsof -i:3000(Linux) 查找占用进程并停止。2. 或者修改docker-compose.yaml文件将宿主机端口映射改为其他未占用端口如“8000:3000”。5.2 模型与回答质量问题问题现象可能原因检查与解决方式回答内容与知识库无关胡言乱语1. 知识库检索未生效或未关联。2. 提示词未约束模型行为。3. 模型本身能力或量化版本问题。1. 确认应用编排中已正确关联知识库并开启开关。2. 强化系统提示词明确要求“仅根据知识库内容回答”。3. 尝试换一个更强大的模型如llama3.2:3b或qwen2.5:14b需要更多内存。在 Ollama 中运行ollama pull llama3.2:3b。回答“未找到相关信息”但知识库中明明有1. 检索相似度阈值过高。2. 文档分割不合理关键信息被切碎。3. 索引方法高性能精度不足。1. 在知识库配置或应用编排的检索设置中调低“相似度阈值”。2. 调整知识库的分段规则尝试更小的“分段长度”和“重叠长度”。3. 考虑升级到“高精度”索引这需要部署一个向量数据库如使用 Docker 启动 Qdrant。模型响应速度非常慢1. 模型参数过大硬件CPU/内存跟不上。2. 提示词上下文过长。1. 换用更小的量化模型如-3b,-7b版本或带-q4_0等量化后缀的。2. 在模型配置中限制“最大输出 token 数”。在提示词中精简上下文。5.3 生产环境考量当前部署适合学习和测试。如果计划用于团队或生产环境需要考虑以下优化向量数据库将知识库索引方法从“高性能”切换到“高精度”并部署专业的向量数据库如 Qdrant, Weaviate, PGVector。这能大幅提升检索准确率。Dify 的 Docker Compose 文件也提供了 Qdrant 的选项只需取消注释相关配置并重启。模型性能CPU 推理速度有限。如果追求更快响应可以考虑使用 GPU确保系统有 NVIDIA GPU 并安装好 CUDA 驱动Ollama 会自动利用 GPU 加速。模型量化使用更低精度的量化模型如qwen2.5:7b-q4_0在几乎不损失质量的情况下提升速度、降低内存占用。安全与权限默认的 Dify Web 站点是公开的。生产环境需要配置 HTTPS。在 Dify 中设置应用访问权限密码、API密钥。将服务部署在内网通过 VPN 或网关访问。数据持久化确保 Docker 卷docker-compose.yaml中定义的postgres-data,redis-data等已正确配置避免容器重启后数据丢失。监控与日志定期查看 Docker 容器日志 (docker compose logs -f) 和 Ollama 日志监控服务健康状态和资源使用情况。通过以上步骤你已经成功在本地部署了一个由 Ollama 提供算力、Dify 提供应用框架的私有知识库问答系统。这个系统的优势在于完全自主可控、零持续成本、数据隐私安全。你可以在此基础上继续探索 Dify 更强大的工作流功能集成更多工具或尝试不同的开源模型以构建更符合特定业务需求的 AI 智能体。