系统需求

电商卖家在准备新商品资料时,需要拍摄商品照片、标注商品类别和属性。以女装为例,需要设置子类目是裙子或者衬衣,衬衣需要标注是圆领、V领、长袖、短袖、风格等多种属性。随着商品类别的增长,将积累大量的图片素材。如果这些图片素材没有被很好地管理和利用,则经常会出现找不到之前已经准备好的素材,需要重新拍摄的情况。

分析型数据库MySQL版可以帮助电商卖家管理和检索图片素材,可以根据图片类别、属性或者相似图片做多模检索。例如,检索与输入图片最相似且价格在200元~300元之间的所有商品的图片。

实现架构

分析型数据库MySQL版作为商品属性提取和图片管理的核心组件,数据读写流程如下所示。

插入数据

应用端通过以下步骤向商品库中插入数据。

  1. 应用端调用OSS服务,将图片插入OSS,获得对应的URL。
    说明 当前只支持HTTP和HTTPS协议的URL。
  2. 应用端调用特征提取服务,获得图片抽象后的特征向量。
  3. 应用端调用分析型数据库MySQL版服务将步骤一中的URL和步骤二中的特征向量一起插入商品库。

查询数据

应用端可以采用上述架构图中的任意一种方案从商品库中查询数据,查询步骤如下所示。

  1. 应用端调用OSS服务,将要查询的图片插入OSS,获得对应URL。
    说明 当前只支持HTTP和HTTPS协议的URL。
  2. 应用端调用特征提取服务,获得URL对应图片抽象后的特征向量,同时也支持直接传入图片获取特征向量。
  3. 应用端调用分析型数据库MySQL版,获得相似特征向量图片对应的URL列表。
  4. 应用端根据URL列表,调OSS服务,获取并返回图片。

示例

以下是一个简单的商品属性提取示例。

  1. 通过以下SQL创建商品表products
     CREATE TABLE products (
       id bigint COMMENT '',
       image_url varchar COMMENT '',
       properties varchar COMMENT '',
       feature float[512] COMMENT '' COLPROPERTIES (DistanceMeasure='SquaredEuclidean',ExtractFrom='CLOTHES_FEATURE_EXTRACT_V1(image_url)'),
       PRIMARY KEY (id)
     )
     PARTITION BY HASH KEY (id) PARTITION NUM 2
     CLUSTERED BY (id)
     TABLEGROUP ads
     OPTIONS (UPDATETYPE='realtime')
  2. 插入数据

    分析型数据库MySQL版提供两种插入数据的方法。

    • 先调用用户自定义函数获取特征向量,然后插入数据。
      Select CLOTHES_FEATURE_EXTRACT_V1('https://example.com/img.jpg');
      说明 可以先通过SELECT确认特征向量是否正确。
      insert into products (id, image_url, feature) values (10, 'https://xxx/img.jpg', CLOTHES_FEATURE_EXTRACT_V1 ('https://xxx/img.jpg'));
    • 根据输入的URL自动获取特征向量,然后插入数据。使用这种方法插入数据时,需要在建表时制定feature列特征以获取用户自定义函数和URL列,类似上述ExtractFrom='CLOTHES_FEATURE_EXTRACT_V1(image_url)'
      insert into products(id, image_url) values(1, 'https://example.com/img.jpg');
  3. 查询数据

    分析型数据库MySQL版支持SELECT查询中携带用户自定义函数传入图片URL。例如,检索与图片链接https://xxx/img.jpg最相似的前10条记录的商品idimage_url

    Select id, image_url from ann(products, feature, CLOTHES_FEATURE_EXTRACT_V1 ('https://xxx/img.jpg'), 10);