PersonaBot RAG画像生成 - LLM+RAG驱动的客户画像落地工具
Skill-PersonaBot-RAG-Profiling · 14-用户分析
1. 解决的问题
Momcozy 在 Amazon US 的 S9/S12 系列累积数万条评论,但产品团队只能依赖人工抽查了解用户诉求,无法识别"职场背奶妈妈"与"新手妈妈"在痛点上的差异,导致广告文案和详情页对所有人说同样的话,转化率损耗严重 - 数据要求: - Amazon Review 数据(user_id、product_id、评论文本、评分、时间戳),CSV 格式 - 数量:每 SKU ≥ 50
2. 核心算法逻辑
传统用户画像依赖人工访谈或问卷,周期长(数周)、主观性强、难以规模化更新。PersonaBot 的核心创新是:把 RAG(检索增强生成)与 LLM 结合,将原始评论/调研文本自动转化为结构化画像。RAG 负责"锚定事实"——从真实数据中检索支撑证据,LLM 负责"语义理解"——识别需求、痛点、场景并组织成可读画像。两者结合既保证画像可溯源(每个维度都有评论证据),又保证语义理解深度(超越关键词匹配)。
3. 业务应用场景
- 业务问题:Momcozy 在 Amazon US 的 S9/S12 系列累积数万条评论,但产品团队只能依赖人工抽查了解用户诉求,无法识别"职场背奶妈妈"与"新手妈妈"在痛点上的差异,导致广告文案和详情页对所有人说同样的话,转化率损耗严重 - 数据要求: - Amazon Review 数据(user_id、product_id、评论文本、评分、时间戳),CSV 格式 - 数量:每 SKU ≥ 500 条评论以覆盖多种用户类型 - 执行步骤: 1. 调用 `ReviewRetriever` 按用户聚合评论 2. 用关键词分群(`['上班', '公司', '背奶']` → 职场群体) 3. `
- 业务问题:Momcozy 新品上市后,3 星以下评论散落在评论区,产品团队难以快速提炼"高频结构性缺陷"与"偶发性用户误操作",导致产品迭代方向模糊 - 数据要求: - 评分 ≤ 3 的低分评论子集(最近 90 天),user_id + 评论文本 - 建议量:每 SKU ≥ 200 条负面评论 - 执行步骤: 1. 过滤低分评论构建"差评语料" 2. `generate_segment_persona(segment_name='低分用户', keywords=['差', '烂', '噪音', '坏'])` 3. 输出 `topic_distribution`(噪音/清洗/续航等维度频率)
4. 输入数据要求
请查看原始代码模板获取输入规格。
5. 输出结果
请查看原始代码模板获取输出规格。
6. 业务价值 / ROI
- 核心代码模板已就绪,仅需对接真实 LLM API 和评论数据
- 无需深度学习环境,Python + pandas + LLM API 即可运行
- 可 2 周内完成 MVP 上线
7. 代码模板
代码块数量:1 · 路径:paper2skills-code/nlp_voc/personabot_rag_profiling
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
PersonaBot RAG用户画像生成 - 母婴出海业务模板
代码路径: paper2skills-code/nlp_voc/personabot_rag_profiling/model.py
"""
import numpy as np
from typing import List, Dict
from dataclasses import dataclass, asdict
from collections import defaultdict
@dataclass
class Review:
"""评论数据结构(对接 Amazon Review API 导出格式)"""
review_id: str
user_id: str
product_id: str
text: str
rating: int
timestamp: str
@dataclass
class PersonaSchema:
"""用户画像输出结构"""
demographics: Dict[str, str] # 人口统计/角色标签
needs: List[str] # 核心需求列表
pain_points: List[str] # 痛点列表
preferences: List[str] # 产品偏好
usage_scenarios: List[str] # 使用场景
persona_summary: str # 一句话画像摘要
class ReviewRetriever:
"""
RAG 检索器(简化版,生产环境替换为 FAISS/Chroma 向量检索)
生产替换指南:
from langchain_community.vectorstores import Chroma
from langchain_openai import OpenAIEmbeddings
vectorstore = Chroma.from_texts(review_texts, OpenAIEmbeddings())
docs = vectorstore.similarity_search(query, k=5)
"""
def __init__(self, reviews: List[Review]):
self.reviews = reviews
self.user_reviews = defaultdict(list)
for r in reviews:
self.user_reviews[r.user_id].append(r)
def retrieve_by_user(self, user_id: str) -> List[Review]:
return self.user_reviews.get(user_id, [])
def retrieve_similar_users(self, user_id: str, top_k: int = 5) -> List[str]:
"""Jaccard相似度(生产环境替换为向量余弦相似度)"""
user_reviews = self.retrieve_by_user(user_id)
if not user_reviews:
return []
8. 论文来源
- 2505.17156