TITANS + MIRAS 混合架构
版本: v1.3 (Recommendation System Integration)
更新日期: 2026-01-27
概述
米塞斯行为引擎采用 TITANS + MIRAS 混合架构,结合:
- TITANS: 神经长期记忆模块,支持测试时学习
- MIRAS: 多尺度迭代检索增强系统
- HOPE: 持续在线学习(惊讶度驱动)
该架构通过 LLM 生成的合成数据进行训练,实现高质量、低成本的模型优化。
v1.2 性能优化: MIRAS 预热机制使首次匹配时间从 55秒 降至 <1秒
架构图
┌─────────────────────────────────────────────────────────────────┐
│ TITANS + MIRAS 混合架构 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 输入: 用户表达 + 画像 │
│ ↓ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 多尺度编码器 (MIRAS) │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │ 局部 │ │ 上下文 │ │ 全局 │ │ │
│ │ │ (行为) │ │ (场景) │ │ (模式) │ │ │
│ │ │ 256d │ │ 384d │ │ 512d │ │ │
│ │ └────┬────┘ └────┬────┘ └────┬────┘ │ │
│ │ └────────────┼────────────┘ │ │
│ │ ↓ │ │
│ │ 迭代检索器 (3步) │ │
│ │ ↓ │ │
│ │ 知识库检索 │ │
│ └─────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ TITANS 记忆模块 │ │
│ │ ┌─────────────────────────────────────────────┐│ │
│ │ │ 记忆编码器 → 记忆库 → 记忆检索器 ││ │
│ │ │ (1024 slots) ││ │
│ │ └─────────────────────────────────────────────┘│ │
│ │ ↓ │ │
│ │ 惊喜检测器 │ │
│ │ (驱动测试时学习) │ │
│ └─────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 门控融合层 │ │
│ │ gate = f(surprise_score) │ │
│ │ output = gate * TITANS + (1-gate) * MIRAS │ │
│ └─────────────────────────────────────────────────┘ │
│ ↓ │
│ 输出: 行为分析 (不舒适→愿望→路径) │
│ │
└─────────────────────────────────────────────────────────────────┘
TITANS 模块
核心概念
TITANS (Test-Time Adaptation with Neural Long-term Memory) 是 Google Research 提出的架构,核心特点:
- 神经长期记忆: 将记忆存储在网络参数中,而非外部数据库
- 测试时学习: 在推理时根据"惊喜度"更新记忆
- 选择性存储: 只有超过阈值的新信息才会被记忆
实现细节
class TITANSMemoryModule:
"""
记忆槽位: 1024 个
记忆维度: 512
核心组件:
- MemoryEncoder: 输入 → 记忆向量
- MemoryRetriever: 查询 → 相关记忆
- NeuralMemoryGate: 控制写入/遗忘
"""
def update_at_test_time(self, input, target, surprise_score):
"""
测试时学习(TITANS核心)
if surprise_score > threshold:
# 惊喜度高 → 学习新知识
update_related_memories()
if surprise_score > 1.5 * threshold:
# 非常惊喜 → 写入新记忆槽
write_new_memory()
"""
惊喜检测器
class SurpriseDetector:
"""
计算当前输入相对于记忆的"惊喜度"
surprise = 1 - cosine_similarity(prediction, actual)
高惊喜度: 模型预测错了 → 需要学习
低惊喜度: 模型预测对了 → 无需更新
"""
MIRAS 模块
核心概念
MIRAS (Multi-scale Iterative Retrieval-Augmented System) 是为米塞斯引擎设计的检索增强系统:
- 多尺度表示: 局部(行为)、上下文(场景)、全局(生活模式)
- 迭代检索: 多步细化查询,逐步找到最相关知识
- 知识蒸馏: 从 LLM 蒸馏知识到本地模型
多尺度特征
| 尺度 | 维度 | 捕获内容 | 示例 |
|---|---|---|---|
| 局部 | 256 | 具体行为 | "想换工作"、"买房" |
| 上下文 | 384 | 场景信息 | "职业发展"、"家庭决策" |
| 全局 | 512 | 生活模式 | "风险偏好"、"时间偏好" |
迭代检索
class IterativeRetriever:
"""
3步迭代检索:
Step 1: 粗略检索 (top-100)
Step 2: 更新查询,精细检索 (top-30)
Step 3: 再次更新,最终检索 (top-10)
每步后通过查询更新网络改进查询向量
"""
混合融合策略
门控机制
def hybrid_forward(input, prev_memory):
# TITANS: 长期记忆
titans_repr = titans_memory(input)
# MIRAS: 多尺度检索
miras_repr = miras(input)
# 计算惊喜度
if prev_memory:
surprise = surprise_detector(prev_memory, titans_repr)
# 门控融合
# 惊喜度高 → 更多依赖TITANS(学习新知识)
# 惊喜度低 → 更多依赖MIRAS(检索已知知识)
gate = fusion_gate(titans_repr, miras_repr)
gate = gate * (0.5 + 0.5 * surprise)
output = gate * titans_repr + (1-gate) * miras_repr
融合优势
| 场景 | 主导模块 | 原因 |
|---|---|---|
| 新用户首次交互 | MIRAS | 无历史记忆,依赖检索 |
| 用户说出意外信息 | TITANS | 高惊喜度,需要学习 |
| 常规咨询 | 混合 | 平衡记忆和检索 |
| 长期用户回访 | TITANS | 有丰富个人记忆 |
LLM 合成数据方案
可行性分析
✅ 完全可行,原因:
- 行业先例: 微软 Phi 系列模型大量使用 LLM 合成数据,效果优异
- 质量可控: 通过两阶段流程(低成本生成 + 高质量筛选)保证质量
- 成本低廉: DeepSeek/Qwen 生成成本极低,Claude 筛选成本可控
- 覆盖全面: 可自动生成覆盖全生命周期的场景
两阶段数据生成流程
┌─────────────────────────────────────────────────────────────────┐
│ LLM 合成数据工厂 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 阶段1: 低成本批量生成 │
│ ┌─────────────────────────────────────────────────┐ │
│ │ DeepSeek-V3 ──┐ │ │
│ │ ├──→ 原始样本 (N个) │ │
│ │ Qwen3-235B ───┘ │ │
│ │ │ │
│ │ 成本: ~$0.0003/样本 │ │
│ └─────────────────────────────────────────────────┘ │
│ ↓ │
│ 阶段2: 高质量筛选 │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Claude 4.5 Sonnet │ │
│ │ │ │
│ │ 评估维度: │ │
│ │ - 理论契合度 (米塞斯行为学) │ │
│ │ - 深度洞察 (挖掘隐藏需求) │ │
│ │ - 个性化程度 │ │
│ │ - 因果链清晰度 │ │
│ │ - 实用性 (第一步可操作性) │ │
│ │ - 语言质量 │ │
│ │ │ │
│ │ 通过率: ~70-80% │ │
│ │ 成本: ~$0.02/样本 │ │
│ └─────────────────────────────────────────────────┘ │
│ ↓ │
│ 输出: 高质量训练数据 (TITANS+MIRAS格式) │
│ │
└─────────────────────────────────────────────────────────────────┘
成本估算
| 规模 | 生成样本 | 通过样本 | 生成成本 | 筛选成本 | 总成本 |
|---|---|---|---|---|---|
| 小 | 1,000 | ~750 | $0.30 | $20 | ~$20 |
| 中 | 10,000 | ~7,500 | $3 | $200 | ~$200 |
| 大 | 100,000 | ~75,000 | $30 | $2,000 | ~$2,000 |
数据格式
{
"id": "syn_20260109_a1b2c3d4",
"sequence": [
{
"stage": "uneasiness",
"input": "最近工作压力很大...",
"output": {
"surface": "工作压力大",
"hidden": ["担心被裁员", "能力焦虑"],
"root_cause": "对未来的不确定感"
},
"memory_update": {
"should_store": true,
"surprise_expected": 0.6
}
},
{
"stage": "desires",
"input": "...",
"output": {
"primary": "获得职业安全感",
"means_ends_chain": [...]
}
},
{
"stage": "paths",
"input": "...",
"output": {
"paths": [...]
}
}
],
"multi_scale": {
"local": {"action_type": "职业咨询", "urgency": 7},
"context": {"domain": "career", "life_stage": "prime"},
"global": {"time_preference": "delayed", "risk_tolerance": 0.4}
},
"persona_context": {...},
"quality_score": 72
}
训练流程
命令行用法
# 完整流程(生成+训练)
python -m training.train_titans_miras --full --samples 1000
# 只生成数据
python -m training.train_titans_miras --generate-only --samples 500
# 只训练(使用已有数据)
python -m training.train_titans_miras --data path/to/data.json --epochs 20
# 指定LLM模型
python -m training.train_titans_miras --full \
--generators "deepseek-v3,qwen3-235b" \
--filter-model "claude-4.5-sonnet"
训练配置
HybridTrainingConfig(
# 模型
input_dim=768,
memory_dim=512,
num_memory_slots=1024,
# MIRAS
local_dim=256,
context_dim=384,
global_dim=512,
num_retrieval_steps=3,
# 训练
batch_size=16,
learning_rate=1e-4,
num_epochs=20,
# 损失权重
memory_loss_weight=1.0,
behavior_loss_weight=1.0,
surprise_loss_weight=0.5
)
损失函数
Total Loss = w1 * BehaviorLoss # 行为预测
+ w2 * SurpriseLoss # 惊喜度预测
+ w3 * MemoryLoss # 记忆重建
+ w4 * ConsistencyLoss # 多尺度一致性
+ w5 * DistillLoss # LLM知识蒸馏(可选)
推理集成
加载模型
from training.titans.miras_module import TITANSMIRASHybrid
import torch
# 加载
model = TITANSMIRASHybrid(input_dim=768)
checkpoint = torch.load("training/checkpoints/titans_miras_inference.pt")
model.load_state_dict(checkpoint["model_state_dict"])
model.eval()
# 推理
with torch.no_grad():
output = model(input_embedding, prev_memory)
behavior_scores = output["behavior_scores"] # 行为分析分数
surprise = output["surprise_score"] # 惊喜度
titans_repr = output["titans_repr"] # 用于下次的记忆
与引擎集成
# src/core/engine.py
class MisesEngine:
def __init__(self):
# 加载TITANS+MIRAS
self.hybrid_model = TITANSMIRASHybrid()
self.hybrid_model.load_state_dict(...)
# 用户记忆缓存
self.user_memories = {}
async def process(self, user_id, input_text):
# 获取用户历史记忆
prev_memory = self.user_memories.get(user_id)
# 编码输入
embedding = self.embed(input_text)
# 混合模型推理
output = self.hybrid_model(embedding, prev_memory)
# 更新用户记忆
self.user_memories[user_id] = output["titans_repr"]
# 根据行为分数选择响应策略
if output["surprise_score"] > 0.7:
# 高惊喜度:用户说了意外的事,需要特殊处理
...
MIRAS 预热优化 (v1.2)
问题分析
MIRAS 匹配器首次加载需要 ~55秒,包括:
- TITANS 记忆模块初始化
- MoE(混合专家)模型加载
- 嵌入模型初始化
- 专家注册
解决方案
在服务启动时预热 MIRAS 匹配器:
# src/mcp/client.py
async def preload_models():
# 预热 MIRAS 匹配器
from src.knowledge.miras_matcher import get_miras_matcher
matcher = get_miras_matcher()
if matcher.enabled:
# 进行一次空匹配来完全初始化模型
_ = matcher.iterative_match("预热测试", user_id="preload", top_k=1)
logger.info("✅ MIRAS 匹配器预热完成")
效果对比
| 指标 | 优化前 | 优化后 | 提升 |
|---|---|---|---|
| MIRAS 首次匹配 | 55秒 | <1秒 | 98% |
| 专家路由响应 | 8-15秒 | 4-9秒 | 40-45% |
| 超时概率 | 高 | 极低 | - |
性能指标
训练指标
| 指标 | 目标 | 说明 |
|---|---|---|
| Total Loss | < 0.5 | 总损失 |
| Behavior Loss | < 0.3 | 行为预测准确性 |
| Surprise MAE | < 0.15 | 惊喜度预测误差 |
| 通过率 | > 70% | 合成数据质量 |
推理指标 (v1.2 优化后)
| 指标 | 优化前 | 优化后 | 说明 |
|---|---|---|---|
| MIRAS 匹配延迟 | 55s | <1s | 首次匹配 |
| 模型推理时间 | 100ms | <50ms | 已预热 |
| 记忆命中率 | > 60% | > 60% | TITANS记忆检索 |
| 用户满意度 | > 4.0/5 | > 4.0/5 | 回应质量评分 |
与专家推荐系统集成 (v1.3 新增)
TITANS + MIRAS 架构已与专家推荐系统深度集成:
集成点
| 组件 | 集成方式 | 用途 |
|---|---|---|
| TITANS 记忆 | TITANSConversationMemory |
用户行为历史、专家偏好 |
| MIRAS 匹配 | MIRASMatcher |
多尺度专家匹配 |
| HOPE 画像 | HopeEnhancedMemory |
用户需求画像 |
推荐引擎架构
┌─────────────────────────────────────────────────────────────────┐
│ 专家推荐引擎 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 意图分析 │ │ 协同过滤 │ │ 信任评分 │ │
│ │ (米塞斯) │ │ (CF) │ │ (Trust) │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │ │
│ └────────────────┼────────────────┘ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 多维度加权融合 │ │
│ │ 意图匹配 35% + 信任度 25% + CF 20% + 偏好 15% + 新鲜 5% │ │
│ └─────────────────────────────────────────────────────────┘ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 探索与利用 (UCB/Thompson) │ │
│ │ │ │
│ │ • 避免信息茧房 │ │
│ │ • 新专家曝光机会 │ │
│ │ • 多样性重排 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
相关模块
src/market/recommendation_engine.py- 推荐引擎src/market/expert_trust_score.py- 专家信任评分src/market/collaborative_filter.py- 协同过滤src/market/exploration_strategy.py- 探索策略src/market/realtime_feedback.py- 实时反馈处理src/market/recommendation_explainer.py- 推荐解释
总结
TITANS + MIRAS 混合架构:
- TITANS 提供长期记忆和测试时学习能力
- MIRAS 提供多尺度理解和迭代检索能力
- LLM合成数据 提供低成本、高质量的训练素材
- 门控融合 根据场景动态平衡两个模块
- 推荐系统 提供智能专家匹配和个性化推荐 (v1.3 新增)
这种架构特别适合米塞斯行为引擎的需求:
- 需要记住用户历史(TITANS)
- 需要理解复杂场景(MIRAS多尺度)
- 需要快速适应新信息(测试时学习)
- 训练数据需要低成本获取(LLM合成)
- 需要智能推荐专家(推荐引擎)