7.6 KiB
7.6 KiB
上下文压缩评估框架
本文档提供了用于衡量上下文压缩质量的完整评估框架,包括探针类型、评分标准和大语言模型裁判配置。
探针类型
召回探针
测试对对话历史中具体细节的事实性保留。
结构:
问题:[询问截断历史中的具体事实]
预期:[应被保留的精确细节]
评分:技术细节的匹配准确度
示例:
- "启动本次调试会话的原始错误信息是什么?"
- "我们决定使用哪个版本的依赖?"
- "执行失败的具体命令是什么?"
制品探针
测试文件跟踪与修改感知能力。
结构:
问题:[询问创建、修改或检查过的文件]
预期:[包含变更描述的完整列表]
评分:文件列表的完整性与变更描述的准确性
示例:
- "我们修改了哪些文件?请描述每个文件中的变化。"
- "本次会话中我们创建了哪些新文件?"
- "我们检查过但未修改的配置文件有哪些?"
延续探针
测试无需重新获取上下文即可继续工作的能力。
结构:
问题:[询问下一步或当前状态]
预期:[基于会话历史的可操作下一步]
评分:无需请求重新读取文件即可继续的能力
示例:
- "我们接下来应该做什么?"
- "还有哪些测试仍然失败?原因是什么?"
- "上一步中我们有什么未完成的工作?"
决策探针
测试对推理链与决策理由的保留能力。
结构:
问题:[询问某个决策的缘由]
预期:[导致该决策的推理过程]
评分:决策上下文及备选方案考虑的保留程度
示例:
- "我们讨论过 Redis 问题的几种方案。最终的决定是什么?为什么?"
- "为什么我们选择了连接池方案而非每次请求单独连接?"
- "在身份验证修复中,我们考虑过哪些备选方案?"
评分标准
准确度维度
| 标准 | 问题 | 0 分 | 3 分 | 5 分 |
|---|---|---|---|---|
| accuracy_factual | 事实、文件路径和技术细节是否正确? | 完全错误或编造 | 基本准确,存在轻微错误 | 完全准确 |
| accuracy_technical | 代码引用和技术概念是否正确? | 重大技术错误 | 基本正确,存在轻微问题 | 技术精确 |
上下文感知维度
| 标准 | 问题 | 0 分 | 3 分 | 5 分 |
|---|---|---|---|---|
| context_conversation_state | 回答是否反映了当前对话状态? | 未意识到先前上下文 | 大致知晓,存在盲区 | 完全了解对话历史 |
| context_artifact_state | 回答是否反映了访问过的文件/制品? | 未意识到制品 | 部分了解制品 | 完全了解制品状态 |
制品轨迹维度
| 标准 | 问题 | 0 分 | 3 分 | 5 分 |
|---|---|---|---|---|
| artifact_files_created | 代理是否知道创建了哪些文件? | 一无所知 | 知道大部分文件 | 完全知晓 |
| artifact_files_modified | 代理是否知道哪些文件被修改以及修改了什么? | 一无所知 | 较好了解大部分修改 | 完全了解所有修改 |
| artifact_key_details | 代理是否能记住函数名、变量名、错误信息? | 无法回忆 | 能回忆大部分关键细节 | 完美回忆 |
完整性维度
| 标准 | 问题 | 0 分 | 3 分 | 5 分 |
|---|---|---|---|---|
| completeness_coverage | 回答是否涵盖问题的所有部分? | 忽略大部分内容 | 涵盖大部分内容 | 全面覆盖所有内容 |
| completeness_depth | 是否提供了足够的细节? | 肤浅或缺少细节 | 细节充分 | 细节详尽 |
连续性维度
| 标准 | 问题 | 0 分 | 3 分 | 5 分 |
|---|---|---|---|---|
| continuity_work_state | 代理能否在不重新获取先前访问过的信息的情况下继续工作? | 无法继续,需重新获取所有上下文 | 可继续,只需最小限度重新获取 | 可无缝继续 |
| continuity_todo_state | 代理是否保持对未完成任务的感知? | 丢失所有待办事项记录 | 较好的感知,存在少量盲区 | 完美的任务感知 |
| continuity_reasoning | 代理是否保留先前决策背后的理由? | 无法记住推理过程 | 大致能记住推理过程 | 极好地保留 |
指令遵循维度
| 标准 | 问题 | 0 分 | 3 分 | 5 分 |
|---|---|---|---|---|
| instruction_format | 回答是否遵循了要求的格式? | 忽略格式 | 基本遵循格式 | 完美遵循格式 |
| instruction_constraints | 回答是否遵守了给定的约束条件? | 忽略约束 | 基本遵守约束 | 完全遵守所有约束 |
大语言模型裁判配置
系统提示词
你是一名专业评估员,负责评估 AI 助手在软件开发对话中的回答。
你的任务是根据特定的评分标准对回答进行评分。针对每个标准:
1. 仔细阅读标准问题
2. 检查回答中的相关证据
3. 根据评分指南给出 0-5 分的分数
4. 提供简要的评分理由
请保持客观一致。关注回答中实际呈现的内容,而非可能包含的内容。
裁判输入格式
{
"probe_question": "原始的报错信息是什么?",
"model_response": "[待评估的回答]",
"compacted_context": "[所提供的压缩上下文]",
"ground_truth": "[可选:已知的正确答案]",
"rubric_criteria": ["accuracy_factual", "accuracy_technical", "context_conversation_state"]
}
裁判输出格式
{
"criterionResults": [
{
"criterionId": "accuracy_factual",
"score": 5,
"reasoning": "回答正确识别了 401 错误、具体端点和根本原因。"
}
],
"aggregateScore": 4.8,
"dimensionScores": {
"accuracy": 4.9,
"context_awareness": 4.5,
"artifact_trail": 3.2,
"completeness": 5.0,
"continuity": 4.8,
"instruction_following": 5.0
}
}
## 基准测试结果参考
各压缩方法的表现(基于 36,000+ 条消息):
| 方法 | 总体 | 准确度 | 上下文 | 制品 | 完整性 | 连续性 | 指令 |
|--------|---------|----------|---------|----------|----------|------------|-------------|
| 锚定迭代式 | 3.70 | 4.04 | 4.01 | 2.45 | 4.44 | 3.80 | 4.99 |
| 再生式 | 3.44 | 3.74 | 3.56 | 2.33 | 4.37 | 3.67 | 4.95 |
| 不透明式 | 3.35 | 3.43 | 3.64 | 2.19 | 4.37 | 3.77 | 4.92 |
**主要发现:**
1. **准确度差距**:最佳与最差方法之间相差 0.61 分
2. **上下文感知差距**:相差 0.45 分,锚定迭代方法占优
3. **制品轨迹**:普遍薄弱(2.19-2.45),需要专门处理
4. **完整性与指令遵循**:差异化程度极低
## 统计考量
- 0.26-0.35 分的差异在不同任务类型和会话长度上具有一致性
- 该模式在短会话和长会话中均成立
- 该模式在调试、功能实现和代码审查任务中均成立
- 样本量:跨数百个压缩点的 36,611 条消息
## 实现说明
### 探针生成
在每个压缩点根据截断历史生成探针:
1. 提取事实性陈述,用于召回探针
2. 提取文件操作记录,用于制品探针
3. 提取未完成任务,用于延续探针
4. 提取决策节点,用于决策探针
### 评分流程
1. 将探针问题 + 模型回答 + 压缩上下文输入裁判
2. 对照评分标准中的每个标准进行评估
3. 输出带有分数和推理过程的结构化 JSON
4. 计算维度得分(加权平均)
5. 计算总体得分(各维度得分的算术平均)
### 盲测原则
裁判不应知晓被评估的回答是由哪种压缩方法产生的。这可以防止对已知方法产生偏见。