Phoenix-SFT-v1
收藏数据集概述:Phoenix-SFT-v1
数据集名称: Phoenix v1 — Memory Extraction Dataset
发布者: flammen.ai
许可证: Apache-2.0
语言: 英语(主要)、西班牙语、法语、日语、中文(输出始终为英语)
数据规模: 1K < n < 10K(训练集 1728 条,评估集 170 条)
任务类别: 文本生成、摘要
标签: 聊天、记忆提取、对话式 AI
数据集目的
为名为 Phoenix 的小型模型(类似 Qwen2.5 架构)提供监督微调(SFT)训练数据。该模型负责读取用户与 AI 角色(Flame)之间的聊天窗口,并输出一个结构化的 JSON 列表,列出 Flame 应记住的关于用户的可回忆事实。
任务与输出格式
-
输入: 一段对话记录,包含用户和 AI 角色的发言。
-
输出: 一个 JSON 对象,包含
memories数组,数组内每个元素为一条记忆。 -
输出示例: json { "memories": [ {"content": "Grandmother recently passed away", "category": "event"}, {"content": "Was taught to bake by her grandmother", "category": "relation"}, {"content": "Can make her grandmothers oatmeal cookies from memory", "category": "factual"}, {"content": "Working through grief over her grandmothers death", "category": "emotion"} ] }
-
空记忆:
memories数组为空是合法输出,表示该对话窗口中没有值得提取的事实,训练模型学会在无信息时保持沉默。
记忆类别(封闭枚举)
| 类别 | 描述 |
|---|---|
| factual | 具体数据(工作、地点、家庭结构、物品) |
| preference | 喜好/厌恶/价值观/习惯 |
| relation | 用户生活中的其他人物 |
| event | 用户经历的事情(近期或正在进行) |
| emotion | 情绪状态、当前关注点 |
每条 content 为第三人称句子,3-30 个词,主语默认为用户。
数据格式
每条数据为 OpenAI / HuggingFace 消息格式的聊天完成示例:
json { "seed_id": "...", "stratum": { "length": "medium", "density": "mixed", "register": "casual", "phase": "getting_to_know", "topic_mix": "scattered", "language": "en" }, "messages": [ {"role": "system", "content": "You are a memory-extraction model..."}, {"role": "user", "content": "User: Nina Flame: Marisol
Conversation:..."}, {"role": "assistant", "content": "{"memories":[...]}"} ] }
数据集划分与分布
文件: train.jsonl(1728 条)、eval.jsonl(170 条,约 10%)
划分基于 (density, language, phase) 进行分层抽样,确保评估集与训练集分布一致。
密度分布:
| 密度 | 训练集 | 评估集 | 说明 |
|---|---|---|---|
| mixed | 738 | 77 | 真实平均情况——事实与闲聊混合 |
| sparse | 403 | 39 | 主要为闲聊,≤1 个事实 |
| dense | 363 | 34 | 事实密集,5 个以上用户事实 |
| null | 224 | 20 | 无可提取的用户事实——空数组是正确答案 |
空样本占 13%(高于目标 10%),旨在加强模型输出空数组的能力,避免从纯闲聊中编造记忆。
语言分布: 英语 ≥85%,西班牙语、法语、日语、中文各占小部分。输出始终为英语。
生成流水线
所有阶段均可在 flammenai/Phoenix 仓库中复现(内部工具):
- 种子对话生成(Claude Haiku 4.5): 根据上述维度采样的分层参数生成合成对话,约 2500 条。
- 记忆提取(Claude Sonnet 4.6): 使用工具强制 JSON 输出,包含 9 条规则的系统提示和 3 个上下文示例(覆盖空窗口、剥离时间信息的脆弱性、过滤短暂信息等情况)。
- 质量审查(本地 Qwen3.5-27B + JSON Schema 约束): 对每条提取结果基于 11 种失败模式进行判定,仅通过所有 11 种模式的结果保留在数据集中。
失败模式分类(审查过滤器)
数据集中保留的每条提取结果均通过了以下所有模式:
| 模式 | 描述 |
|---|---|
| hallucinated_date | 包含对话中不存在的绝对日期/年份 |
| relative_time_qualifier | 包含会过时的相对时间短语(如“上个月”) |
| over_inference | 声称的内容比消息实际支持的更强 |
| invented_from_null | 从无信号对话中编造记忆 |
| vague_filler | 内容过于泛泛(如“喜欢东西”) |
| flame_as_user | 将 AI 角色的发言错误地当作用户事实 |
| ephemeral_detail | 一次性、琐碎的信息(如“今天吃了越南粉”) |
| wrong_category | 类别枚举错误 |
| wrong_language | 记忆文本不是英语 |
| merged_relations | 将两个不同的人物合并为一人 |
| refusal_from_register | 因对话风格(轻浮/亲密)而跳过有记忆价值的内容 |
另有 gold_anchors.json 文件,包含 10 个手工制作的参考示例及其正确与错误变体,用于定性审查。
局限性
- 仅 SFT: 目前仅提供监督微调数据。DPO 基础设施(负样本生成器、基于模式的对比对)已存在于流水线代码库中,但因预算未在大规模下运行。v2 计划使用生产环境中的真实失败数据进行 DPO 优化。
- 仅合成数据: 所有对话由 Claude Haiku 生成。真实用户对话分布会有所不同,生产部署应加入真实数据评估。
- 无日期感知: Phoenix 没有“今天”的概念,相对时间信息被特意剥离,确保记忆在数月后仍然准确。
- 英语输出偏见: 即使输入为其他语言,记忆内容始终为英语——这是有意设计,因为下游消费者(FlameWorker 提示构建器)为英语环境。
- 审查器不完美: Qwen 27B 审查器能可靠检测结构性问题(如 vague_filler、wrong_language、hallucinated_date、relative_time_qualifier),但对较微妙的语义问题(如 invented_from_null、ephemeral_detail)较弱,可能有少量问题数据未被过滤。
联系信息
- 邮箱: contact@schneewolflabs.com
- 所属机构: Schneewolf Labs LLC(flammen.ai)




