RAG集成OpenAI兼容界面最佳实践

PAI-RAG是一个模块化开源框架,结合LLM提供了知识推理能力,并支持多种模型(例如Qwen、DeepSeek等)。它具备知识库上传、联网搜索、数据分析等功能,并兼容OpenAI接口,可在WebUI和本地LLM APP中一键配置,配置成功后,即可通过UI界面使用RAG服务。本文将介绍如何在这些环境中集成并使用RAG服务。

前提条件

通过OpenAI集成RAG服务前,您需要完成以下准备工作:

  1. 已部署RAG服务和LLM服务,并在RAG服务的WebUI页面完成LLM服务的配置。具体操作,请参见自定义部署RAG服务

    重要

    由于EAS服务默认不通公网,请给EAS配置公网连接,以便RAG服务能使用联网搜索功能。

  2. 已获取RAG服务访问地址和Token,后续用于在WebUI和本地APP中接入RAG服务。

    1. 模型在线服务(EAS)页面,单击RAG服务名称。

    2. 基本信息区域,单击查看调用信息,获取服务访问地址和Token。image

  3. 已在RAG服务的WebUI页面,完成如下功能的配置:

    • 如果后续您需要在WebUI或本地APP中使用RAG服务的联网搜索功能,可以在WebUI页面的对话页签,选中默认网络搜索参数,并配置搜索引擎参数。具体操作,请参见大模型RAG对话系统

    • 如果您想利用现有知识库生成基于最新信息的、符合事实的回复,可以在WebUI页面的知识库页签上传知识库文件

Open-WebUI集成RAG服务

OpenWebUI-LLM是一个开源项目,它允许用户创建自定义的语言模型界面,并支持多种预训练的语言模型。您可以按照以下操作流程接入并使用RAG服务进行模型推理。

步骤一:部署Open-WebUI并连接RAG服务

  1. 部署Open-WebUI,支持以下两种部署方法。

    通过本地部署

    在本地终端中,执行以下命令安装并启动Open-WebUI。建议使用Python 3.11或更高版本。

    pip install open-webui
    open-webui serve

    通过EAS部署

    通过EAS部署OpenWebUI,您可以轻松实现从代码到云端的部署,无需担心底层基础设施的管理。此外,PAI-EAS支持将后端数据存储在阿里云对象存储OSS中,从而实现数据的持久化保存和多用户管理。

    1. 登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS

    2. 模型在线服务(EAS)页面,单击部署服务,然后在自定义模型部署区域,单击JSON独立部署

    3. JSON文本编辑框中,填入如下内容,并参考下方参数说明,进行相应字段的调整,然后单击部署

      {
        "cloud": {
          "computing": {
            "instances": [
              {
                "type": "ecs.c6.large"
              }
            ]
          },
          "networking": {
            "security_group_id": "",
            "vpc_id": "",
            "vswitch_id": ""
          }
        },
        "containers": [
          {
            "env": [
              {
                "name": "ENABLE_LOGIN_FORM",
                "value": "True"
              },
              {
                "name": "ENABLE_SIGNUP",
                "value": "True"
              },
              {
                "name": "ENABLE_OPENAI_API",
                "value": "True"
              },
              {
                "name": "OPENAI_API_BASE_URL",
                "value": ""
              },
              {
                "name": "OPENAI_API_KEY",
                "value": ""
              },
              {
                "name": "WEBUI_AUTH",
                "value": "True"
              },
              {
                "name": "PORT",
                "value": "3000"
              },
              {
                "name": "RAG_EMBEDDING_MODEL",
                "value": "sentence-transformers/all-MiniLM-L6-v2"
              },
              {
                "name": "ENABLE_EVALUATION_ARENA_MODELS",
                "value": "False"
              },
              {
                "name": "WEBUI_URL",
                "value": "http://0.0.0.0:3000"
              },
              {
                "name": "ENABLE_TAGS_GENERATION",
                "value": "False"
              },
              {
                "name": "DEFAULT_USER_ROLE",
                "value": "admin"
              },
              {
                "name": "ENABLE_RAG_WEB_SEARCH",
                "value": "True"
              }
            ],
            "image": "eas-registry-vpc.cn-hangzhou.cr.aliyuncs.com/pai-eas/open-webui:main",
            "port": 3000,
            "script": "bash start.sh"
          }
        ],
        "metadata": {
          "cpu": 2,
          "enable_webservice": true,
          "instance": 1,
          "memory": 4000,
          "name": "dpsk_test_ui",
          "workspace_id": "484***"
        },
        "storage": [
          {
            "mount_path": "/app/backend/data",
            "oss": {
              "endpoint": "oss-cn-hangzhou-internal.aliyuncs.com",
              "path": "oss://examplebucket/test_web/",
              "readOnly": false
            },
            "properties": {
              "resource_type": "model"
            }
          }
        ]
      }

      其中关键参数配置说明如下:

      参数

      描述

      networking

      security_group_id

      • 如果通过公网地址访问RAG服务,需要选择具有公网访问能力的专有网络VPC、交换机和安全组。详情请参见配置公网连接

      • 如果需要通过内网地址访问RAG服务,请选择与RAG服务一致的专有网络。

      vpc_id

      vswitch_id

      metadata

      name

      自定义EAS服务名称。

      workspace_id

      配置为工作空间ID,可在工作空间详情页面进行查看。

      containers

      env

      关键环境变量配置说明如下:

      • OPENAI_API_BASE_URL:配置为已部署RAG服务的访问地址,并在地址末尾添加/v1,例如http://test****0220.115770327099****.cn-hangzhou.pai-eas.aliyuncs.com/v1。也可以在启动后的Open-WebUI页面上进行配置。

      • OPENAI_API_KEY:配置为已部署RAG服务的Token,也可以在启动后的Open-WebUI页面上进行配置。

      • WEBUI_AUTH

        • 设置为True:表示开启用户鉴权。您需要登录才能进入Open-WebUI,方便做用户管理。您需要提前向Open-WebUI管理员获取登录用户和密码。

        • 设置为False:表示关闭用户鉴权。您无需登录即可进入Open-WebUI页面。

      image

      请将镜像地址中的地域ID替换为相应的地域ID。例如华北2(北京)为eas-registry-vpc.cn-beijing.cr.aliyuncs.com/pai-eas/open-webui:main。如何获取地域ID,请参见OSS地域和访问域名

      storage

      oss

      添加对象存储OSS挂载配置,EAS会将后端数据存储在阿里云对象存储OSS中,从而实现数据的持久化保存和多用户管理。其中:

    4. 服务部署成功后,单击目标服务名称,然后在页面右上角单击查看Web应用

  2. Open-WebUI页面,连接RAG服务。

    1. Open-WebUI页面右上角,按照下图操作指引,进入管理员页面。image

    2. 按照下图操作指引,连接PAI-RAG服务。image

      其中关键参数配置说明如下:

      参数

      描述

      URL

      配置为RAG服务的访问地址,并在末尾添加/v1后缀。例如http://test****0220.115770327099****.cn-hangzhou.pai-eas.aliyuncs.com/v1

      说明
      • 本地部署的OpenWebUI接入RAG服务时,需要使用公网访问地址。

      • EAS部署的OpenWebUI接入RAG服务时,可以使用VPC地址。如果已开通公网访问,也可以使用公网地址。

      密钥

      配置为RAG服务的Token。

      模型ID

      自定义模型ID,例如pai-rag-new。后续在Open-WebUI页面用于选择RAG服务。

步骤二:效果展示

Open-WebUI页面左上角,选择OpenAI API连接对应的模型ID(例如pai-rag-new),然后进行服务调用。

image

步骤三:使用PAI-RAG拓展功能

通过在Open-WebUI中添加过滤器功能(Filter Functions),您可以更灵活地使用PAI-RAG的拓展功能(如数据分析功能)。具体步骤如下:

1.配置RAG

如果您想在Open-WebUI的聊天界面使用PAI RAG的自动化数据分析功能,请先在RAG服务的WebUI页面的数据分析页签完成相应的功能配置。详情请参见自动化数据分析

image

