检索图片与视频

更新时间:
复制为 MD 格式

当您需要从海量图片或视频中快速定位视觉语义匹配的内容(如“红色消防车在十字路口”),传统关键词检索失效。PolarDB for AI提供基于多模态Embedding的向量检索能力,支持对已上传媒体文件执行文本驱动的语义搜索,并返回带缩略图的可视化结果。该能力直接集成于PolarDB MySQL集群控制台,无需部署独立向量数据库或管理模型服务。

方案架构

image
  • 原始数据增强:为提升系统对视觉内容的深度理解能力,特别是针对非典型场景(corner cases),系统集成了知识图谱本体库对原始图像数据进行增强。该过程通过为图像附加更精确、更丰富的语义标签,将泛化的描述(如“图中有一个行人”)细化为更具信息量的具体描述(如“图中有一个蹲着的行人”),从而显著提高后续数据召回的精准度。

  • 查询扩写、EmbeddingRerank:检索过程采用三阶段优化策略以平衡召回率与准确率。首先,通过查询扩写(Query Expansion)技术,利用知识图谱本体库将用户的输入查询(如“倒地锥桶”)扩展为语义上更丰富的形式(如“倒地的交通锥”)。其次,基于扩展后的查询生成Embedding向量,这能扩大搜索范围以提高召回率。最后,引入一个Rerank模型对初步召回的结果集进行二次排序和精选,确保最终输出结果的高准确率。

  • Bad Case闭环与模型迭代:系统建立了一套Bad Case闭环反馈机制,用于持续优化模型表现。当出现不符合预期的结果时,这些Bad Case会经过人工标注和语义扩展,并被添加回基础数据集与知识图谱本体库中,以丰富原始多模态数据。在此基础上,系统会周期性地进行离线迭代,利用更新后的数据集对EmbeddingRerank模型进行微调,从而使模型能够从错误中学习,不断提升其准确性和鲁棒性。

准备工作

您需先开启PolarDB for AI功能并设置AI节点的数据库账号

创建并初始化媒体数据集

  1. 创建数据集

    1. PolarDB for AI > 图片&视频检索页签内的数据集管理列表,单击创建数据集

    2. 输入自定义数据集名称描述完成创建数据集。

    image

  2. 导入数据

    重要

    目前暂不支持自动授权,请提交工单与我们联系,以便为您的指定RAM用户进行授权。您需首先按照以下步骤授予指定的RAM用户相关权限,以便我们进行授权。

    1. 创建自定义策略PolardbaiOpenapiAccessPolicy(单击展开查看)。

      1. 登录RAM访问控制台,单击右侧导航栏权限管理 > 权限策略

      2. 单击创建权限策略,切换到脚本编辑,填写如下内容。

        {
          "Version": "1",
          "Statement": [
            {
              "Effect": "Allow",
              "Action": "polardbai:*",
              "Resource": ["*"]
            }
          ]
        }
      3. 单击确认策略名称保存为PolardbaiOpenapiAccessPolicy

    2. 给指定RAM用户授权PolardbaiOpenapiAccessPolicyAliyunPolardbFullAccess以及指定的OSS Bucket权限(您也可以直接授予AliyunOSSFullAccess权限)。

    1. 单击刚才创建的数据集,操作列的导入数据

    2. 填写需要导入的OSS路径,格式为https://<您的OSS外网访问Bucket域名>/<您的文件夹路径>。例如,https://<your_bucket_name>.oss-cn-beijing.aliyuncs.com/path/to/directory

  3. 执行Embedding

    1. 单击刚才创建的数据集,操作列的执行embedding

    2. 选择Embedding模型版本向量化模式

  4. 查看Embedding任务进度:等待您的数据集Embedding处理完成,实际执行时间与您的数据量相关。您可以在目标数据集下查看当前Embedding任务进度image

执行语义检索任务

对已向量化的数据集执行文本查询,获取语义最匹配的图片。

  1. 创建检索任务:在PolarDB for AI > 图片&视频检索页签内的检索列表,可自定义筛选条件进行检索。单击检索后,会在生成指定的检索任务。image

  2. 查看检索任务:您可检索任务列表中查看指定的检索任务的状态进度image

  3. 查看检索结果:等待任务状态为成功完成后,您可以单击任务ID查看当前检索结果。

    • 支持单击缩略图查看原图/放大图。

    • 支持全选/单选指定的图片,或保存前N张图片为新的数据集,进行更精细化的数据集分类与检索。

    image

  4. (可选)导出元数据:等待任务状态为成功完成后,您可以单击导出元数据查看检索结果的明细(具体图片路径与Score)。image

优化模型(模型微调)

为提升在您特定业务场景下的检索效果,您可以使用自己的数据对模型进行微调。模型微调的数据集与用于检索的数据集是相互独立的。

  1. 创建微调数据集并导入数据

    1. 进入PolarDB for AI > 图片&视频检索页签内的模型调优列表,在微调数据集区域中单击创建微调数据集

    2. 输入自定义数据集名称描述完成创建微调数据集。

    image

  2. 导入数据

    1. 单击刚才创建的数据集,操作列的导入数据

    2. 填写需要导入的OSS路径,格式为https://<您的OSS外网访问Bucket域名>/<您的文件夹路径>。例如,https://<your_bucket_name>.oss-cn-beijing.aliyuncs.com/path/to/directory

  3. 部署打标服务

    数据导入后,您需要通过数据打标来告诉模型需要学习的内容。打标前,需先部署打标服务。

    1. 准备工作:请确认您已设置了AI节点的数据库账号

    2. 打标服务区域中单击部署image

    3. 部署打标服务对话框中,设置服务的账号与密码,并选择为全部或部分微调数据集创建服务。

      说明
      • 用户名需为任意邮箱格式。例如,username@db4ai.com

      • 密码长度需为8位数以上。

      image

    4. 服务部署后,会显示在下方的服务列表中。您可以查看服务状态,并进行配置白名单(添加可访问该服务的IP网段)或删除打标服务操作。image

  4. 配置服务访问权限:单击配置白名单,填写您本地环境的IP地址或地址段以支持访问打标服务。

    说明

    白名单支持配置多个 IP(使用英文逗号,分隔)以及CIDR格式的IP网段(如192.168.100.0/24)。

    image

  5. 数据打标:当打标服务的状态变为正常后,即可开始数据打标。

    1. 在微调数据集列表中,先单击刷新按钮,刷新当前列表。

    2. 找到目标数据集,在其操作列单击打标,页面将跳转至Label Studio打标服务页面。image

    3. 首次访问需要登录,请填写您之前设置的用户名和密码进行登录。image

    4. 登录后,您会看到项目列表,单击您的微调数据集项目,进入项目页面将加载数据集中的所有图片。image

    5. 在打标界面,您可以在项目设置(Project Settings)中添加与管理标签(Labels),并对图片进行标注。

      1. 添加与管理标签:

        1. 单击项目右上角的Settings,进入项目设置页面。image

        2. 单击左侧导航栏中的Labeling Interface页面,您可以自定义标签或导入模板。

          1. 自定义模板:详细信息,请参考Label Studio Tags介绍image

          2. 导入模板:单击Browse Templates,可根据您的业务需求选择合适的模板。image

      2. 对图片进行标注:例如,单击下方标签(如catdog),并使用矩形框工具框选目标对象。随后单击Submit提交标注。image