构建多模态RAG

传统的RAG流程只处理文本,会忽略PDF、Word等文档中的图片,导致信息丢失。PAI-RAG的多模态功能集成了多模态大语言模型(LLM),能够同时理解图文内容,提供更完整的回答。本文将介绍如何在RAG服务中启用多模态推理。

前提条件

已部署RAG服务,其中关键配置说明如下,具体操作,请参见大模型RAG对话系统

  • 版本选择:选择LLM分离式部署

  • RAG版本:选择pai-rag:0.3.4

  • 专有网络:选择支持公网访问的专有网络,以便访问公网图片地址。详情请参见配置公网连接

配置多模态LLM

通过配置多模态LLM,基于图像内容和文本生成回答。

  1. 准备多模态LLM服务。

    • (推荐)使用部署在EAS上的兼容OpenAI协议的多模态模型服务,例如开源的Qwen2.5-VL系列中的Qwen2.5-VL-72B-Instruct-AWQQwen2.5-VL-72B-Instruct。如何在EAS上部署多模态模型服务,请参见LLM大语言模型部署

    • 使用DashScope多模态模型,详情请参见首次调用通义千问API

  2. 获取多模态LLM服务的访问地址和Token。

    服务类型

    获取方法

    EAS 多模态模型服务

    模型在线服务(EAS)页面,单击多模态模型服务名称,然后在基本信息区域,单击查看调用信息,获取服务访问地址和Token。

    说明
    • 使用公网调用地址:RAG服务需绑定具有公网访问能力的专有网络。

    • 使用VPC调用地址:RAG服务与多模态模型服务必须在同一个专有网络内。

    DashScope多模态模型

    • 访问地址:https://dashscope.aliyuncs.com/compatible-mode/v1

    • 服务Token:即API Key。如何获取,请参见首次调用通义千问API

  3. RAG服务的WebUI页面,配置多模态LLM服务请求参数。

    1. 模型在线服务(EAS)页面,单击目标RAG服务名称,然后在页面右上方单击查看Web应用

    2. 系统设置页签的模型及存储配置TAB页,配置以下参数,然后单击保存模型配置

      • URL:配置为服务访问地址。

      • 密钥:配置为服务Token。

      • 模型名称:配置为多模态LLM模型名称。

      • 是否支持多模态:选中复选框。

      image

配置阿里云OSS存储

通过添加数据源OSS存储,来存储图片⽂件信息。后续在输出推理结果时,系统可以通过图片链接的方式在回复中展示图片。

  1. 模型在线服务(EAS)页面,单击目标RAG服务名称,然后在页面右上角单击查看Web应用

  2. 系统设置页签的模型及存储配置TAB页,选中使用图片OSS存储,并配置以下参数。

    参数

    描述

    示例值

    OSS存储空间

    OSS存储空间名称。您可以前往Bucket 列表页面查看,如果未创建,请参考控制台快速入门进行创建。

    examplebucket

    OSS访问域名

    请填写与对象存储OSS地域相匹配的外网Endpoint地址。地域和Endpoint对照表请参见OSS地域和访问域名

    说明

    EAS默认不通公网,使用外网Endpoint地址时(例如oss-cn-hangzhou.aliyuncs.com),需为RAG服务配置具有公网访问能力的专有网络,详情请参见配置公网连接

    oss-<Region ID>.aliyuncs.com

    AccessKey ID

    阿里云账号的AccessKey ID。

    yourAccessKeyID

    AccessKey Secret

    阿里云账号的AccessKey Secret。

    yourAccessKeySecret

    image

  3. 参数配置完成后,单击保存OSS配置

上传多模态文件

以下内容介绍如何在RAG服务的WebUI页面上传多模态文件。您也可以通过API方式完成多模态文件的上传,详情请参见Knowledgebase API(知识库管理接口)

上传知识库文件

