1. 项目背景与核心问题
去年春节前夕,我团队接到一个有趣的需求:为某社交平台开发智能祝福语生成功能。产品经理的原话是"要让用户感觉每句祝福都像量身定制"。最初我们尝试用传统NLP模型生成祝福语,但很快发现两个致命问题:
- 生成内容虽然语法正确,但缺乏情感共鸣(用户反馈"像机器人写的")
- 无法结合具体对象特征(比如对长辈和同事用同样的祝福模板)
这时我们注意到RAG(Retrieval-Augmented Generation)架构在个性化内容生成领域的潜力。但将祝福语这种高度依赖语境和情感表达的短文本塞进向量数据库,真的能实现"走心"效果吗?经过三个月的实战验证,我们得出了些反直觉的结论。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术方案设计
2.1 传统方法的局限性
最初我们测试了三种主流方案:
| 方案 | 优点 | 缺点 |
|---|---|---|
| 规则模板 | 响应快,成本低 | 多样性差,需人工维护大量模板 |
| GPT微调 | 生成流畅自然 | 训练成本高,存在幻觉风险 |
| 纯向量检索 | 内容质量稳定 | 缺乏创造性,组合生硬 |
特别是在测试"给刚升职的老同学写祝福"场景时,纯向量检索返回的结果是:"恭喜升职!祝你事业蒸蒸日上"。虽然正确但过于通用,而GPT微调版生成:"听说你征服了新的高度,就像我们当年一起登顶泰山时那样..." 后者明显更有记忆点,但存在30%概率虚构不存在的事件。
2.2 RAG混合架构设计
最终方案采用三阶段流程:
-
知识库构建:
- 收集10万条人工撰写祝福语
- 每条标注:适用场景(春节/生日等)、对象关系(亲人/同事等)、情感强度(1-5分)
- 使用BAAI/bge-small-zh-v1.5模型生成768维向量
-
检索增强:
python复制def retrieve_blessings(query_embedding, top_k=3): # 计算余弦相似度 scores = np.dot(vectors, query_embedding.T) # 混合排序:60%相似度 + 20%情感分 + 20%热度分 combined_scores =
