【中级】部署 Dify 本地知识库
更新日志
| 版本 | 日期 | 变更描述 |
|---|---|---|
| 1.0.0 | 2026-03-04 | 初始版本,包含在 AI 算力本 MTT AIBOOK(型号 A141)上安装和配置构建本地知识库环境依赖,以及配置本地知识库的完整指南 |
1. 项目简介
本教程旨在指导开发者在 AI 算力本 MTT AIBOOK 上基于 Dify 和本地大模型搭建自己的本地个人知识库。您可以基于本项目的内容,学会把自己的个人资料、过往输出文章、日记等所有个人信息上传到本地知识库,打造自己的私人助理。
本项目将按照以下主线展开:
- 安装 docker
- 安装 docker-compose
- 部署 Ollama
- 部署 vLLM
- 部署 Dify
- 创建 Dify 应用
- 创建 Dify 知识库
- 将本地模型接入 Dify 工作流
并最终结合最佳实践,带您快速上手完成本地个人知识库的搭建。
docker 简介: Docker 为 Dify 提供了一键式的容器化部署方案。它将 Dify 及其所需的数据库、中间件等组件完整打包,确保应用在不同服务器上都能实现"开箱即用"的一致性体验。
Ollama 简介: Ollama 是一个用于在本地设备上运行大语言模型的工具,可以一键下载并运行如 Llama、Qwen、Mistral 等模型。它让本地部署 AI 变得非常简单,适合个人开发者或企业在本地环境运行 AI。值得注意的是,当前在 MTT AIBOOK 上,Ollama 暂未支持 GPU 加速,只能使用 CPU 推理。本文档将基于 Ollama 运行文本向量 化模型。
vLLM 简介: vLLM 是一个高性能的大模型推理框架,专门用于部署和服务大语言模型。它通过 PagedAttention 等优化技术显著提升推理吞吐量和显存利用率,当前在 MTT AIBOOK 已支持基于 vLLM 对推理过程进行 GPU 加速。本文档将基于 vLLM 运行大语言模型。
Dify 简介: Dify 是一个开源的 AI 应用开发平台,可以通过可视化方式快速构建 AI 助手、RAG 知识库、AI 工作流等应用。它支持接入多种大模型,并提供完整的应用管理和数据管理能力。
难度:中级,适合有编程基础的开发者体验
2. 前置条件
在开始本教程之前,请确保您已满足以下所有条件:
- 硬件要求:
- AI 算力本 MTT AIBOOK,型号 A141
- 网络连接(用于拉取 docker 镜像、下载模型及依赖包)
- 充足的存储空间
- 软件要求:
- MTT AIBOOK 操作系统 AIOS(1.3.3-B17)及以上版本(文档基于 1.3.3-B17 版本系统操作,并非强制性要求必须 1.3.3-B17 及以上版本)
- 已安装 docker-compose(可通过本教程中的步骤进行安装)
- 已安装 Ollama(可通过本教程中的步骤进行安装)
3. 环境部署
本章节将详细描述如何创建工作目录、安装 docker、安装 docker-compose、通过 Ollama 拉取向量模型并推理、通过 vLLM 基于 GPU 加速推理大模型、部署 Dify、创建 Dify 应用、创建 Dify 知识库并最终将本地模型接入 Dify 工作流。
3.1 创建工作目录
创建一个专门用于本地知识库搭建的工作目录,有助于您更好地管理相关文件和资源。
执行以下命令即可完成工作目录的创建:
mkdir ~/local-know-base && cd ~/local-know-base
3.2 安装 docker
若您的设备已安装过 docker,可跳过此步骤。
执行以下命令即可完成 docker 的安装:
sudo apt update
sudo apt-get install \
docker.io=24.0.7-0ubuntu2~22.04.1 \
containerd=1.7.2-0ubuntu1~22.04.1
执行完以下命令后,需要重启设备生效:
sudo usermod -aG docker $USER
以上操作全部执行完毕后,可以执行以下命令验证 docker 是否成功安装:
docker --version
![]()
3.3 安装 docker-compose
docker-compose 是一个用于定义和运行多容器 Docker 应用程序的工具,它可以帮助我们更方便地管理 Dify 的容器化部署。
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.6/docker-compose-linux-aarch64" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
3.4 安装 Ollama
sudo apt install curl
curl -fsSL https://ollama.com/install.sh | OLLAMA_VERSION=0.15.1 sh
安装完成后,打开终端,输入以下命令确认版本:
ollama --version
如果输出为 ollama version is 0.15.1,说明安装成功。
3.5 拉取向量模型 nomic-embed-text
向量模型 nomic-embed-text 用于将文档内容转换为向量表示,以便进行语义搜索和相似度计算。拉取该模型是构建本地知识库的必要步骤。
ollama pull nomic-embed-text
3.6 部署 vLLM
新建 Conda 环境(推荐)
下载 Miniforge3 (默认带 Python 3.10) for Linux-aarch64:
chmod +x Miniforge3-Linux-aarch64.sh
./Miniforge3-Linux-aarch64.sh
安装过程中需要输入 yes,并回车确认安装路径,默认安装路径在 /home/$User 下。
source ~/.bashrc
创建一个 Python 3.10 的环境,安装过程中需要输入 y,并回车确认:
conda create -n localknowbase python=3.10
conda activate localknowbase
获取 vLLM 安装包及其环境安装包
wget -c https://mt-ai-data.tos-cn-shanghai.volces.com/vllm_musa/v1.3/release_M1000_1.3.0.003/release_1.3.0.003-vllm_musa_1.3-torch_2.1.1.tar.gz
tar zxvf release_1.3.0.003-vLLM_musa_1.3-torch_2.1.1.tar.gz
cd release_1.3.0.003-vLLM_musa_1.3-torch_2.1.1
安装 vLLM 环境依赖
安装过程中可能需要输入 y,并回车确认:
pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
pip3 install torch-2.5.0*
pip3 install torch_musa-2.1.1*
pip3 install torchaudio-2.5.0a0*
pip3 install torchvision-0.20.0a0*
pip3 install -r requirements.txt
pip3 install triton-3.1.0-cp310-cp310-Linux_aarch64.whl --force-reinstall
sudo apt update
sudo apt install python3-pip git cmake wget build-essential g++ libstdc++-12-dev libnuma-dev
安装 vLLM MUSA
pip3 install vLLM-0.9.2*
pip3 install vLLM_musa-1.3+m1000-cp310-cp310-Linux_aarch64.whl
以上操作全部执行完毕后,可以执行以下命令验证 vLLM 是否成功安装(注意需要在 localknowbase 的虚拟环境下执行):
cd /home && python3 -c "from vLLM_musa import _musa_custom_ops;_musa_custom_ops.decode_mla"
正常输出如下:

3.7 部署 Dify
首先,克隆 Dify 官方开源仓库到工作目录:
cd ~/local-know-base
git clone https://github.com/langgenius/dify.git
Dify 使用 .env 文件管理配置。我们通过复制示例文件来创建它:
cd ~/local-know-base/dify/docker
cp .env.example .env
由于我们只是将 Dify 运行在本地,因此无需修改 .env 文件的任何内容。
随后,我们使用 docker-compose 在后台启动 .env 文件中记录的所有相关服务(包括数据库、向量数据库、API 和 Web 前端):
docker-compose up -d
注:此步骤会从 Docker Hub 拉取多个镜像,耗时取决于网络带宽。

镜像拉取结束后,打开浏览器,输入网址:http://localhost
即可进入本地部署的 Dify 界面,首次进入页面,系统会提示您设置管理员邮箱、用户名和密码。

注册成功后,登录管理员账户,进入 Dify 主界面,如下所示:

3.8 使 Ollama 服务能够接受来自 Dify 的连接请求
由于 Ollama 默认只监听 127.0.0.1,如果不配置 Ollama 服务使其能够接受来自外部网络的连接请求,可能会导致 Dify 无法正常向 Ollama 发起请求。
打开终端后,执行:
sudo mkdir -p /etc/systemd/system/ollama.service.d && \
echo '[Service] Environment="OLLAMA_HOST=0.0.0.0"' | sudo tee /etc/systemd/system/ollama.service.d/override.conf
sudo systemctl daemon-reload
sudo systemctl restart ollama
即可使得 Ollama 能够正常处理来自 Dify 的请求。
3.9 下载 Qwen-8B 并启动 vLLM 服务
若您已经下载好 Qwen-8B 模型,则跳过该步骤。
打开终端后,执行:
# 若 lfs 未下载,则执行以下命令下载 lfs
git lfs install
git clone https://www.modelscope.cn/Qwen/Qwen3-8B.git

由于模型较大,需要一定等待时间。
模型下载完成后,我们在与模型存放文件夹内创建一个 vLLM 框架启动脚本。

