Files
llm_wiki/tools/experiments/wiki-generation-compare/README.md
T

5.4 KiB
Raw Blame History

Wiki 生成质量对比实验

实验目标

对比 Two-Step 模式(先分析后生成)与 Single-Step 模式(直接生成)在 Wiki 内容生成质量上的差异。

实验设计

  • 测试文件: raw/呼吸之间_李谨伯/第一编 从身体入手.md
  • 金标准: 66 个术语(概念、方法、实体)
  • 评估维度:
    • 40% 内容完整性
    • 30% 技术规范性
    • 20% 可维护性
    • 10% 效率成本

目录结构

tools/experiments/wiki-generation-compare/
├── prompts/
│   ├── twostep-analysis.md       # A组 Step 1 分析 prompt
│   ├── twostep-generation.md     # A组 Step 2 生成 prompt
│   └── singlestep.md             # B组 单步生成 prompt
├── scripts/
│   ├── run-a-group.ps1           # 执行 A 组
│   ├── run-b-group.ps1           # 执行 B 组
│   ├── evaluate.ps1              # 评估脚本
│   └── cleanup.ps1               # 清理环境
├── output/
│   ├── group-a/                  # A 组输出
│   │   ├── analysis.json         # Step 1 分析结果
│   │   ├── wiki/                 # 生成的 Wiki 页面
│   │   └── metadata.json         # 执行元数据
│   ├── group-b/                  # B 组输出
│   │   ├── wiki/                 # 生成的 Wiki 页面
│   │   └── metadata.json         # 执行元数据
│   └── report.md                 # 最终对比报告
└── gold-standard.json             # 金标准数据

执行步骤

1. 执行 A 组(Two-Step 模式)

cd tools/experiments/wiki-generation-compare
.\scripts\run-a-group.ps1

说明:

  • Step 1: 调用 LLM 分析源文件,提取结构化信息
  • Step 2: 基于分析结果生成 Wiki 页面
  • 预计耗时:30-45 分钟(取决于 LLM API 响应速度)

2. 执行 B 组(Single-Step 模式)

.\scripts\run-b-group.ps1

说明:

  • 直接调用 LLM 生成 Wiki 页面
  • 预计耗时:15-30 分钟(取决于 LLM API 响应速度)

3. 评估与报告

.\scripts\evaluate.ps1

说明:

  • 对比 A/B 两组的输出
  • 评估术语覆盖度、Frontmatter 规范性、Wikilink 质量
  • 生成完整的对比报告

4. 清理环境(可选)

.\scripts\cleanup.ps1

配置要求

LLM API 配置

脚本支持多种 LLM API

  1. opencode-mem(优先)

    • 自动使用系统配置的记忆系统
    • 无需额外配置
  2. OpenAI API(备用)

    $env:OPENAI_API_KEY = "your-api-key"
    
  3. 其他 API

    • 需要修改脚本中的 API 调用代码

评估标准

1. 术语覆盖度(40%

  • 覆盖率:覆盖术语数 / 金标准术语数
  • 定义质量:有定义的页面占比
  • 来源链接:有来源链接的页面占比
  • 行号标注:有行号标注的页面占比

2. 技术规范性(30%

  • Frontmatter 完整度:必需字段占比
  • 布尔值合规率:布尔值用引号包裹的占比
  • Wikilink 质量:有效链接占比

3. 可维护性(20%

  • 元数据完整性
  • 文件组织结构

4. 效率成本(10%

  • 执行时间
  • Token 消耗(如果支持)

预期结果

维度 Two-Step Single-Step 预测
术语覆盖度 A > B
定义准确度 A ≈ B
来源标注 强制 手动 A < B(粒度)
Frontmatter 规范 自动生成 手动维护 A > B
Wikilink 质量 A > B
索引/日志 自动更新 手动更新 A > B
Token 消耗 高(两步) 低(单步) A > B
时间成本 A > B
可定制性 A < B
人工干预 异步 同步 A ≈ B

故障排查

LLM 调用失败

如果 LLM API 调用失败,脚本会:

  1. 显示错误信息
  2. 尝试生成模拟数据用于测试
  3. 继续执行评估脚本

文件解析失败

如果 Wiki 页面解析失败:

  1. 检查 LLM 输出格式
  2. 检查 ---FILE: … ---END FILE--- 标记
  3. 查看生成的原始输出文件

评估脚本错误

如果评估脚本报错:

  1. 检查金标准文件是否存在
  2. 检查输出目录是否生成
  3. 查看 PowerShell 错误信息

注意事项

  1. API 成本: Two-Step 模式需要两次 LLM 调用,Token 消耗更高
  2. 执行时间: Two-Step 模式需要更长时间
  3. 质量差异: Two-Step 模式预期内容质量更高,但效率更低
  4. 实验环境: 确保有足够的磁盘空间和网络连接

扩展实验

测试更多文件

修改脚本中的 $sourceFile 变量:

$sourceFile = "raw/呼吸之间_李谨伯/第四编 怎样调整呼吸.md"

调整权重

修改 evaluate.ps1 中的权重配置:

$weights = @{
    contentCompleteness = 0.5  # 提高内容完整性权重
    technicalCompliance = 0.2
    maintainability = 0.2
    efficiency = 0.1
}

添加新的评估维度

evaluate.ps1 中添加新的评估函数,并修改得分计算逻辑。

参考资料


实验创建时间: 2026-07-03 实验维护者: opencode Agent