paper2skills Playbook

LLM Augmented Recommendation — 大语言模型增强个性化推荐:自然语言驱动的跨域用户意图理解

Skill-LLM-Augmented-Recommendation · 05-推荐系统

experimentrecommendationragmulti_agentpricing推荐与搜索MAS与智能体工程定价与利润WF-F 动态定价
年化 ROI100万
实现难度⭐⭐⭐☆☆
业务视角
适用角色运营负责人 / 选品负责人 · 产品经理 · 广告优化师
适用平台Amazon · DTC 独立站 · 邮件/SMS 个性化
什么情况下用老客来了只买一件就走,相关产品没被推出去;Bundle 商品连带销售做不起来;站内推荐位点击率低
成功是什么样的老客连带购买率提升 20-35%,客单价提升,品类交叉销售做起来
业务痛点
老客复购率上不去相关产品没有被看到Bundle 凑单没人用新品没有曝光机会

1. 解决的问题

母婴跨境电商新用户注册率高但转化低,约 65% 新用户第一屏浏览 ≤3 个商品后跳出

2. 核心算法逻辑

传统推荐系统(Matrix Factorization、深度 CTR 模型)将用户行为编码为稠密向量,擅长捕捉行为规律,但无法理解用户用自然语言表达的复杂意图(如"适合3个月宝宝添加辅食前的益智玩具")。LLM 增强推荐的核心思路是:以 LLM 为语义桥梁,将自然语言偏好、物品描述、上下文对话统一嵌入到推荐打分过程中,而非单独依赖协同过滤信号。

3. 业务应用场景

业务背景:母婴跨境电商新用户注册率高但转化低,约 65% 新用户第一屏浏览 ≤3 个商品后跳出。原因是传统推荐依赖历史行为,新用户无行为数据,只能展示热销榜单,命中率低。

量化 ROI:以月均 5000 新用户计算,首单转化率提升 4.7pp,平均客单价 $85, 额外月增收入:5000 × 4.7% × $85 ≈ $20,000/月

数据要求: - 注册时用户自然语言输入(可选) - 物品 Title/Description/Category(标准 Feed) - 可选:用户历史(冷启动场景无需)

4. 输入数据要求

  • `alpha`(语义权重):冷启动用 0.7-0.9,热启动用 0.2-0.4
  • `CLARIFICATION_ENTROPY_THRESHOLD`:调低 → 更多澄清问题(精准但体验差),调高 → 更快推荐(体验好但不精准)
  • Grounding 相似度阈值:建议 0.3 以上,过低会引入噪声物品

5. 输出结果

  • `alpha`(语义权重):冷启动用 0.7-0.9,热启动用 0.2-0.4
  • `CLARIFICATION_ENTROPY_THRESHOLD`:调低 → 更多澄清问题(精准但体验差),调高 → 更快推荐(体验好但不精准)
  • Grounding 相似度阈值:建议 0.3 以上,过低会引入噪声物品

6. 业务价值 / ROI

100万

7. 代码模板

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

"""
LLM Augmented Recommendation
整合 LLMRec (语义增强) + BIGRec (LLM直接生成) + RecAgent (多轮对话)
母婴电商场景 mock 实现,含完整测试
"""

from __future__ import annotations

import numpy as np
from dataclasses import dataclass, field
from typing import Dict, List, Optional, Tuple
from collections import defaultdict


# ── 数据模型 ─────────────────────────────────────────────────────────────

@dataclass
class Item:
    """母婴商品"""
    item_id: str
    title: str
    category: str
    age_range: str          # 如 "0-6months", "6-12months"
    price: float
    safety_cert: str        # 如 "ASTM", "EN71", "CPSC"
    embedding: Optional[np.ndarray] = None  # 语义向量(LLM 生成)

    def to_text(self) -> str:
        return f"{self.title},适用{self.age_range},{self.category},${self.price},{self.safety_cert}"


@dataclass
class User:
    """用户"""
    user_id: str
    history: List[str] = field(default_factory=list)     # item_id 列表(时间倒序)
    cf_embedding: Optional[np.ndarray] = None            # 协同过滤向量
    sem_embedding: Optional[np.ndarray] = None           # 语义向量(LLM 增强)
    natural_language_pref: str = ""                      # 自然语言偏好描述


# ── LLMRec:语义增强推荐 ──────────────────────────────────────────────────

class LLMRecModel:
    """
    LLMRec:三类 Augmentation + 融合推荐
    简化版:用 TF-IDF 语义相似度模拟 LLM Embedding
    """

    def __init__(self, embedding_dim: int = 64):
        self.embedding_dim = embedding_dim
        self._item_registry: Dict[str, Item] = {}
        self._vocab: Dict[str, int] = {}

    def register_items(self, items: List[Item]):
        """注册物品库,构建词汇表并生成 mock Embedding"""
        for item in items:
            self._item_registry[item.item_id] = item
            for word in item.to_text().lower().split():
                if word not in self._vocab:

8. 论文来源

  • 2307.02391
  • 2308.07107
  • 2310.10108