使用AI Function和Lance External Table处理非结构化数据

更新时间:
复制为 MD 格式

本文以电商场景中的图片标签提取和摘要生成为例,介绍如何通过Lance外部表访问存储在OSS上的非结构化数据,并结合AI Function调用远程模型完成非结构化数据处理。上游业务系统将非结构化数据存储至OSSLance格式的Binary字段中,MaxCompute 通过创建Lance外部表映射OSS中的图片数据,无需将数据从OSS迁移至MaxCompute,同时借助Lance格式统一管理和维护元信息,确保与多种计算引擎的兼容性。在此基础上,通过SQL引擎结合AI Function调用多模态模型,读取Lance外部表中的数据,完成非结构化数据的处理与分析。

前提条件

  1. 开通MaxCompute创建MaxCompute项目。如已完成可忽略。

  2. 已开通人工智能平台PAI模型在线服务(EAS)。如已完成可忽略。

  3. 已开通OSS服务。如已完成可忽略。

步骤一:创建OSS Bucket

  1. 登录对象存储OSS控制台

    在 OSS 上创建名称为lancetable-demoBucket,操作详情可参考OSS控制台快速入门

  2. 在新建的Bucket下新建目录/lance_table/image/

步骤二:准备 Lance 数据

  1. 准备本地图片文件image_demo.zip解压到本地路径,如D:\Downloads\image_demo

  2. 执行前根据本地文件位置修改脚本相关配置项,然后执行如下 python 脚本upload_images_to_oss_lance_demo.py,完成在 OSS 目录中创建 Lance table,并把图片上传名为imagebinary字段。

  3. 在 OSS 目录查看新建的image.lance目录。

步骤三:创建并部署PAI EAS模型服务

  1. 登录PAI 控制台,左上角选择地域,创建工作空间。

  2. 进入工作空间详情页,点击左侧Model Gallery,选择Qwen2.5-Omni-3B,点击部署。

  3. 选择机型,选择一台L20 48G显存的机器,点击部署。可在任务管理中查看部署状态,部署完成后会显示运行中

  4. 在左侧导航栏,单击模型部署模块,进入EAS查看已经部署的服务,点击查看调用信息,获取endpointtoken信息。

    -- 后续步骤三创建远程模型时会用到如下信息。
    模型名称(以实际EAS服务显示为主):quickstart_deploy_*****_apdf
    endpoint(VPC调用地址):http://*****.cn-beijing.pai-eas.aliyuncs.com(只取aliyuncs.com之前地址即可)
    apikey(Token):****************************************==

步骤四:创建Lance外部表并查询元信息

创建 Lance 外部表语法可参考Lance外部表(beta)

CREATE EXTERNAL TABLE oss_lance_table (
    image_id BIGINT ,
    image_name STRING,
    image BINARY
)
STORED BY 'com.aliyun.odps.common.table.lance.LanceStorageHandler'
WITH serdeproperties (
    'odps.properties.rolearn'='acs:ram::<uid>:role/aliyunodpsdefaultrole'
)
LOCATION 'oss://oss-cn-<region>-internal.aliyuncs.com/lancetable-demo/lance_table/image/image.lance/'
;

SELECT * FROM oss_lance_table limit 1;
-- 返回结果如下:
+------------+------------+-------+
| image_id   | image_name | image |
+------------+------------+-------+
| 1          | test-1.jpg | =FF=D******

步骤五:创建VPC网络连接

  1. 登录MaxCompute控制台,在左上角选择地域。

  2. 在左侧导航栏,选择管理配置 > 网络连接 。

  3. 创建MaxCompute与目标VPC网络间的网络连接。VPC ID可以是任意VPC,交换机可以是任意可用区。

步骤六:注册Omni多模态远程模型

  • 若输入binary定义模型时,需要提供输入参数声明 INPUT(data BINARY, promt STRING)。

  • 若输入stringurl,可以使用默认值,不用声明输入参数。

语法参数详情可参考创建模型

SET odps.namespace.schema=true;
SET odps.session.networklink=<your vpc name>;

CREATE MODEL PAI_EAS_Qwen25_Omni_3B_binary WITH VERSION v1 
INPUT(data BINARY, promt STRING) 
OPTIONS(
    MODEL_SOURCE_TYPE = 'REMOTE',
    MODEL_TYPE = 'MLLM',
    TASKS = 'text-generation',
    PAI_EAS_MODEL_NAME = 'Qwen2.5-Omni-3B',
    PAI_EAS_SERVICE_NAME = 'quickstart_deploy_*****_apdf', -- 需替换为EAS服务名称
    ENDPOINT = 'http://*****.vpc.cn-beijing.pai-eas.aliyuncs.com', -- 需替换为PAI EAS 服务的访问地址
    APIKEY = '****************************************==', -- 需替换为PAI EAS 服务Token
    PAI_EAS_SYNC_MODE = 'true'
)
COMMENT "PAI EAS remote model";

