部署本地模型
使用 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
4. 完成 Ollama 基本设置
在弹出的窗口中,完成 Ollama 的基本设置
- 确保您的模型名称和类型与步骤 1 中拉取的模型(使用 Docker 部署 Ollama)匹配。例如,(
llama3.2
和chat
) 或 (bge-m3
和embedding
)。 - 在 Ollama base URL 中,填写您在步骤 2 中找到的 URL,并在其后加上
/v1
,例如http://host.docker.internal:11434/v1
、http://localhost:11434/v1
或http://${IP_OF_OLLAMA_MACHINE}:11434/v1
。 - 可选:如果您的模型包含图像到文本模型,请开启 是否支持 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 部署本地模型,例如 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 基本设置
输入一个可访问的 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
- 激活
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 操作系统(Kernel 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 部署本地模型部分中概述的步骤相同
使用 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 下载的模型。