Skip to main content
Version: DEV

部署本地LLM

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


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

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

NOTE

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

使用Ollama部署本地模型

Ollama 使您能够运行您在本地部署的开源大型语言模型。它将模型权重、配置和数据捆绑到一个由Modelfile定义的单一包中,并优化设置和配置,包括GPU使用。

note
  • 有关下载Ollama的信息,请参见这里
  • 有关配置Ollama服务器的信息,请参见此处
  • 有关支持的模型和变体的完整列表,请参阅Ollama模型库

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中:

add ollama

5. 完成基本的Ollama设置

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

  1. 确保模型名称和类型与步骤1中提取的匹配,例如,(llama3.2, chat), (bge-m3, embedding).
  2. 确保基础URL与第2步确定的URL匹配。
  3. 可选:如果您的模型包含图像到文本模型,请在是否支持视觉?下的切换开关上切换。
WARNING

不正确的基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模型的全部潜力。

note
  • 有关安装Xinference Ollama的信息,请参见此处
  • 有关支持的模型的完整列表,请参阅内置模型

要部署本地模型,例如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中:

add xinference

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

NOTE

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

  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_GPU999 以确保模型的所有层都在 Intel GPU 上运行;否则,某些层可能会默认使用 CPU。

  2. 为了在Linux操作系统(内核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
NOTE

要使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部署本地模型

要部署一个本地模型,例如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下载的模型。