系统需求
电商卖家在准备新商品资料时,需要拍摄商品照片、标注商品类别和属性。以女装为例,需要设置子类目是裙子或者衬衣,衬衣需要标注是圆领、V领、长袖、短袖、风格等多种属性。随着商品类别的增长,将积累大量的图片素材。如果这些图片素材没有被很好地管理和利用,则经常会出现找不到之前已经准备好的素材,需要重新拍摄的情况。
分析型数据库MySQL版可以帮助电商卖家管理和检索图片素材,可以根据图片类别、属性或者相似图片做多模检索。例如,检索与输入图片最相似且价格在200元~300元之间的所有商品的图片。
实现架构
分析型数据库MySQL版作为商品属性提取和图片管理的核心组件,数据读写流程如下所示。

插入数据
应用端通过以下步骤向商品库中插入数据。
- 应用端调用OSS服务,将图片插入OSS,获得对应的URL。
说明 当前只支持HTTP和HTTPS协议的URL。
- 应用端调用特征提取服务,获得图片抽象后的特征向量。
- 应用端调用分析型数据库MySQL版服务将步骤一中的URL和步骤二中的特征向量一起插入商品库。
查询数据
应用端可以采用上述架构图中的任意一种方案从商品库中查询数据,查询步骤如下所示。
- 应用端调用OSS服务,将要查询的图片插入OSS,获得对应URL。
说明 当前只支持HTTP和HTTPS协议的URL。
- 应用端调用特征提取服务,获得URL对应图片抽象后的特征向量,同时也支持直接传入图片获取特征向量。
- 应用端调用分析型数据库MySQL版,获得相似特征向量图片对应的URL列表。
- 应用端根据URL列表,调OSS服务,获取并返回图片。
示例
以下是一个简单的商品属性提取示例。
- 通过以下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')
- 插入数据
分析型数据库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');
- 先调用用户自定义函数获取特征向量,然后插入数据。
- 查询数据
分析型数据库MySQL版支持SELECT查询中携带用户自定义函数传入图片URL。例如,检索与图片链接
https://xxx/img.jpg
最相似的前10条记录的商品id
和image_url
。Select id, image_url from ann(products, feature, CLOTHES_FEATURE_EXTRACT_V1 ('https://xxx/img.jpg'), 10);