跳到主要内容
版本: DEV

部署本地模型

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


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

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

注意

本用户指南不打算详细介绍 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 嵌入模型) 开始

$ 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 ragflow-server bash
$ curl http://host.docker.internal:11434/
> Ollama is running
  • 如果 RAGFlow 从源代码启动且 Ollama 运行在与 RAGFlow 相同的主机上,请检查 Ollama 是否可从 RAGFlow 的主机访问
$ curl http://localhost: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 base URL 中,填写您在步骤 2 中找到的 URL,并在其后加上 /v1,例如 http://host.docker.internal:11434/v1http://localhost:11434/v1http://${IP_OF_OLLAMA_MACHINE}:11434/v1
  3. 可选:如果您的模型包含图像到文本模型,请开启 是否支持 Vision? 下方的开关。
警告

不正确的 base 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,并在 嵌入模型 下拉列表中找到 bge-m3
  • 如果您的本地模型是嵌入模型,您应该能在 嵌入模型 下找到它。

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 基本设置

输入一个可访问的 base URL,例如 http://<your-xinference-endpoint-domain>:9997/v1

对于 rerank 模型,请使用 http://<your-xinference-endpoint-domain>:9997/v1/rerank 作为 base URL。

6. 更新系统模型设置

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

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

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

7. 更新对话配置

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

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

使用 IPEX-LLM 部署本地模型

IPEX-LLM 是一个 PyTorch 库,用于在本地 Intel CPU 或 GPU(包括集成 GPU 或 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 操作系统(Kernel 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. 更新对话配置

使用 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 下载的模型。