跳到主要内容

部署本地模型

使用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在同一主机上运行,检查从RAGFlow主机是否可以访问Ollama:
$ curl http://localhost:11434/
> Ollama is running
  • 如果RAGFlow和Ollama在不同机器上运行,检查从RAGFlow主机是否可以访问Ollama:
$ 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基础URL中,输入您在步骤2中找到的URL后跟/v1,即http://host.docker.internal:11434/v1http://localhost:11434/v1http://${IP_OF_OLLAMA_MACHINE}:11434/v1
  3. 可选:如果您的模型包含图像到文本模型,请在**是否支持视觉?**下打开开关。
警告

不正确的基础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的信息,请参见这里
  • 有关支持的模型的完整列表,请参见内置模型

要使用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设置

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

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

6. 更新系统模型设置

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

您现在应该能够在聊天模型下拉列表中找到mistral

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

7. 更新聊天配置

聊天配置中相应地更新您的聊天模型:

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

使用IPEX-LLM部署本地模型

IPEX-LLM是一个PyTorch库,用于在本地Intel CPU或GPU(包括集成GPU或独立 GPU,如Arc、Flex和Max)上低延迟运行LLMs。它支持在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操作系统(内核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下载的模型。