Bridging the Cold-Start Gap: LLM-Powered Synthetic Data Generation for Natural Language Search at Airbnb
用 LLM 合成查询与标签破解自然语言搜索冷启动
🧭 自然语言搜索 · 合成数据冷启动
Airbnb
用少量种子查询引导 LLM 生成带标咨询数据和标签,使查询分布接近真实用户,支持检索与排序模型冷启动训练
📌 工作参考价值
- 用种子查询控制 LLM 生成风格:直接让 LLM 无约束生成会产出冗长、多属性的查询,与真实用户短促、不规范的表达严重不匹配。从用户调研或早期日志中收集数百条种子查询作为模板,可以大幅降低 KL 散度(本文从 4.95→0.66),实现更逼真的查询分布。在电商搜索、对话式推荐中可复用此思路,用小样本种子让合成数据贴合真实语言。
- 三类提示模板平衡真实性与多样性:seed_controlled 严格保持种子结构,适合属性覆盖;seed_freeform 模仿风格但允许变化;variety 放松约束、提高温度,探索长尾意图。实际生成时按比例混合三种模板,既能保证主流查询的真实感,又能覆盖边缘场景。推荐系统在生成候选集时可借鉴这种分阶段控制的提示策略。
- 困难样本构建的分层采样与提示技巧:为避免全是简单样本(所有模型都能答对),通过限制样本对相似度(同类别、嵌入距离过滤)和提示中加入“难度桶”、反事实编辑等手段生成有区分度的训练数据。这对于提高 ranking 模型的迭代信号非常重要,电商场景下可借鉴硬负样本挖掘来提升模型判别力。
- 从 LLM 自生成数据中避开自偏好陷阱:用 LLM 评估 LLM 生成的内容容易出现系统性偏爱(本文 GPT 评估自身生成的对准确率高达 99%),实际训练中建议用构建式标签(对比生成)保证高保真,用 LLM 评估仅作离线质量检查;且通过属性锚定、人工校准、使用异构模型降低自我偏好风险。这对任何用 LLM 生成训练数据的团队都是重要提醒。
动机:Airbnb 上线自然语言搜索时面临严格的冷启动:没有真实用户查询,也没有标注数据来训练召回或排序模型。传统规则引导或人工标注要么缺乏表现力,要么成本过高且难以规模化。该工作旨在用 LLM 合成逼真查询和相关性标签,在零真实流量的情况下为模型提供训练信号,并实现从冷启动到暖启动的无缝过渡。
方法要点
- 查询生成:将问题形式化为最小化合成分布与真实查询分布的 KL 散度。解耦为语言模板 (P(t)) 和实体属性 (P(e)),从用户调研中收集约 500 条种子查询作为模板,从真实预订会话中采样对比列表对(已预订 vs. 未预订)为查询提供事实锚点。
- 三种提示变体:
seed_controlled迫使 LLM 严格遵循种子结构,seed_freeform将种子作为风格示例,variety放宽限制并提高温度以扩展多样性,混合使用以平衡真实感与覆盖面。 - 标签生成:对比式生成在生成查询时即确定正/负例关系(通过构建使标签天然正确),虚拟法官 (VJ) 则后期用 LLM 重新判断任意查询-列表对的相关性,用于扩展评估覆盖度。
- 困难样本控制:通过提示增强(防泄露提示、难度桶、思维链、角色扮演)、分层采样(同类目限制、嵌入距离过滤)和反事实编辑来提升样本难度,避免生成过于简单的正则对。
关键实验与数字
- 查询长度分布:无种子引导的对比式生成产出的查询平均 13.6 词,KL 散度 4.95(与真实用户相比);引入种子后平均 6.0 词,KL 降至 0.66,提升 7.5 倍。
- 属性类型分布:种子引导后 KL 仅 0.04,甚至优于种子查询自身(0.09),说明结合种子与平台属性可获得最真实的属性搭配。
- 检索评估:我们的方法使样本难度显著上升(SBERT 准确率从 88.7% 降至 77.7%),能有效区分模型能力;排序模型上同样观察到更低的精度(0.792 vs. 0.827),但提供了更有意义的训练信号。
- LLM 自偏好验证:GPT 模型对自己生成的对比对判断准确率高达 99%,明显高于嵌入模型(76–79%),提示需警惕用 LLM 评价自身生成内容。
值得记住的一句话:合成数据不必完美——它只需足够指导开发走向正确方向,而少量真实种子是让生成贴近真实的关键杠杆。