Skip to content

关系建模

核心思想

实体本身只是孤立节点,关系才让图谱有了价值。

通过 5 类语义关系将商品实体连接为有向带权图,支撑后续的任务感知子图召回。

5 类语义关系

实体之间通过以下 5 类语义关系连接,构成有向带权图:

关系起点 → 终点用途权重含义
HAS_SPECProduct → Specification事实校验,禁止冲突描述规格重要程度
MADE_OFProduct → Material影响视觉渲染与文案触感词材质显著性
SUITABLE_FORProduct → UseCase触发 Lifestyle 图的环境光线道具场景匹配度
HIGHLIGHTSProduct → FeatureSellingPoint按权重排序进入 5-Point Bullets卖点优先级
COMPLIES_WITHProduct → Compliance与高风险词库做集合差,剔除违禁声明合规可信度

关系示意图

text
                  Product
            (Stainless Kitchen Rack)

       ┌─────┬───────┼───────┬───────┬─────┐
       │     │       │       │       │     │
   MADE_OF HAS_SPEC SUITABLE HIGHLIGHTS COMPLIES_WITH
       │     │       │       │           │
       ▼     ▼       ▼       ▼           ▼
   ┌───────────────────────────────────────────┐
   │ Material   Spec     UseCase   Feature  Compliance │
   │           ┌─────┐  ┌──────┐  ┌──────┐  ┌──────┐ │
   │ 304 SUS  │60×30×│ │Small │  │Foldab│  │Lead-  │ │
   │          │80cm  │ │Kitchn│  │le    │  │Free   │ │
   │          └─────┘ └──────┘  └──────┘  └──────┘ │
   │           ┌─────┐  ┌──────┐  ┌──────┐  ┌──────┐ │
   │          │8kg/  │ │Bathro│  │Anti- │  │Food   │ │
   │          │tier  │ │om    │  │rust  │  │Safe   │ │
   │          └─────┘ └──────┘  └──────┘  └──────┘ │
   └───────────────────────────────────────────┘

各关系详解

1. HAS_SPEC(商品 → 规格)

用途: 事实校验

应用场景

当 LLM 生成 Listing 中提到"占地仅 30×30cm"时,系统检查 HAS_SPEC 子图,发现实际尺寸为 60×30×80cm,触发硬约束拒绝该输出

抽取示例:

text
原文:Size 60×30×80cm, Folded 60×30×8cm, Load 8kg per tier

抽取关系:
  <HAS_SPEC, Product, Size_60x30x80cm, weight=1.0, evidence="Size 60×30×80cm">
  <HAS_SPEC, Product, Folded_60x30x8cm, weight=0.85, evidence="Folded 60×30×8cm">
  <HAS_SPEC, Product, Load_8kg_per_tier, weight=0.90, evidence="Load 8kg per tier">

2. MADE_OF(商品 → 材质)

用途: 影响主图风格选择 + 文案触感词

text
材质 → 视觉提示词的映射:
  304 Stainless Steel → "brushed stainless, cool metallic sheen, anti-fingerprint finish"
  Bamboo              → "warm natural bamboo grain, matte finish, eco-friendly aesthetic"
  ABS Plastic         → "smooth matte plastic, modern minimalist look"

材质 → 触感词的映射:
  304 Stainless Steel → "durable, premium, easy-clean"
  Bamboo              → "natural, lightweight, eco-conscious"
  ABS                 → "lightweight, impact-resistant"

3. SUITABLE_FOR(商品 → 场景)

用途: Lifestyle 图与 4 宫格场景生成

权重 = 该场景与商品的匹配度(0.0 - 1.0):

text
SUITABLE_FOR 关系(按 weight DESC):
  ├── Small Kitchen Apartment     (1.0)  ← 最佳契合
  ├── Bathroom Storage             (0.7)
  ├── Office Pantry                (0.6)
  ├── Outdoor Camping              (0.5)
  └── Garage Workshop              (0.3)  ← 弱契合,可能不召回

生成 4 宫格时取 Top-4 weight:
  Top-4: Small Kitchen / Bathroom / Office / Outdoor

4. HIGHLIGHTS(商品 → 卖点)

用途: 决定 Bullet 顺序

权重通过用户反馈学习调整:

text
初始权重:
  Foldable           1.0
  Anti-rust          1.0
  Multi-tier         1.0
  304-grade          1.0

经过 100 个 Listing 测试 + 用户反馈:
  Foldable           1.15 (+15%)  ← 用户最常保留
  Multi-tier         1.05 (+5%)
  304-grade          1.00
  Anti-rust          0.92 (-8%)   ← 用户常重写

→ Bullet 1 优先用 Foldable,Anti-rust 降级到 Bullet 4

5. COMPLIES_WITH(商品 → 合规)

用途: 违禁词集合差运算

text
COMPLIES_WITH 子图:
  Lead-Free, Food Contact Safe, BPA-Free

亚马逊违禁词库(部分):
  FDA approved, Antibacterial, Kills 99.9%, Best Seller, ...

