跳到主要内容

部署本地模型 (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 中:

add ollama

4. 完成基本的 Ollama 设置

在弹出的窗口中,完成 Ollama 的基本设置:

  1. 确保您的模型名称 and 类型与步骤 1(使用 Docker 部署 Ollama)中拉取的模型一致。例如,(llama3.2 对应 chat) 或 (bge-m3 对应 embedding)。
  2. 输入 Ollama 的基准 URL (Base URL),即 http://host.docker.internal:11434http://localhost:11434http://${IP_OF_OLLAMA_MACHINE}:11434
  3. 可选:如果您的模型包含图像转文本模型,请打开 是否支持 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 部署本地模型(例如 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 中:

add xinference

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

  1. 激活 llm-cpp Conda 环境并初始化 Ollama:
conda activate llm-cpp
init-ollama
  1. 如果安装的 ipex-llm[cpp] 需要升级 Ollama 二进制文件,请删除旧的二进制文件,并使用 init-ollama (Linux) 或 init-ollama.bat (Windows) 重新初始化 Ollama。

    在您当前的目录中将出现一个指向 Ollama 的符号链接,您可以按照标准 Ollama 命令使用此可执行文件。

2.3 启动 Ollama 服务

  1. 将环境变量 OLLAMA_NUM_GPU 设置为 999,以确保模型的全部层都在 Intel GPU 上运行;否则,部分层可能会默认在 CPU 上运行。

  2. 为了在 Linux 操作系统(内核 6.2)上使用 Intel Arc™ A 系列显卡获得最佳性能,请在启动 Ollama 服务之前设置以下环境变量:

    export SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS=1
  3. 启动 Ollama 服务:

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
提示

要使 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 模型

./ollama run qwen2:latest

4. 配置 RAGFlow

要在 RAGFlow 中启用经 IPEX-LLM 加速的 Ollama,您还必须在 RAGFlow 中完成相应配置。具体步骤与使用 Ollama 部署本地模型一节中所述的步骤完全相同:

  1. 添加 Ollama
  2. 完成基本的 Ollama 设置
  3. 更新系统模型设置
  4. 更新聊天配置

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 -> 添加,配置如下:

add vllm

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

5.3 使用 vLLM 聊天模型进行对话

新建聊天 -> 创建会话 -> 开始对话,如下所示: chat

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 -> 添加,配置如下:

add vllm

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