支持多种多模态文件格式,包括PDF、Markdown、Word、PPT、PNG以及JPG等。在上传⽂件时,如果已经配置多模态LLM和阿里云OSS存储,系统会自动处理文件中的图片并生成图片Caption。

RAG服务WebUI页面的知识库页签,切换到文件管理Tab页。单击My files,然后进入default/docs目录。拖拽本地文件或单击右上角的image,上传知识库文件。image

查看上传状态

切换到上传历史Tab页,然后单击刷新按钮,当文件上传状态done时,表明上传成功。image

问答效果展示

WebUI调用

RAG服务的WebUI页面中,切换至对话页签进行服务推理。

WebUI调用多模态LLM知识库问答

按照下图操作指引,从知识库中获取结果,并调用多模态LLM进行推理。以某汽车说明书为例,展示效果如下:

image

您也可以在知识库知识库问答提示词模板配置Tab页,修改知识库问答的Prompt,提示模型如果参考了知识库中的图片,在回答中展示该图片。image

例如在任务描述中添加如果答案中提到了材料中的图片内容,您应该在答案中用Markdown格式给出相应的图片链接。

修改Prompt后,问题中可以没有展示图片的提示,回答中也会展示图片。image

WebUI调用多模态LLM问答

按照下图操作指引,调用多模态LLM进行推理。

image

API调用

  1. 获取RAG服务访问地址和Token。

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

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

      说明
      • 使用公网调用地址:调用客户端需支持访问公网。

      • 使用VPC调用地址:调用客户端必须与RAG服务位于同一个专有网络内。

      image

  2. 在终端中,执行以下代码进行推理。

    调用多模态LLM问答

    curl -X 'POST' <EAS_SERVICE_URL>/v1/chat/completions \
    -H "Content-Type: application/json" \
    -H 'Authorization: <EAS_TOKEN>' \
    -d '{
     "model": "qwen-vl-max",
     "messages": [
       {
         "role": "user",
         "content": [
           {
             "type": "text",
             "text": "图⽚⾥是什么?"
           },
           {
             "type": "image_url",
             "image_url": {
                 "url": "https://pai-rag.oss-cn-hangzhou.aliyuncs.com/data/demo/shirts/10.jpg"
    		 }
           }
         ]
       }
     ],
     "stream": true
    }'

    其中关键配置说明如下:

    • <EAS_SERVICE_URL>:替换为RAG服务访问地址,需将末尾的/删除。

    • <EAS_TOKEN>:替换为RAG服务Token。

    • model:配置为多模态LLM模型名称。

    • url:配置为图片URL地址。

    调用多模态LLM知识库问答

    curl -X 'POST' <EAS_SERVICE_URL>/v1/chat/completions \
    -H "Content-Type: application/json" \
    -H 'Authorization: <EAS_TOKEN>' \
    -d '{
      "model": "qwen-vl-max",
      "messages": [
        {
    	  "role": "user",
    	  "content": [
    	    {
    		  "type": "text",
    		  "text": "图⽚⾥是什么?"
    		},
    	    {
    		  "type": "image_url",
    		  "image_url": {
    		    "url": "https://pai-rag.oss-cn-hangzhou.aliyuncs.com/data/demo/shirts/10.jpg"
    		  }
    		}
    	  ]
    	}
      ],
      "stream": true,
      "chat_knowledgebase": true,
      "index_name": "default"
    }'

    其中关键配置说明如下:

    • <EAS_SERVICE_URL>:替换为RAG服务访问地址,需将末尾的/删除。

    • <EAS_TOKEN>:替换为RAG服务Token。

    • model:配置为多模态LLM模型名称。

    • url:配置为图片URL地址。

    • chat_knowledgebase:配置为true,表示查询本地知识库。使用该功能时,需提前上传知识库文件,详情请参见上传多模态文件Knowledgebase API(知识库管理接口)

    • index_name:填写上传文档的知识库名称,如何查看,请参见查询知识库列表