修改其文件名为:run_vllm.sh
脚本文件内容如下:
run_vllm.sh:
#!/bin/bash
python -m vLLM.entrypoints.openai.api_server \
--model ***/path/to***/Qwen3-8B \
--served-model-name qwen3-8b \
--host 0.0.0.0 \
--port 8000 \
--gpu-memory-utilization 0.9 \
--trust-remote-code
***/path/to*** 需要更改为 Qwen3-8B 模型实际存放路径,此处由于我们将 run_vllm.sh 脚本与 Qwen3-8B 模型存放在同一文件夹内,因此 ***/path/to*** 可以替换为 .。

run_vllm.sh 脚本创建成功后,我们在脚本存放目录下单击右键,打开终端

随后执行命令(请确保每次执行 run_vllm.sh 脚本时,都处于 localknowbase 的虚拟环境中):
conda activate localknowbase
bash run_vllm.sh
启动 vLLM 框架。
3.10 Dify 接入文本向量化模型
在 Dify 中配置文本向量化模型(Embedding Model)是实现 RAG(检索增强生成)功能的关键步骤。通过将文档内容转换为向量表示,系统能够进行语义搜索和相似度计算,从而实现基于知识库的精准问答。
Dify 支持通过 Ollama 接入本地部署的向量模型。由于我们在 3.4 节已经通过 Ollama 拉取了 nomic-embed-text 模型,现在只需在 Dify 中完成配置即可。
以下是 Dify 接入 Ollama 文本向量化模型的详细步骤:
首先,确保 Ollama 服务已正确配置为接受外部连接。在 3.8 节中,我们已经完成了 Ollama 服务的配置,使其能够监听 0.0.0.0 地址。您可以通过以下命令验证 Ollama 服务状态:
sudo systemctl status ollama
如果服务正常运行,您应该看到 active (running) 状态。
接下来,在 Dify 中配置 Embedding 模型:
- 登录 Dify 后,点击右上角个人头像,选择 "设置" 进入设置页面
- 在左侧菜单中选择 "模型供应商",进入模型配置页面
- 在搜索框中输入 "ollama",找到 Ollama 插件并点击安装。如果之前配置 LLM 时已经安装过 Ollama 插件,则可以跳过此步骤
- 安装完成后,点击 "添加模型" 按钮,在弹出的对话框中进行如下配置:
- 模型类型:选择
Text Embedding(文本嵌入) - 模型名称:输入
nomic-embed-text - 基础 URL:输入
http://172.17.0.1:11434
- 模型类型:选择
- 点击 "保存" 完成配置
配置参数说明:
- 模型类型:Text Embedding 表示这是一个文本向量化模型,用于将文本转换为向量表示
- 模型名称:nomic-embed-text 是 Ollama 提供的高性能向量模型,支持多语言文本嵌入
- 基础 URL:172.17.0.1 是 Docker 默认的网关地址,Dify 容器通过此地址访问宿主机上的 Ollama 服务。11434 是 Ollama 的默认端口
验证配置是否成功:
配置完成后,您可以在模型供应商页面看到已添加的 nomic-embed-text 模型。模型名称旁会显示 Text Embedding 标签,表示这是一个文本向量化模型。
此时,您已经成功完成了 Dify 接入本地文本向量化模型的配置。接下来,在创建知识库时,Dify 将自动使用此模型对上传的文档进行向量化处理,为后续的语义检索和问答提供基础支持。
技术原理说明:
文本向量化(Text Embedding)是将文本转换为高维数值向量的过程。nomic-embed-text 模型基于 Transformer 架构,能够将输入文本编码为固定长度的稠密向量。这些向量捕获了文本的语义信息,使得语义相似的文本在向量空间中距离较近。
在 RAG 流程中,当用户上传文档时:
- 文档被切分为适当大小的文本块
- 每个文本块通过 Embedding 模型转换为向量
- 向量被存储到向量数据库(Weaviate)中
- 用户提问时,问题也被转换为向量
- 系统在向量数据库中检索最相似的文本块
- 检索结果作为上下文提供给 LLM 生成回答
这种架构确保了知识库问答的准确性和相关性,同时所有数据处理都在本地完成,充分保护用户隐私。
4. 最佳实践
经过之前的努力,您已经成功在 MTT AIBOOK 上部署了 Dify,并为我们基于 Dify 搭建本地个人知识库做好的充分准备。此时我们可以发挥 MTT AIBOOK 本地算力的强大能力,基于 Dify 与本地模型搭建个人本地知识库。由于模型均运行于本机,因此能够最大程度保证隐私,所有数据不上云。