Files
jev-match-game/docs/adr/0003-ai-division-sql-jev-llm.md
T

58 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 0003 AI 分工:SQL 硬过滤 + Jev 两两打分 + LLM 只做剧情
**Status**: accepted (2026-10-03)
## 背景
产品可用的 AI 能力有三类,成本和能力画像完全不同:
- **Jev**(TypeSafe AI 的 System One 模型):不生成文本;输入非结构化状态 +
类型化问题(choice/score/概率),一次前向传播并行回答全部问题,返回带校准
置信度的结构化答案。中位延迟约 100ms,输出 token 免费,输入极廉价。
- **前沿 LLM**(System Two):能生成文本(剧情、追问、画像报告),但慢且贵。
- **传统手段**:SQL 过滤、embedding 向量相似度,成本近乎为零。
产品的 AI 负载有三处:注册/叙事(生成剧情与个性化内容)、人格实测(从行为数据
产出维度画像)、匹配(海量两两评估)。分工错误会让成本或延迟爆炸。
## 决定
**三层分工,各就各位:**
1. **SQL 硬过滤(免费,先行)**:城市、年龄、性别、性取向等硬约束用数据库
谓词过滤,砍掉 90%+ 候选对。这些字段在"穿越者身份登记"的开局流程中
自然采集。绝不用 AI 判断硬约束——那是把最贵的资源花在最不需要智能的地方。
2. **Jev 两两打分(核心阵地)**:对过滤后的候选池,状态 = 双方资料 + 行为轨迹,
一次调用并行问"A→B 心动度 / B→A 心动度 / 契合度"(见 ADR-0002)。
候选池较大时分批调用(如每批 200 个候选,数千人分多批)。
Jev 同时承担人格实测:对用户行为轨迹按 7 个维度(依恋类型、冲突处理风格、
价值观与人生优先级、情绪稳定性、风险偏好、文化底蕴、择偶偏好)打分,
其**置信度用于自适应补测**——证据不足的维度在后续章节动态插入对应支线剧情。
3. **LLM 只做叙事,且受三通道边界约束**:
- 通道 1·情绪配色:LLM/Jev 只做预写场景变体的**选择**,不生成主线内容;
- 通道 2·幻境机制:LLM 可生成内容(用户记忆意象的幻境呈现、NPC 追问),
这是生成被允许的唯一通道;
- 通道 3·档案馆:用户讲述内容的沉淀与展示。
所有个性化内容在**章节之间预生成**,绝不在游玩过程中实时生成;
生成失败回退到通用版本。
## 备选方案
- **embedding 粗筛 + Jev 精排**:被产品负责人否决,倾向"尽量全用 Jev"。
折中结果:硬过滤层(SQL)不可省略,但语义层全部交给 Jev,接受分批调用的
工程复杂度。
- **Jev 直接对全量用户两两打分**:被否决。N 个用户每人刷新一次是 O(N²) 调用,
1 万用户一轮全量打分即上亿次调用,即使单价极低也不可持续;且绝大多数配对
被硬约束排除,根本不需要判断。
- **LLM 实时生成剧情**:被否决。延迟、成本、角色一致性和内容安全均不可控。
主线骨架(转折、选择点、结局树)必须全部预写——这既保质量,也保不同用户
行为数据的可比性(实测框架的底线)。
## 后果
- 匹配成本随**过滤后池子大小**增长,而非用户量的平方;
- 剧本生产流程必须交付"完整故事框架"(整体弧线、选择点地图、维度覆盖表、
每选择点的预写变体),然后才逐章写作;
- 人格画像、匹配打分、自适应支线路由都依赖 Jev 的结构化输出与置信度,
Jev 是不可替换的单点依赖,需在架构上接受这一点。