单击展开查看远程模型信息

-- 查看远程模型。
SET odps.namespace.schema=true;
SET odps.session.networklink=<your vpc name>;
DESC model PAI_EAS_Qwen25_Omni_3B_binary;

-- 返回结果如下:
+------------------------------------------------------------------------------------+
|                  Model Information                                                 |
+------------------------------------------------------------------------------------+
| Owner:                    ALIYUN$****_com                                          |
| Project:                  ****                                                     |
| Schema:                   default                                                  |
| Model Name:               pai_eas_qwen25_omni_3b_binary                            |
| Model Type:               MLLM                                                     |
| Source Type:              REMOTE                                                   |
| Default Version:          v1                                                       |
| CreateTime:               2026-04-30 14:50:39                                      |
| LastModifiedTime:         2026-04-30 14:50:39                                      |
| Model ID:                 ***                                                      |
| Comment:                  PAI EAS remote model                                     |
+------------------------------------------------------------------------------------+
|                Version Information                                                 |
+------------------------------------------------------------------------------------+
| Owner:                    ALIYUN$****_com                                          |
| Project:                  ****                                                     |
| Schema:                   default                                                  |
| Model Name:               pai_eas_qwen25_omni_3b_binary                            |
| Model Type:               MLLM                                                     |
| Source Type:              REMOTE                                                   |
| Version Name:             v1                                                       |
| Version ID:               ***                                                      |
| Path:                                                                              |
| CreateTime:               2026-04-30 14:50:39                                      |
| LastModifiedTime:         2026-04-30 14:50:39                                      |
| apikey:                   *****                                                    |
| endpoint:                 http://*******.vpc.cn-hangzhou.pai-eas.aliyuncs.com      |
| pai_eas_model_name:       Qwen2.5-Omni-3B                                          |
| pai_eas_service_name:     *******                                                  |
| pai_eas_sync_mode:        true                                                     |
| remote_service_type:      PAI-EAS                                                  |
+------------------------------------------------------------------------------------+
| Input           | Type       | Comment                                             |
+------------------------------------------------------------------------------------+
| data            | binary     |                                                     |
| promt           | string     |                                                     |
+------------------------------------------------------------------------------------+

步骤七:使用AI_GENERATE函数处理图片数据

使用MaxCompute AI_GENERATE函数进行图片数据的分类并生成描述摘要。

SET odps.namespace.schema=true; 
SET odps.mcqa.disable=true;
SET odps.session.networklink=<your vpc name>;

SELECT
  key,
  image_name,
  AI_GENERATE(
    PAI_EAS_Qwen25_Omni_3B_binary, v1, `image`,
    "从电商商品销售海报中识别并提取商品所属的类目。返回结果仅限于如下六个选项之一:美妆、服装、日用、食品、其他、电子产品,不包含其他文字或信息"
  ) AS item_catagory,
    AI_GENERATE(
    PAI_EAS_Qwen25_Omni_3B_binary, v1,`image`,
    "用20字描述图片内容,包括颜色、名称!"
  ) AS item_description
  FROM (
    SELECT image, image_name, image_id AS key
    FROM <project name>.<schema>.oss_lance_table
) Limit 10;

-- 返回结果如下:
+------------+------------+---------------+------------------+
| key        | image_name | item_catagory | item_description |
+------------+------------+---------------+------------------+
| 1          | test-1.jpg | 服装        | 图片展示黑色高跟鞋,鞋面上有银色装饰,鞋跟细高,整体设计简约时尚。 |
| 2          | test-10.jpg | 服装        | 黑色丝绒裙襟,红色V领开扣上衣, amidst einen stilvollen Hintergrund with Nebel und kronleuchtern. |
| 3          | test-11.jpg | 美妆        | 图片展示了一排不同色号的Dior口红,背景为柔和粉红色,品牌标志明显。 |
| 4          | test-12.jpg | 美妆        | 透明圆形瓶装的白色乳霜,黑色盖子,红色几何图形装饰,底部有字幕。 |
| 5          | test-13.jpg | 其他        | 粉色和紫色的花朵精心编成的花束,搭配粉色背景和心形装饰,浪漫而不失优雅。 |
| 6          | test-14.jpg | 美妆        | La Mer海蓝之谜护肤品,绿色和淡紫色调,品牌标志。 |
| 7          | test-15.jpg | 美妆        | 图中黄色背景下的护肤套装,包含碧丽肤生物复合精华和纯净清洁产品。 |
| 8          | test-16.jpg | 日用        | 棕色圆形浴缸、黑色台面、窗户、 plants、红色红色,黄色按钮。 |
| 9          | test-17.jpg | 其他        | 图中金色的观音菩萨像,金色头冠,莲花台底座,身上有紫色、黄色、金色花纹。 |
| 10         | test-18.jpg | 照片显示的是化妆品。 | 洁白的透明纸包装,印有蓝色图案和文字,背景为蓝色渐变。 |
+------------+------------+---------------+------------------+