资讯动态

用LLM重构用户画像系统:从架构设计到落地避坑全记录

发布时间:2026/8/30 3:06:53 来源:尧图企业网站定制
简介自然语言处理与深度学习技术正在重塑用户行为分析的方式。传统基于规则引擎和统计模型的标签体系在面对客服对话、商品评论等非结构化数据时存在维度固化、高层信息缺失等瓶颈。大语言模型LLM凭借强大的语义理解和推理能力为情感识别、消费习惯挖掘、价值观推断等任务提供了新思路。本文从系统架构设计、多源数据融合、提示词工程、标签生命周期管理等环节完整记录了用LLM重构用户画像系统的工程实践并针对token成本控制、标签幻觉、冷启动等落地难题给出了可复用的解决方案。无论你是做推荐系统、CRM还是数据平台这套沉淀下来的方法论都能直接参考。 做了半年多的用户画像系统重构核心思路就是用大语言模型LLM把过去的标签体系完整重做了一遍。从客户画像构建、用户行为分析到情感识别、消费习惯挖掘再到价值观推断和动态标签生成整条链路都离不开自然语言处理和深度学习的配合。这篇文章会把系统从架构设计到落地踩坑的完整过程记录下来重点讲清楚每个环节为什么要这么做、实际怎么做以及上线后遇到的那些文档里不会写的问题。如果你是做用户增长、CRM、推荐系统或者数据平台的同学这里面的方案和坑应该都能直接参考。1. 系统整体架构与方案选型为什么是LLM而不是传统规则1.1 传统用户画像系统的三个死穴先说为什么会有这个项目。传统的用户画像系统主流做法是基于规则引擎和统计模型打标签比如“过去30天购买3次以上”“浏览了A类商品超过10次”。这类系统在结构化数据上好使但遇到非结构化数据就基本抓瞎——客服对话、商品评论、售后工单、问卷反馈这些文本里藏着大量用户真实意图和情绪规则根本写不完。传统系统另外两个问题也很致命。第一标签维度固化规则是运营和产品手写维护的改一个标签要排期迭代速度跟不上业务。第二高层级的信息提取不出来比如“这个用户是不是价格敏感型”“他对环保材质有多在意”“最近情绪是不是不太好”这些靠统计口径根本算不出来但恰恰又是精细化运营最需要的信息。所以这个项目立项的时候目标就很明确用LLM替代和增强传统画像系统里“手工规则简单统计”的部分让系统能理解文本、能推理用户偏好、能自动生成和维护标签。1.2 整体架构设计五层结构整个系统我把它拆成五层每层职责单一方便后面做监控和迭代。数据接入层负责对接业务库、埋点日志、客服系统、工单系统把结构化数据订单、浏览、用户属性和非结构化数据评论文本、对话记录、工单描述统一收进来。数据融合层做ID归一、时间对齐、数据清洗和脱敏把散落的多源数据变成以用户为维度的统一事件流。LLM理解层这是整个系统的大脑。基础LLM负责情感识别、意图理解、偏好推断、价值观维度提取Embedding模型负责把文本向量化用于候选标签召回和相似用户计算。标签生成层把LLM输出结果转为结构化标签和规则标签合并做冲突消解、置信度校准和生命周期管理。画像服务层对外提供画像查询API供推荐、营销、客服等业务方调用。这里要强调一个设计原则不是我上来就让LLM直接输出所有标签。LLM输出不稳定而且token成本高。所以整体策略是“规则打底、LLM增强、向量召回辅助、人工兜底”。能用结构化统计解决的比如近30天购买频次坚决用规则LLM只处理那些必须靠语义理解的环节。1.3 模型选型的心得不是只有一个LLM在干活很多同学以为LLM画像系统就是调一个大模型接口把所有用户数据一股脑丢进去让它返回标签。真这么做效果不会好成本还高。我的做法是分模型、分场景基础对话/理解模型用支持长上下文的主流开源或商用模型负责情感识别、价值观推断、对话摘要这类复杂语义任务。这类任务要求推理能力强模型不能太小。Embedding模型单独用一套向量模型负责将评论文本、客服沟通内容转成向量。目的是做两件事一是把历史标签候选集向量化用相似度检索召回“这个用户可能命中哪些标签”二是找相似用户群。小模型规则兜底一些高频但简单的任务比如垃圾文本过滤、敏感信息识别用文本分类小模型就行没必要走LLM。选型时还要考虑部署环境。如果数据隐私要求高建议本地部署私有化模型如果预算有限可以用API配合缓存策略降低调用量。我在项目中是本地部署为主API做旁路兜底两边跑同样的评估集对比效果哪个准用哪个。2. 多源数据融合结构化与非结构化数据的对齐方法2.1 数据接入与统一事件流建模多源数据融合是整个系统的地基。数据接不干净后面LLM再强也是垃圾进垃圾出。先说数据接入。这个系统接的数据大致分五类用户属性数据注册信息、地域、年龄、性别等基本是结构化表格一张user_profile表搞定。行为数据埋点日志、浏览记录、搜索记录、点击序列量大、字段规整适合做统计特征。交易数据订单表、退款表、售后表能算客单价、频次、品类偏好等强信号。客服交互数据在线客服对话、电话录音转写文本、工单描述。这类数据是LLM最能发挥价值的地方但也是最脏的。用户生成内容商品评价、社区帖子、问卷开放题。文本口语化严重信息密度高。接入之后我统一建模成事件流。每个事件是一个JSON对象包含user_id、event_type、timestamp、payload四个字段。user_id是全局统一ID所有来源的数据都要经过ID映射归一这一步在数据接入层完成。统一事件流的好处是LLM可以按时间线理解用户全貌。比如“用户A在7月1日购买了一个保温杯7月3日发了一条评价说‘杯盖有点难拧但是保温效果很好’7月5日客服对话里说‘想换一个大容量的’”只有按时间线串起来才能判断出用户A对产品整体满意、但对杯盖设计有意见、且存在复购升级需求。这些信息分散在三张表里不做融合任何模型都看不到完整上下文。2.2 非结构化文本的处理链路非结构化文本是LLM画像系统的核心原料。处理链路我总结为四步清洗脱敏、分段切分、语义向量化、入模。清洗脱敏这步最容易被忽略。客服对话里有大量停顿词、表情符号、错别字、行业黑话还有姓名、电话、地址这类敏感信息。我要求所有文本在进入LLM之前必须过一遍脱敏管道把手机号、身份证、地址、姓名替换成占位符避免隐私泄露。这一步是合规红线不能省。分段切分很讲究。客服对话动辄几十轮直接全文塞给LLM上下文太长容易丢失重点token成本还高。我的做法是先按对话轮次切块每个block包含“用户说客服说”的相邻对再按话题做简单聚类。商品评价则是一条一处理因为评价通常信息比较独立。语义向量化用的是Embedding模型把每段文本转成768或1024维的向量存入向量数据库。这个向量的作用是召回候选标签——系统维护一个标签定义库每个标签定义也预先向量化。来了一个新用户文本先算语义相似度召回可能相关的标签再让LLM针对这些候选标签做精确判定。这比让LLM从几万个标签里大海捞针靠谱得多。2.3 多源冲突消解与归一化多源数据必然有冲突。典型场景行为数据里用户A最近一直在浏览高端西装但订单记录里全是平价T恤客服对话里又在抱怨“这家店东西太贵了”。这些信号看起来就是矛盾的。冲突消解我的做法是三层第一层是时间权重。越近的行为权重越高。浏览行为代表短期兴趣订单代表真实购买力客服对话代表当下情绪。三者时间不同权重自然不同。第二层是来源可信度。订单和支付数据可信度最高行为日志次之客服对话和评价文本再次之。当多个来源冲突时以可信度高的来源为主。第三层是LLM综合研判。前两层解决不了的结构性矛盾交给LLM做综合判断。比如上面的场景LLM可以输出一个结论“用户当前处于消费升级观察期对品质有兴趣但价格敏感度高尚未形成高端品类购买习惯。”这个结论比任何一个单一数据源都更接近真实用户状态。归一化则是统一格式。所有标签输出都有一套标准schema字段包括label_name、label_value、confidence、source、timestamp、expire_time。无论标签来自规则还是LLM都必须按这个格式落库否则下游没法统一消费。3. 核心能力实现情感识别、消费习惯挖掘、价值观推断3.1 情感识别从单条文本到情绪趋势情感识别是整个系统里ROI最高的模块也是最容易出效果的。刚开始我以为这就是个文本分类任务——把评论分为正、中、负三类。后来发现真实业务没那么简单。客户对单个商品的情绪和对整个品牌服务的情绪是两回事。比如用户写“商品质量很好但是物流太慢了客服还爱答不理”你对商品的情感是正向的对物流和客服的情感是负向的。如果只打个“正”或“负”标签这个信息就丢失了。所以我把情感识别拆成两个维度情感对象和情感极性。情感对象商品、物流、客服、价格、售后、包装等情感极性-2强烈不满、-1不满、0中性、1满意、2非常满意实际操作中我给LLM的提示词模板大概长这样你是一个用户情感分析助手。请分析以下用户文本中针对每个具体对象的情感倾向。 用户文本{text} 要求 1. 识别文本中提到的所有情感对象商品、物流、客服、价格、售后、包装等 2. 对每个对象给出情感极性取值只能是 -2、-1、0、1、2 3. 给出简短依据一句话说明判断理由 4. 如果文本中没有明确提到某对象不要臆测 输出JSON格式 {sentiments: [{target: 商品, polarity: 1, reason: ...}]}情感识别做出来之后我还按用户维度聚合出情绪趋势。比如一个用户最近30天内情绪走向从正转负这通常意味着出现了售后问题是流失预警信号。把这个信号接入客服系统可以让客服优先回访高情绪风险用户挽回率有明显提升。情感识别落地中有几个容易踩的坑我在后面问题章节会详细说这里先提一个LLM在情绪边界样本上容易“中庸化”明明用户已经很生气了模型可能只给个-1。解决办法是在prompt里加强烈情绪对应的典型表达示例比如“必须给个说法”“再不解决我就投诉”这类话要映射到-2。3.2 消费习惯挖掘规则与LLM的混合策略消费习惯是画像系统里最依赖结构化数据的部分。订单表能直接算出来的东西我不建议让LLM算统计口径更准、更快、更便宜。规则层计算的基础特征包括近30天/90天消费频次平均客单价、客单价分布品类购买占比、品类留存率购买时段分布促销敏感度促销活动期间下单占比价格带分布这些特征直接交给LLM太浪费。真正需要LLM介入的是两件事一是跨品类偏好推断二是消费行为背后的动机识别。先看跨品类偏好。一个用户买过婴儿奶粉、也买过宠物粮规则只能打上“母婴类”“宠物类”两个标签但LLM可以进一步推断“该用户可能处于育儿阶段且家里养宠物”这个洞察对营销选品意义很大。动机识别更有意思。同样是买高端护肤品一个用户可能是成分党、一个可能是盲目跟风、一个可能是送人。规则看到的是同一个购买行为但转化策略完全不同。LLM可以从用户的评价文本和搜索记录里推断出动机输出“成分关注型”“品牌驱动型”“社交送礼型”这类标签。实操中我的策略是规则层算硬指标LLM层推导软标签最后用一个拼接器把两部分合并。拼接的时候规则标签直接采纳LLM标签附加置信度低于阈值的弃用。这样既保证准确率又兼顾覆盖面。3.3 价值观推断识别客户“在意什么”价值观推断是这套系统里争议最大、也最容易做偏的模块。先澄清一点这里的“价值观”不是政治立场、意识形态而是消费价值观和关注维度——也就是用户在做消费决策时更看重的因素。我总结出的维度和对应信号品质优先会主动提及材质、工艺、耐用性、检测报告性价比敏感高频提到价格、折扣、划算、值不值环保意识关注可降解、再生材料、低碳、公益捐赠服务体验在意客服响应速度、售后态度、退换货便利度品牌认同会提到品牌历史、品牌故事、忠实使用年限社交展示注重外观、包装、他人评价、晒单需求做法是先让LLM阅读用户的所有非结构化文本按照上面这些维度提取关注度分数0到100分然后生成“价值观关注向量”。这个向量存进用户画像在做推荐和营销文案时非常有用——对环保意识分的用户推荐产品时优先展示绿色认证对性价比敏感分的用户则侧重优惠方案。这里要特别强调一个边界价值观推断只能输出“用户在意什么”绝不能输出“用户是什么样的人”。差之毫厘谬以千里。系统只描述客观观察到的关注倾向不做道德评判、不做人群定性。这是我在项目启动前就跟团队约法三章的红线。从技术上讲价值观推断是幻觉高发地带。用户没提环保模型可能因为“天然”“有机”这类词就打出环保护分。为了压幻觉我的prompt里明确加了一条“如果文本中没有提到任何与某维度相关的信息该维度分数必须为0。”同时在后处理阶段做校验文本里完全没有对应关键词或同义改写命中的维度分数直接置0。3.4 动态标签生成标签的生成、更新与淘汰标签模块是整个系统的出口也是业务方直接能看到的东西。我设计的标签体系分三层事实标签来自结构化数据如“近30天消费5次”“收货地址在上海”。这类标签不经过LLM准确率要求100%。规则标签基于业务规则自动计算如“高活跃用户”“沉睡用户预警”。逻辑固定定期更新。LLM增强标签来自语义理解如“价格敏感度高”“环保关注者”“客服情绪负面倾向”。这类标签带置信度和过期时间需要动态管理。标签生命周期管理是整个模块的难点。LLM标签不能一劳永逸用户会变模型会漂移。我的做法是每条标签有过期时间expire_time短则7天、长则90天过期自动失效每周对比标签分布和抽样复核集发现准确率掉出阈值就触发模型重训或prompt调优新产生的LLM标签先打入影子环境在线对比7天再决定是否正式上线标签动态生成的工作流大概是新用户文本进入系统先走向量召回候选标签然后LLM逐一判定是否命中输出带置信度的标签集合。这些标签按schema落库同时写入用户画像时间线。业务方查询画像时接口返回的是“当前生效标签最近失效标签置信度”方便下游决策。4. 工程化落地评估、调优与成本控制4.1 提示词模板与结构化输出设计提示词工程在这个项目里占了很大工作量。LLM效果好不好一半看模型一半看prompt。我总结了几条实操经验。第一输出必须结构化。所有面向下游的LLM调用我都要求输出JSON并且用JSON Schema约束字段。这样做的好处是下游解析稳定不会出现“模型给你一段散文你还要想办法捞关键信息”的窘境。情感识别模块的JSON Schema大致这样{ type: object, properties: { sentiments: { type: array, items: { type: object, properties: { target: {type: string, enum: [商品, 物流, 客服, 价格, 售后, 包装, 其他]}, polarity: {type: integer, minimum: -2, maximum: 2}, reason: {type: string} }, required: [target, polarity, reason] } } }, required: [sentiments] }第二少样本示例比规则描述管用。与其写“请识别用户的愤怒情绪”不如给两条真实示例让模型参照示例的语气和格式输出。尤其对情绪临界样本示例的作用非常明显。第三给模型说“不知道”的权利。我在每个prompt里都加了“如果信息不足请明确输出unknown”并且在后处理里规定unknown算无效输出。这一条直接砍掉了大概20%的幻觉标签。4.2 画像质量怎么评估三层评估体系画像系统的评估不能只看最终的标签准确率那太事后了。我搭了三层评估体系。第一层是单任务准确率。针对情感识别、价值观推断、消费动机识别等每个任务攒一批人工标注的评测集每次修改prompt或换模型都在评测集上跑分。评测集要覆盖边界样本和反常识样本比如“退款的用户其实对客服很满意”这类情况。第二层是标签质量评估。对比LLM输出标签和业务方人工标注的差异计算精确率、召回率、F1值。同时监控标签覆盖率——标签覆盖太低说明系统偏保守覆盖过高说明可能在乱打标。第三层是业务效果评估。画像系统最终要服务业务。我会选定几个业务指标做A/B测试比如基于新画像的营销推荐CTR是否提升、客服优先回访名单的挽回率是否提升。这层评估周期长但最有说服力。4.3 token成本与性能优化实战LLM画像系统最现实的瓶颈就是token成本。全量用户跑一遍深度理解费用可能高到让老板皱眉。我的优化策略有五个方向。第一是分优先级。高价值用户VIP、高活跃、高消费跑全量深度分析中低价值用户只跑轻量情感识别沉睡用户可以不做语义分析。第二是缓存复用。同一用户在一段时间内没有新增事件画像结果直接走缓存不重复调用模型。我设置了按用户维度的缓存TTL活跃用户24小时普通用户72小时。第三是batch化。LLM支持在一个请求里塞多个样本我会把同批次的文本拼在一起跑批量推理减少API调用次数。实测batch化能省30%以上的开销。第四是用小模型过滤。先用小分类模型做粗筛只有粗筛通过的文本才进入大模型精细分析。比如先过滤出含明确情绪倾向的评论再让LLM做细粒度分析。第五是本地部署量化模型。如果条件允许把主力模型量化到INT8跑在本地GPU上推理成本能再降一个量级。我实际测过量化后推理质量损失在可接受范围内。5. 常见问题与排查技巧实录5.1 常见问题速查表做这套系统过程中我整理了高频问题的排查清单直接放出来供参考。问题现象可能原因排查方法解决建议标签明显不符合用户实际情况数据源冲突未消解检查用户事件流时间线看是否有多来源矛盾调高可信来源权重或让LLM做综合研判大量标签置信度低被过滤候选标签召回不准确检查向量召回TopK命中率优化Embedding模型或调整阈值同一用户标签频繁变化短周期行为被过度解读查看标签更新频率和触发事件增加时间窗口平滑短期波动不更新长期标签情感识别在边界样本上偏向中性prompt缺少极端情绪示例抽样看模型对愤怒/满意文本的输出分布补充少样本示例强化极端情绪映射规则新用户画像空白冷启动没有历史数据检查用户事件流长度用实时短序列特征兜底或按相似用户群初始画像文本脱敏后信息缺失严重脱敏规则过严检查脱敏后文本的可读性细分脱敏粒度地址和姓名可以粗粒度替换、保留品牌和品类词5.2 踩坑记录标签幻觉问题实录这个坑我在上线后的第三周踩到差点导致整个项目被业务方拉黑。现象是某个消费群体的画像里突然出现大量“环保关注者”标签但人工抽查发现这部分用户根本没有在任何文本里提到过环保相关的内容。根源是我在价值观推断的prompt里写了一句示例里面提到了“可降解材料”这个例子模型在全样本上开始过度泛化把“包装不错”“材质细腻”也给判成了环保信号。定位过程用了两天。先是做标签分布对比发现“环保关注者”标签占比从8%飙到19%再往下钻取到具体文本才看清是prompt示例引发的系统性偏移。修复方案有三步第一步把“可降解材料”从示例中移除换成一个更中性的示例第二步在后处理环节加了一个关键词兜底校验——凡是文本中没有出现环境相关关键词的环保维度分数直接置0第三步给价值观推断模块加了更严格的置信度阈值。修完之后“环保关注者”占比回落到6.5%人工抽样准确率也从74%升到88%。这个经验后来被我沉淀成一条规则凡是LLM生成的高层级标签上线前必须做“分布合理性测试”——把新标签的覆盖率、分布形态和同类型历史标签做对比偏差过大就先别上线。5.3 冷启动与数据稀疏的处理经验冷启动是画像系统的万年难题。新用户没订单、没行为、没文本LLM再强也巧妇难为无米之炊。我处理冷启动的思路是分级画像L0级纯注册信息画像。只有地区、性别、年龄标签极少主要用于基础欢迎语和首单推荐。L1级实时短序列画像。用户浏览了3个以上商品页面之后基于实时行为生成临时画像标签。这类标签生命周期只有24小时。L2级完整画像。积累了足够的订单和文本数据后进入常规的LLM深度分析流程。数据稀疏用户的另一个办法是相似用户迁移。把当前用户的一丁点行为文本向量化在库里找相似用户群用相似用户群的高置信度标签做参考但必须标注“推荐标签”而不是“确认标签”避免画像误导业务决策。实际运营中我发现对冷启动用户宁可给少而准的标签也不要给一堆泛泛的猜测。一个“新客首单转化潜力高”的标签比十个置信度不到0.6的画像标签有用得多。做这个系统的过程里我最深的体会是LLM技术本身并不难接入难的是把模型的输出变成业务方可信、可用、可迭代的资产。情感识别、消费习惯挖掘、价值观推断这些能力本质上都是在回答同一个问题——我如何用更少的人工、更快的速度、更准确地理解一个真实的用户。这里面没有银弹只有把数据融合、模型选型、提示词工程、评估反馈每个环节都做到位画像系统才能真正发挥价值。最后再分享一个小技巧所有LLM输出的画像标签我都建议在数据库里保存当时的输入摘要和模型版本号。这样一旦线上效果出现问题可以快速回溯是数据变化、模型版本变化还是prompt变化导致的。这一点在不稳定的大模型场景下能帮你省下大量排查时间。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价