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

更新时间:
复制为 MD 格式

本文介绍如何通过Object Table结合MaxCompute AI Function调用远程模型,实现语音内容提取。 上游业务系统将非结构化数据存储至OSS指定目录后,MaxCompute通过创建Object Table映射OSS中的文件,并支持全量或增量元数据抽取,获取文件的元信息。该方案无需将数据从OSS迁 移至MaxCompute,同时利用元信息提升MaxCompute SQL引擎在数据读取、文件过滤及分布式计算场景下的处理效率。在此基础上,通过SQL引擎结合AI Function调用多模态模型,读取Object Table中的数据,完成非结构化数据的处理与分析。

前提条件

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

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

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

步骤一:创建OSS Bucket并上传数据

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

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

  2. 在新建的Bucket下新建目录/object_table/voice_demo/并上传音频数据voice_demo.zip

步骤二:创建并部署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):****************************************==

步骤三:创建Object Table

创建Object Table并查看元数据。

SET odps.sql.type.system.odps2=true;
SET odps.namespace.schema=true; -- 开启租户级Schema语法开关

CREATE OBJECT TABLE IF NOT EXISTS voice_demo
WITH SERDEPROPERTIES ('odps.properties.rolearn'='acs:ram::<uid>:role/aliyunodpsdefaultrole')
LOCATION 'oss://oss-cn-<region>-internal.aliyuncs.com/object-table/voice_demo/';

ALTER TABLE voice_demo REFRESH METADATA;

-- 刷新元数据后查询,可查到5个音频对象。
SET odps.namespace.schema=true;
SELECT COUNT(*) AS ROW_COUNT FROM voice_demo; 

步骤四:创建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 WITH VERSION v1 
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_*****',
    ENDPOINT = 'https://*****.vpc.cn-beijing.pai-eas.aliyuncs.com/',
    APIKEY = '*****==',
    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;

-- 返回结果如下:
+------------------------------------------------------------------------------------+
|                  Model Information                                                 |
+------------------------------------------------------------------------------------+
| Owner:                    ALIYUN$***_com                                           |
| Project:                  ***                                                      |
| Schema:                   default                                                  |
| Model Name:               pai_eas_qwen25_omni_3b                                   |
| Model Type:               MLLM                                                     |
| Source Type:              REMOTE                                                   |
| Default Version:          v1                                                       |
| CreateTime:               2026-04-30 15:32:16                                      |
| LastModifiedTime:         2026-04-30 15:32:16                                      |
| Model ID:                 ***                                                      |
| Comment:                  PAI EAS remote model                                     |
+------------------------------------------------------------------------------------+
|                Version Information                                                 |
+------------------------------------------------------------------------------------+
| Owner:                    ALIYUN$***_com                                           |
| Project:                  ***                                                      |
| Schema:                   default                                                  |
| Model Name:               pai_eas_qwen25_omni_3b                                   |
| Model Type:               MLLM                                                     |
| Source Type:              REMOTE                                                   |
| Version Name:             v1                                                       |
| Version ID:               ****                                                     |
| Path:                                                                              |
| CreateTime:               2026-04-30 15:32:16                                      |
| LastModifiedTime:         2026-04-30 15:32:16                                      |
| apikey:                   ****                                                     |
| endpoint:                 http://1***4.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                                             |
+------------------------------------------------------------------------------------+

步骤六:使用AI_GENERATE函数处理语音数据

使用MaxCompute AI_GENERATE函数对语音数据进行文本提取和中文翻译。

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

SELECT
  key,
  AI_GENERATE(
    PAI_EAS_Qwen25_Omni_3B, v1, audio_url,
    "把听到的内容输出,仅限于听到的信息,不输出额外信息",
    "AUDIO"
  ) AS voice2text,
  AI_GENERATE(
    PAI_EAS_Qwen25_Omni_3B, v1, audio_url,
    "请把听到的信息翻译成英文,不输出额外信息",
    "AUDIO"
  ) AS voice2text2english
  FROM (
    SELECT GET_SIGNED_URL_FROM_OSS(
      '<project name>.<schema>.voice_demo', key, 604800
    ) AS audio_url, key AS key
    FROM <project name>.<schema>.voice_demo
);


+------+------------+--------------------+
| key  | voice2text | voice2text2english |
+------+------------+--------------------+
| 3d111ad2-3708-492b-a99c-8621e852964d.wav | 听到的信息:教育改革措施需要更多时间来观察效果 | Educational reform measures require more time for observation and assessment of their effectiveness. |
| 3f46aaf1-7b70-4ac7-a3b1-f574ff884ac7.wav | 这家餐厅的服务态度很好,菜品也很美味,值得推荐。 | The service at this restaurant is very good, and the dishes are delicious. It is worth recommending. |
| b222aabf-7f2e-4909-b774-5e762eb75a0a.wav | 科技发展日新月异,人工智能改变生活。 | Technology is advancing rapidly, and artificial intelligence is revolutionizing our lives. |
| bbc84f7d-dcf6-45eb-a129-34df3ec9c612.wav | 今天天气真好,心情很不错,阳光明媚,适合出去散步。 | It's a beautiful day today—your mood is in great spirits; the sun shines beautifully, it is perfect for strolling around. |
| d8caf7ef-4489-403a-94e9-86d83bcf1966.wav | 环保意识需要进一步提高,保护我们的地球家园。 | Environmental awareness needs to be further enhanced to protect our homelands. |
+------+------------+--------------------+