2.在Open-WebUI页面完成相应配置

  1. Open-WebUI页面右上角,按照下图操作指引,进入管理员页面。image

  2. 单击函数,然后单击右侧的+号。image

  3. 在过滤器函数代码Filter类的inlet方法中,增加对应的拓展功能(使用数据分析功能:需添加body["chat_db"] = True),并在左上方自定义函数名称和描述,完成后单击右下角的保存按钮。

    重要

    目前,暂不支持自主识别多个功能。如果发现有干扰,可以将其他配置置为False。例如body["chat_knowledgebase"] = Falsebody["search_web"] = False

    image

    系统将自动返回到函数页面,您需要打开右侧的开关启用新增的过滤器。image

  4. 按照下图操作指引单击左侧工作空间,并在右侧模型区域单击+,然后在模型页面将新增的过滤器配置到具体模型中。image

  5. 返回到对话页面,选择模型后,即可使用PAI-RAG的拓展功能进行对话。image

本地APP集成RAG服务

以如下三种APP为例,为您介绍如何接入并使用RAG服务。

Chatbox

Chatbox AI是一款智能助手和客户端应用,支持多种先进的AI模型和API,可在Windows、macOS、Android、iOS、Linux以及网页版上使用。

步骤一:连接方法

Windows操作系统为例,为您介绍Chatbox如何连接PAI-RAG服务。以下操作步骤仅供参考,您的操作以实际为准。

  1. 前往Chatbox页面,选择适合您自己操作系统的版本,下载、安装并打开ChatBox。

  2. 在左侧导航栏单击设置,选中模型提供方,并在下拉列表中单击添加,然后在添加模型提供方对话框中,配置以下参数。

    • 名称:自定义名称,例如PAI-RAG。

    • API模式:为OpenAI API兼容

  3. 选择已配置的模型提供方,配置服务请求参数。

    参数

    描述

    API密钥

    配置为RAG服务的Token。

    API域名

    • API主机:配置为RAG服务的访问地址并在末尾添加/v1后缀。例如http://test****0220.115770327099****.cn-hangzhou.pai-eas.aliyuncs.com/v1

    • API路径:置空。

    模型

    自定义模型名,例如PAI-RAG。

步骤二:效果展示

按照下图操作指引,进行服务调用。您的结果以实际为准。image

Cherry Studio

Cherry Studio AI是一款强大的多模型AI助手,支持iOS、macOSWindows平台。它支持快速切换多种先进的LLM模型,从而提升工作和学习效率。

步骤一:连接方案

为您介绍Cherry Studio如何连接PAI-RAG服务,以下操作步骤仅供参考,您的操作以实际为准。

  1. 前往Cherry Studio页面,将安装包下载到本地,然后安装并打开Cherry Studio。

  2. 按照下图操作指引,连接PAI-RAG服务。image

    其中关键参数配置说明如下:

    参数

    描述

    API密钥

    配置为RAG服务的Token。

    API地址

    配置为RAG服务的访问地址。

    模型

    自定义模型名称,例如PAI-RAG。

步骤二:效果展示

按照下图操作指引,进行服务调用。您的结果以实际为准。

image

AnythingLLM

AnythingLLM是一款AI客户端应用,支持多种先进的AI模型和API。

步骤一:连接方案

Windows操作系统为,为您介绍AnythingLLM如何连接PAI-RAG服务。以下操作步骤仅供参考,您的操作以实际为准。

  1. 前往AnythingLLM页面,选择适合您自己操作系统的版本下载到本地,然后安装并打开AnythingLLM。

  2. 首先新建一个工作区,并按照下图操作指引集成PAI-RAG服务,然后在聊天设置页面下方单击Update workspace,更新工作空间配置。image

    其中关键参数配置说明如下:

    参数

    描述

    Base URL

    配置为RAG服务访问地址,并在末尾添加/v1后缀。例如http://test****0220.115770327099****.cn-hangzhou.pai-eas.aliyuncs.com/v1

    API Key

    配置为RAG服务Token。

    Chat Model Name

    自定义模型名称,例如PAI-RAG。

步骤二:效果展示

按照下图操作指引,进行服务调用。您的结果以实际为准。image