paper2skills Playbook

层级商品知识图谱自动构建(图片→KG)

Skill-Hierarchical-Product-KG-Construction · 08-知识图谱

causalexperimentforecastingknowledge_graphvisual_generation知识图谱与RAG风控与合规视觉内容生成WF-D 选品扫描WF-G Listing内容优化
年化 ROI0 万元
实现难度⭐⭐⭐☆☆
业务优先级⭐⭐⭐☆☆
业务视角
适用角色选品负责人 / 运营负责人 · 数据分析师 · 供应链负责人
适用平台Amazon 品类体系 · 竞品 ASIN 网络分析
什么情况下用品类很多,不清楚品类间的关联,没法做系统性类目扩张规划;竞品矩阵太复杂,品牌/SKU/渠道理不清
成功是什么样的建立品类知识图谱,清晰看到哪些是入口品/引流品/利润品,指导下一步选品扩张方向
业务痛点
品类太多不知道先做哪个竞品关系理不清楚不知道用户买了奶瓶还会买什么类目扩张没有逻辑

1. 解决的问题

零样本下用商品图片自动构建跨语种属性知识图谱:Schema 先行 → VLM 多轮萃取 → LLM 约束推理 → 层级扩展 → 程序化去重。建库成本与 SKU 数量线性解耦,无需人工标注模板。

2. 核心算法逻辑

零样本下用商品图片自动构建跨语种属性知识图谱:Schema 先行 → VLM 多轮萃取 → LLM 约束推理 → 层级扩展 → 程序化去重。建库成本与 SKU 数量线性解耦,无需人工标注模板。

3. 业务应用场景

- 业务问题:出海卖家上架 1 万件母婴新品到 Amazon US,需逐 SKU 填写品类路径(`Baby > Feeding > Baby Formula > Infant Formula 0-6m`)、净重(g)、包装材质、适用月龄等 10+ 个强制属性。人工填写需 2-3 人月,且因中英描述不一致导致 listing 违规下架风险。 - 数据要求:仅需厂商提供的商品主图(JPG/PNG ≥ 448×448)和可选的中文描述 - 预期产出:对每件 SKU 自动输出 Amazon Flat File 兼容 JSON,含完整品类路径 + 物理属性 + 适用人群 - 业务价值:1 万 SKU 的

- 业务问题:某母婴出海选品平台需对马来西亚/印尼市场 5 万件 SKU 建可检索属性图谱。商品多为中国制造,只有中文描述+图片,但目标市场用 Bahasa/英文搜索。传统做法需要 3 套语种各建一遍图谱。 - 数据要求:商品主图(语言无关)+ 顶层品类配置文件(英文/中文/Bahasa 三语对照表) - 预期产出:统一的层级 KG,中间节点天然可挂载多语种别名(`安抚奶嘴 / pacifier / dot bayi`),支持任意语种检索 - 业务价值:单一图谱多语种复用,建图成本从 30 人月降到 5 GPU 天;因多语种检索召回率提升 25-40%,选品平台 GMV 增量可量化为单月 30

4. 输入数据要求

请查看原始代码模板获取输入规格。

5. 输出结果

请查看原始代码模板获取输出规格。

6. 业务价值 / ROI

  • 节省 listing 准备人力:1 万 SKU × 3 人月 × 月薪 1.5 万 = 45 万元/年/卖家
  • 减少违规下架损失:违规率 5-8% → 0.5%,按平均 GMV 100 万元/月计 = 节省 50-80 万元/年
  • 总收益:单卖家年增 95-125 万元,投入 GPU 推理成本约 2-5 万元
  • ROI ≈ 30-60 倍
  • 多语种建图复用:30 人月 → 5 GPU 天 = 节省人工成本 ~100 万元
  • 多语种检索召回提升 25-40%:中型平台月 GMV 5000 万 × 0.5%(召回提升的转化贡献) = 月增 25 万元

7. 代码模板

代码块数量:1 · 路径:未检测到

"""
Hierarchical Product KG Construction — 论文 arXiv:2410.21237 最小骨架实现

依赖:
    pip install sglang[all] transformers pillow

注意:
    论文无公开代码,以下骨架按论文 §3-4 描述还原。
    生产环境替换 mock VLM/LLM 为 InternVL2-8B + Llama3.1-70B 或同等 API。
"""

from __future__ import annotations

import json
import re
from dataclasses import dataclass
from typing import Callable, Dict, List, Optional


BABY_ECOM_SCHEMA: Dict[str, object] = {
    "product_name": "str",
    "category": {
        "type": "choices",
        "options": [
            "Infant Formula", "Baby Food", "Baby Bottle", "Pacifier",
            "Diaper", "Baby Clothing", "Stroller", "Baby Carrier",
            "Baby Wipes", "Baby Skincare", "Others",
        ],
    },
    "brand": "str",
    "primary_color": {
        "type": "choices",
        "options": ["White", "Pink", "Blue", "Green", "Yellow", "Purple", "Others"],
    },
    "package_material": {
        "type": "choices",
        "options": ["Plastic", "Metal", "Cardboard", "Glass", "Fabric", "Others"],
    },
    "weight_kg": "float",
    "age_range": {
        "type": "choices",
        "options": ["0-6m", "6-12m", "1-3y", "3-6y", "All ages"],
    },
}


@dataclass
class ProductKGNode:
    properties: Dict[str, object]
    category_hierarchy: List[str]


def _mock_vlm_extract(image_path: str, schema: Dict[str, object]) -> str:
    desc_parts = []
    fname = image_path.lower()
    if "aptamil" in fname or "formula" in fname:
        desc_parts.append("infant formula in metallic cylindrical can")
    if "pacifier" in fname or "dot" in fname:
        desc_parts.append("silicone pacifier in pink/blue plastic packaging")
    if "diaper" in fname:

8. 论文来源

  • 2410.21237