部署本地模型 (Deploy Local Models)
使用 Ollama、Xinference、vLLM、SGLang、GPUStack 或其他框架部署和运行本地模型。
RAGFlow 支持使用 Ollama、Xinference、IPEX-LLM、vLLM、SGLang、GPUStack 或 Jina 在本地部署模型。如果您有可供利用的本地部署模型,或者希望启用 GPU 或 CUDA 进行推理加速,您可以将 Ollama 或 Xinference 绑定到 RAGFlow 中,并使用其中之一作为本地“服务器”来与您的本地模型进行交互。
RAGFlow 与 Ollama 和 Xinference 无缝集成,无需进行额外的环境配置。您可以使用它们在 RAGFlow 中部署两类本地模型:聊天模型和嵌入模型 (Embedding Model)。
本用户指南并不打算过多涵盖 Ollama 或 Xinference 的安装或配置细节;其重点在于 RAGFlow 内部的配置。要获取最新信息,您可能需要查阅 Ollama 或 Xinference 的官方网站。
使用 Ollama 部署本地模型
Ollama 使您能够运行在本地部署的开源大语言模型 (Large Language Model, LLM)。它将模型权重、配置和数据打包进一个由 Modelfile 定义的单一包中,并优化了安装与配置,包括 GPU 的使用。
- 有关下载 Ollama 的信息,请参见此处。
- 有关支持的模型及其变体的完整列表,请参见 Ollama 模型库。
1. 使用 Docker 部署 Ollama
Ollama 可以从二进制文件安装或使用 Docker 部署。以下是使用 Docker 部署的说明:
$ sudo docker run --name ollama -p 11434:11434 ollama/ollama
> time=2024-12-02T02:20:21.360Z level=INFO source=routes.go:1248 msg="Listening on [::]:11434 (version 0.4.6)"
> time=2024-12-02T02:20:21.360Z level=INFO source=common.go:49 msg="Dynamic LLM libraries" runners="[cpu cpu_avx cpu_avx2 cuda_v11 cuda_v12]"
确保 Ollama 正在监听所有 IP 地址:
$ sudo ss -tunlp | grep 11434
> tcp LISTEN 0 4096 0.0.0.0:11434 0.0.0.0:* users:(("docker-proxy",pid=794507,fd=4))
> tcp LISTEN 0 4096 [::]:11434 [::]:* users:(("docker-proxy",pid=794513,fd=4))
根据需要拉取模型。我们建议您从 llama3.2(一个 3B 的聊天模型)和 bge-m3(一个 567M 的嵌入模型)开始:
$ sudo docker exec ollama ollama pull llama3.2
> pulling dde5aa3fc5ff... 100% ▕████████████████▏ 2.0 GB
> success
$ sudo docker exec ollama ollama pull bge-m3
> pulling daec91ffb5dd... 100% ▕████████████████▏ 1.2 GB
> success
2. 找到 Ollama URL 并确保其可访问
- 如果 RAGFlow 运行在 Docker 中,本地主机 (localhost) 会被映射到 RAGFlow Docker 容器内为
host.docker.internal。如果 Ollama 在同一台主机上运行,则 Ollama 的正确 URL 将是http://host.docker.internal:11434/,您应该使用以下命令检查是否可以从 RAGFlow 容器内部访问 Ollama:
$ sudo docker exec -it docker-ragflow-cpu-1 bash
$ curl http://host.docker.internal:11434/
> Ollama is running
- 如果 RAGFlow 是从源码启动的,且 Ollama 与 RAGFlow 运行在同一台主机上,请检查是否可以从 RAGFlow 的主机访问 Ollama:
$ curl http://localhost:11434/
> Ollama is running
- 如果 RAGFlow 和 Ollama 运行在不同的机器上,请检查是否可以从 RAGFlow 的主机访问 Ollama:
$ curl http://${IP_OF_OLLAMA_MACHINE}:11434/
> Ollama is running
3. 添加 Ollama
在 RAGFlow 中,点击页面右上角的头像/Logo > 模型服务商 (Model providers),然后将 Ollama 添加到 RAGFlow 中:

4. 完成基本的 Ollama 设置
在弹出的窗口中,完成 Ollama 的基本设置:
- 确保您的模型名称 and 类型与步骤 1(使用 Docker 部署 Ollama)中拉取的模型一致。例如,(
llama3.2对应chat) 或 (bge-m3对应embedding)。 - 输入 Ollama 的基准 URL (Base URL),即
http://host.docker.internal:11434、http://localhost:11434或http://${IP_OF_OLLAMA_MACHINE}:11434。 - 可选:如果您的模型包含图像转文本模型,请打开 是否支持 Vision? (Does it support Vision?) 下的开关。
不正确的基准 URL 设置将触发以下错误:
Max retries exceeded with url: /api/chat (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0xffff98b81ff0>: Failed to establish a new connection: [Errno 111] Connection refused'))
5. 更新系统模型设置
点击您的头像/Logo > 模型服务商 (Model providers) > 系统模型设置 (System Model Settings) 来更新您的模型:
- 现在,您应该能够在 聊天模型 (Chat model) 下的下拉列表中找到 llama3.2,并在 嵌入模型 (Embedding model) 下的下拉列表中找到 bge-m3。
6. 更新聊天配置
在**聊天配置 (Chat Configuration)**中相应地更新您的模型。
使用 Xinference 部署本地模型
Xorbits Inference (Xinference) 使您能够充分释放前沿 AI 模型的全部潜力。
- 有关安装 Xinference 的信息,请参见此处。
- 有关支持模型的完整列表,请参见内置模型 (Builtin Models)。
要使用 Xinference 部署本地模型(例如 Mistral):
1. 检查防火墙设置
确保您主机的防火墙允许端口 9997 上的入站连接。
2. 启动 Xinference 实例
$ xinference-local --host 0.0.0.0 --port 9997
3. 启动您的本地模型
启动您的本地模型 (Mistral),确保将 ${quantization} 替换为您选择的量化方法:
$ xinference launch -u mistral --model-name mistral-v0.1 --size-in-billions 7 --model-format pytorch --quantization ${quantization}
4. 添加 Xinference
在 RAGFlow 中,点击页面右上角的头像/Logo > 模型服务商 (Model providers),然后将 Xinference 添加到 RAGFlow 中:

5. 完成基本的 Xinference 设置
输入可访问的基准 URL,例如 http://<your-xinference-endpoint-domain>:9997/v1。
对于重排模型,请使用
http://<your-xinference-endpoint-domain>:9997/v1/rerank作为基准 URL。
6. 更新系统模型设置
点击您的头像/Logo > 模型服务商 (Model providers) > 系统模型设置 (System Model Settings) 来更新您的模型。
现在,您应该能够在 聊天模型 (Chat model) 下的下拉列表中找到 mistral。
7. 更新聊天配置
在**聊天配置 (Chat Configuration)**中相应地更新您的聊天模型:
使用 IPEX-LLM 部署本地模型
IPEX-LLM 是一个 PyTorch 库,用于在本地 Intel CPU 或 GPU(包括集成显卡 iGPU 以及 Arc、Flex 和 Max 等独立显卡)上以低延迟运行 LLM。它支持在 Linux 和 Windows 系统上运行 Ollama。
要使用受 IPEX-LLM 加速的 Ollama 部署本地模型(例如 Qwen2):
1. 检查防火墙设置
确保您主机的防火墙允许端口 11434 上的入站连接。例如:
sudo ufw allow 11434/tcp
2. 使用 IPEX-LLM 启动 Ollama 服务
2.1 安装适用于 Ollama 的 IPEX-LLM
IPEX-LLM 支持在 Linux 和 Windows 系统上运行 Ollama。
有关为 Ollama 安装 IPEX-LLM 的详细信息,请参见 Intel GPU 上通过 IPEX-LLM 运行 llama.cpp 指南:
安装完成后,您应该已创建了一个 Conda 环境(例如 llm-cpp),用于使用 IPEX-LLM 运行 Ollama 命令。
2.2 初始化 Ollama
- 激活
llm-cppConda 环境并初始化 Ollama:
- Linux
- Windows
conda activate llm-cpp
init-ollama
在 Miniforge Prompt 中以管理员权限运行这些命令:
conda activate llm-cpp
init-ollama.bat
-
如果安装的
ipex-llm[cpp]需要升级 Ollama 二进制文件,请删除旧的二进制文件,并使用init-ollama(Linux) 或init-ollama.bat(Windows) 重新初始化 Ollama。在您当前的目录中将出现一个指向 Ollama 的符号链接,您可以按照标准 Ollama 命令使用此可执行文件。
2.3 启动 Ollama 服务
-
将环境变量
OLLAMA_NUM_GPU设置为999,以确保模型的全部层都在 Intel GPU 上运行;否则,部分层可能会默认在 CPU 上运行。 -
为了在 Linux 操作系统(内核 6.2)上使用 Intel Arc™ A 系列显卡获得最佳性能,请在启动 Ollama 服务之前设置以下环境变量:
export SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS=1 -
启动 Ollama 服务:
- Linux
- Windows
export OLLAMA_NUM_GPU=999
export no_proxy=localhost,127.0.0.1
export ZES_ENABLE_SYSMAN=1
source /opt/intel/oneapi/setvars.sh
export SYCL_CACHE_PERSISTENT=1
./ollama serve
在 Miniforge Prompt 中运行以下命令:
set OLLAMA_NUM_GPU=999
set no_proxy=localhost,127.0.0.1
set ZES_ENABLE_SYSMAN=1
set SYCL_CACHE_PERSISTENT=1
ollama serve
要使 Ollama 服务能够接受来自所有 IP 地址的连接,请使用 OLLAMA_HOST=0.0.0.0 ./ollama serve 而不单单是 ./ollama serve。
控制台将显示类似于以下的信息:

3. 拉取并运行 Ollama 模型
3.1 拉取 Ollama 模型
在 Ollama 服务运行的情况下,打开一个新终端并运行 ./ollama pull <model_name> (Linux) 或 ollama.exe pull <model_name> (Windows) 来拉取所需的模型。例如 qwen2:latest:
3.2 运行 Ollama 模型
- Linux
- Windows
./ollama run qwen2:latest
ollama run qwen2:latest
4. 配置 RAGFlow
要在 RAGFlow 中启用经 IPEX-LLM 加速的 Ollama,您还必须在 RAGFlow 中完成相应配置。具体步骤与使用 Ollama 部署本地模型一节中所述的步骤完全相同:
5. 部署 vLLM
Ubuntu 22.04/24.04
pip install vllm
5.1 vLLM 运行最佳实践
nohup vllm serve /data/Qwen3-8B --served-model-name Qwen3-8B-FP8 --dtype auto --port 1025 --gpu-memory-utilization 0.90 --tool-call-parser hermes --enable-auto-tool-choice > /var/log/vllm_startup1.log 2>&1 &
您可以获取日志信息:
tail -f -n 100 /var/log/vllm_startup1.log
当您看到以下内容时,表示 vLLM 引擎已准备就绪,可以访问了:
Starting vLLM API server 0 on http://0.0.0.0:1025
Started server process [19177]
Application startup complete.
5.2 通过 WebUI 将 RAGFlow 与 vLLM 聊天/嵌入/重排模型集成
系统设置 -> 模型服务商 (Model providers) -> 搜索 -> vLLM -> 添加,配置如下:

选择 vLLM 聊天模型作为默认的 LLM 模型,如下所示:

5.3 使用 vLLM 聊天模型进行对话
新建聊天 -> 创建会话 -> 开始对话,如下所示:

6. 部署 GPUStack
Ubuntu 22.04/24.04
6.1 GPUStack 运行最佳实践
sudo docker run -d --name gpustack \
--restart unless-stopped \
-p 80:80 \
-p 10161:10161 \
--volume gpustack-data:/var/lib/gpustack \
gpustack/gpustack
您可以获取 Docker 信息:
docker ps
当看到以下内容时,表示引擎已准备就绪,可以访问了:
root@gpustack-prod:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
abf59be84b1a gpustack/gpustack "/usr/bin/entrypoint…" 6 hours ago Up 6 hours 0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:10161->10161/tcp, [::]:10161->10161/tcp gpustack
6.2 通过 WebUI 将 RAGFlow 与 GPUStack 聊天/嵌入/重排模型集成
系统设置 -> 模型服务商 (Model providers) -> 搜索 -> GPUStack -> 添加,配置如下:

选择 GPUStack 聊天模型作为默认的 LLM 模型,如下所示:
