部署本地模型
使用 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。
4. 完成 Ollama 基本设置
在弹出的窗口中,完成 Ollama 的基本设置。
- 确保您的模型名称和类型与步骤 1(使用 Docker 部署 Ollama)中拉取的一致。例如,(
llama3.2
和chat
)或(bge-m3
和embedding
)。 - 在 Ollama 基础 URL 中,填入您在步骤 2 中找到的 URL,并在其后加上
/v1
,即http://host.docker.internal:11434/v1
,https://:11434/v1
或http://${OLLAMA_MACHINE_IP}:11434/v1
。 - 可选:如果您的模型包含图像到文本的功能,请打开**是否支持多模态?**下的开关。
不正确的基础 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 部署本地模型,例如 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。
5. 完成 Xinference 基本设置
输入一个可访问的基础 URL,例如 `http://
对于 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
- 激活 `llm-cpp` Conda 环境并初始化 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 OS(内核 6.2)上的 Intel Arc™ A-Series Graphics 上获得最佳性能,请在启动 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 部署本地模型*部分中概述的步骤相同:
使用 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 下载的模型。