跳转到主内容
版本:开发版

部署本地模型

使用 Ollama、Xinference 或其他框架部署并运行本地模型。


RAGFlow 支持使用 Ollama、Xinference、IPEX-LLM 或 jina 在本地部署模型。如果您有本地部署的模型需要利用,或者希望启用 GPU 或 CUDA 进行推理加速,可以将 Ollama 或 Xinference 绑定到 RAGFlow 中,并将它们中的任何一个用作与本地模型交互的本地“服务器”。

RAGFlow 与 Ollama 和 Xinference 无缝集成,无需进一步的环境配置。您可以使用它们在 RAGFlow 中部署两种类型的本地模型:对话模型和 Embedding 模型。

注意

本用户指南不打算涵盖 Ollama 或 Xinference 的过多安装或配置细节;其重点是在 RAGFlow 内部的配置。有关最新信息,您可能需要查看 Ollama 或 Xinference 的官方网站。

使用 Ollama 部署本地模型

Ollama 允许您运行本地部署的开源大型语言模型。它将模型权重、配置和数据捆绑到一个由 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 Embedding 模型)开始。

$ 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/`,您应该通过以下命令检查 Ollama 是否可以从 RAGFlow 容器内部访问:
$ sudo docker exec -it ragflow-server bash
$ curl http://host.docker.internal:11434/
> Ollama is running
  • 如果 RAGFlow 是从源代码启动的,并且 Ollama 与 RAGFlow 在同一台主机上运行,请检查 Ollama 是否可以从 RAGFlow 的主机访问。
$ curl https://:11434/
> Ollama is running
  • 如果 RAGFlow 和 Ollama 在不同的机器上运行,请检查 Ollama 是否可以从 RAGFlow 的主机访问。
$ curl http://${IP_OF_OLLAMA_MACHINE}:11434/
> Ollama is running

3. 添加 Ollama

在 RAGFlow 中,点击页面右上角的您的头像 > 模型提供商,然后将 Ollama 添加到 RAGFlow。

add ollama

4. 完成 Ollama 基本设置

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

  1. 确保您的模型名称和类型与步骤 1(使用 Docker 部署 Ollama)中拉取的一致。例如,(llama3.2chat)或(bge-m3embedding)。
  2. 在 Ollama 基础 URL 中,填入您在步骤 2 中找到的 URL,并在其后加上 /v1,即 http://host.docker.internal:11434/v1, https://:11434/v1http://${OLLAMA_MACHINE_IP}:11434/v1
  3. 可选:如果您的模型包含图像到文本的功能,请打开**是否支持多模态?**下的开关。
警告

不正确的基础 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. 更新系统模型设置

点击您的头像 > 模型提供商 > 系统模型设置 来更新您的模型。

  • 您现在应该能在**对话模型**下的下拉列表中找到 llama3.2,在 Embedding 模型下的下拉列表中找到 bge-m3
  • 如果您的本地模型是 Embedding 模型,您应该在 Embedding 模型下找到它。

6. 更新对话配置

在**对话配置**中相应地更新您的模型。

使用 Xinference 部署本地模型

Xorbits Inference (Xinference) 使您能够释放尖端 AI 模型的全部潜力。

说明
  • 关于安装 Xinference Ollama 的信息,请参见这里
  • 有关支持的模型的完整列表,请参见内置模型

要使用 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 中,点击页面右上角的您的头像 > 模型提供商,然后将 Xinference 添加到 RAGFlow。

add xinference

5. 完成 Xinference 基本设置

输入一个可访问的基础 URL,例如 `http://:9997/v1`。

对于 Rerank 模型,请使用 `http://:9997/v1/rerank` 作为基础 URL。

6. 更新系统模型设置

点击您的头像 > 模型提供商 > 系统模型设置 来更新您的模型。

您现在应该能在**对话模型**下的下拉列表中找到 mistral

如果您的本地模型是 Embedding 模型,您应该在 Embedding 模型下找到您的本地模型。

7. 更新对话配置

在**对话配置**中相应地更新您的对话模型。

如果您的本地模型是 Embedding 模型,请在您的知识库配置页面上更新它。

使用 IPEX-LLM 部署本地模型

IPEX-LLM 是一个 PyTorch 库,用于在本地 Intel CPU 或 GPU(包括 iGPU 或 Arc、Flex 和 Max 等独立 GPU)上以低延迟运行 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 OS(内核 6.2)上的 Intel Arc™ A-Series Graphics 上获得最佳性能,请在启动 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. 更新对话配置

使用 jina 部署本地模型

要使用 jina 部署本地模型,例如 gpt2

1. 检查防火墙设置

确保您的主机的防火墙允许在端口 12345 上的入站连接。

sudo ufw allow 12345/tcp

2. 安装 jina 包

pip install jina

3. 部署本地模型

步骤 1:导航到 rag/svr 目录。

cd rag/svr

步骤 2:运行 jina_server.py,指定模型的名称或其本地目录。

python jina_server.py  --model_name gpt2

该脚本仅支持从 Hugging Face 下载的模型。