生成时硬约束 Prompt:
  "你可以基于 COMPLIES_WITH 子图描述合规性(lead-free, food-safe),
   但严禁使用以下违禁词列表:[FDA approved, Antibacterial, ...]"

权重设计

初始权重

实体抽取阶段,LLM 输出的 attrs 中包含 weight 字段:

json
{
  "type": "FeatureSellingPoint",
  "name": "Foldable",
  "attrs": { "weight": 0.95 }   // LLM 主观判断
}

反馈学习机制

python
def update_weight(relation_id, user_action):
    """
    user_action:
      'kept'      → weight × 1.05
      'modified'  → weight × 1.00 (不变)
      'removed'   → weight × 0.95
      'requested' → weight × 1.10  # 用户主动请求强化
    """
    factor = ACTION_FACTORS[user_action]
    db.execute(
        "UPDATE kg_relations SET weight = MIN(weight * ?, 2.0) WHERE id = ?",
        (factor, relation_id)
    )

自我进化

这种轻量学习机制让平台越用越懂用户:

  • 个人偏好(喜欢强调 "premium" / "eco" / ...)
  • 类目特性(厨房用品多强调 "easy-clean",户外多强调 "durable")
  • 季节趋势(圣诞前 "gift-ready" 卖点权重升高)

跨 SKU 实体复用

同一类目的多个 SKU 共享通用节点:

text
SKU_KitchenRack_001 ─┬─ SUITABLE_FOR ──→ Small_Kitchen_Apartment ─┐
SKU_KitchenRack_002 ─┤                          ↑                    │
SKU_KitchenRack_003 ─┘                                                │

SKU_BathroomShelf_001 ──── SUITABLE_FOR ─────────┘                   │

                       共享节点:跨多 SKU 学习反馈                     │
                       UseCase.attrs.refined_description ←────────────┘

收益:

  • 高频场景的描述质量持续提升
  • 新 SKU 可秒级复用历史智慧
  • 知识图谱形成复利效应

关系数据示例

sql
SELECT * FROM kg_relations WHERE source_id = 'ent_product_001';
text
| id        | source     | target           | rel_type        | weight | evidence              |
|-----------|------------|------------------|-----------------|--------|-----------------------|
| rel_001   | ent_001    | ent_002 (Mat)    | MADE_OF         | 1.00   | Material: 304 SUS     |
| rel_002   | ent_001    | ent_003 (Spec)   | HAS_SPEC        | 1.00   | Size: 60×30×80cm      |
| rel_003   | ent_001    | ent_004 (Spec)   | HAS_SPEC        | 0.85   | Folded: 60×30×8cm     |
| rel_004   | ent_001    | ent_005 (Spec)   | HAS_SPEC        | 0.90   | Load: 8kg per tier    |
| rel_005   | ent_001    | ent_006 (UseC)   | SUITABLE_FOR    | 0.95   | Implicit: small space |
| rel_006   | ent_001    | ent_007 (UseC)   | SUITABLE_FOR    | 0.65   | Implicit: bathroom    |
| rel_007   | ent_001    | ent_008 (Feat)   | HIGHLIGHTS      | 1.15   | "Foldable" - boosted  |
| rel_008   | ent_001    | ent_009 (Feat)   | HIGHLIGHTS      | 0.92   | "Anti-rust" - dampen  |
| rel_009   | ent_001    | ent_010 (Comp)   | COMPLIES_WITH   | 1.00   | Lead-free certified   |
| rel_010   | ent_001    | ent_011 (Comp)   | COMPLIES_WITH   | 1.00   | Food-contact safe     |

子图查询

任务感知的子图查询 SQL:

sql
-- 召回 HAS_SPEC + HIGHLIGHTS + COMPLIES_WITH
SELECT t.*, r.rel_type, r.weight, r.evidence
FROM kg_relations r
JOIN kg_entities t ON t.id = r.target_id
WHERE r.source_id = :product_id
  AND r.rel_type IN ('HAS_SPEC', 'HIGHLIGHTS', 'COMPLIES_WITH')
ORDER BY r.rel_type, r.weight DESC;
sql
-- 召回 SUITABLE_FOR + Top-1 Material
SELECT t.*, r.rel_type, r.weight
FROM kg_relations r
JOIN kg_entities t ON t.id = r.target_id
WHERE r.source_id = :product_id
  AND r.rel_type IN ('SUITABLE_FOR', 'MADE_OF')
ORDER BY r.weight DESC
LIMIT 5;
sql
-- 仅召回 COMPLIES_WITH
SELECT t.name AS compliance
FROM kg_relations r
JOIN kg_entities t ON t.id = r.target_id
WHERE r.source_id = :product_id
  AND r.rel_type = 'COMPLIES_WITH';

性能

操作耗时
子图召回(5 类全量)< 60 ms
单关系类型召回< 30 ms
跨 SKU 关系查询< 100 ms
关系权重更新< 5 ms

下一步

基于 MIT 协议开源 · 中国大学生计算机设计大赛软件应用与开发类作品