部署本地LLM
使用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使用。
1. 使用docker部署ollama
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可访问
如果RAGFlow在Docker中运行,并且Ollama在同一台主机上运行,请检查是否可以从RAGFlow容器内部访问ollama:
sudo docker exec -it ragflow-server bash
root@8136b8c3e914:/ragflow# curl http://host.docker.internal:11434/
Ollama is running
如果RAGFlow从源代码运行并且Ollama在同一台主机上运行,请检查RAGFlow主机是否可以访问ollama:
curl http://localhost:11434/
Ollama is running
如果RAGFlow和Ollama运行在不同的机器上,请检查RAGFlow主机是否可以访问ollama:
curl http://${IP_OF_OLLAMA_MACHINE}:11434/
Ollama is running
4. 添加Ollama
在RAGFlow中,点击页面右上角的您的徽标 > 模型提供者 并将Ollama添加到RAGFlow中:
5. 完成基本的Ollama设置
在弹出窗口中,完成Ollama的基本设置:
- 确保模型名称和类型与步骤1中提取的匹配,例如,(
llama3.2
,chat
), (bge-m3
,embedding
). - 确保基础URL与第2步确定的URL匹配。
- 可选:如果您的模型包含图像到文本模型,请在是否支持视觉?下的切换开关上切换。
不正确的基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'))
6. 更新系统模型设置
点击您的徽标 > 模型提供者 > 系统模型设置 以更新您的模型:
你现在应该能够在Chat model下的下拉列表中找到llama3.2,并在Embedding model下的下拉列表中找到bge-m3。
如果你的本地模型是一个嵌入模型,你应该在嵌入模型下找到你的本地模型。
7. 更新聊天配置
在聊天配置中相应地更新您的聊天模型:
如果您的本地模型是一个嵌入模型,请在知识库的配置页面上更新它。
使用Xinference部署本地模型
Xorbits Inference (Xinference) 使您能够充分发挥尖端AI模型的全部潜力。
要部署本地模型,例如Mistral,使用Xinference:
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://<your-xinference-endpoint-domain>:9997/v1
。
对于重排序模型,请使用
http://<your-xinference-endpoint-domain>:9997/v1/rerank
作为基础URL。
6. 更新系统模型设置
点击您的徽标 > 模型提供者 > 系统模型设置 以更新您的模型。
你现在应该能够在Chat model下的下拉列表中找到mistral。
如果你的本地模型是一个嵌入模型,你应该在嵌入模型下找到你的本地模型。
7. 更新聊天配置
在聊天配置中相应地更新您的聊天模型:
如果您的本地模型是一个嵌入模型,请在知识库的配置页面上更新它。
使用IPEX-LLM部署本地模型
IPEX-LLM 是一个 PyTorch 库,用于在本地 Intel CPU 或 GPU(包括 iGPU 或独立 GPU,如 Arc、Flex 和 Max)上以低延迟运行 LLM。它支持 Linux 和 Windows 系统上的 Ollama。
要部署本地模型,例如Qwen2,使用IPEX-LLM加速的Ollama:
1. 检查防火墙设置
确保您的主机防火墙允许在端口11434上的入站连接。例如:
sudo ufw allow 11434/tcp
2. 使用IPEX-LLM启动Ollama服务
2.1 为Ollama安装IPEX-LLM
IPEX-LLM 支持在 Linux 和 Windows 系统上使用 Ollama。
有关为Ollama安装IPEX-LLM的详细信息,请参阅Run llama.cpp with IPEX-LLM on Intel GPU Guide:
安装完成后,您应该已经创建了一个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操作系统(内核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部署本地模型
要部署一个本地模型,例如gpt2,使用jina:
1. 检查防火墙设置
确保您的主机防火墙允许在端口12345上的入站连接。
sudo ufw allow 12345/tcp
2. 安装 jina 包
pip install jina
3. 部署本地模型
第一步:导航到rag/svr目录。
cd rag/svr
第二步:运行 jina_server.py,指定模型的名称或其本地目录:
python jina_server.py --model_name gpt2
该脚本仅支持从Hugging Face下载的模型。