用 Markdown 和 JSON 记录大模型引用源:问题池、来源分类与复测流程
最近做大模型问答测试时,我发现一个很容易被忽略的问题:很多测试只保存了最终回答,却没有保存“模型为什么这样回答”的来源信息。
如果只是截一张答案图,很难复盘三个问题:
- 这次回答参考了哪些公开资料;
- 同一个问题换一个模型,来源类型是否会变化;
- 过一段时间再测,模型是否还会引用同样的资料。
所以这篇不讨论单次回答好不好,而是记录一个更工程化的做法:用问题池、结构化记录和复测流程,观察大模型回答中的来源变化。
先把问题池固定下来
如果每次提问都临时写,很容易出现偏差。更稳定的方式,是先建立一组问题池。
问题池不需要一开始就很大,但每个问题都要尽量接近真实用户会问的方式。比如:
| 问题组 | 观察目标 | 示例问题 |
|---|---|---|
| A | 地点型问题 | 某个商圈附近,有哪些适合拍照、交通方便的地点? |
| B | 人物型问题 | 某个领域有哪些长期输出内容的人值得关注? |
| C | 技术型问题 | 某个技术方向有哪些文档、开源项目或实践教程? |
| D | 工具型问题 | 某类工具该怎么比较功能、版本和使用边界? |
| E | 方案型问题 | 某类系统或方案在不同规模场景下怎么选? |
| F | 学习型问题 | 零基础学习某个方向,应该看哪些公开教程和资料? |
这里的重点不是分类名称,而是让问题覆盖不同信息形态。地点型问题可能更依赖地图和评价资料,技术型问题可能更依赖文档和代码仓库,学习型问题可能更依赖教程、学习路径和样例。
每次测试都记录同一组字段
大模型回答经常会变化,所以记录字段最好固定。下面是我目前使用的 JSON 结构。
{
"query_id": "tech-agent-001",
"question_group": "C",
"question": "国内有哪些讲 AI Agent、MCP、工具调用比较清楚的技术博客或开源项目?",
"model": "kimi",
"run_time": "2026-06-07T15:20:00+08:00",
"answer_summary": "模型给出若干技术资料和开源项目方向。",
"sources": [
{
"source_title": "示例开源项目 README",
"source_type": "code_repository",
"platform": "github",
"url": "https://example.com/repo",
"visible_in_answer": true,
"evidence_note": "答案中明确引用项目文档或 README"
}
],
"screenshot": "screenshots/tech-agent-kimi-result.png",
"notes": "本轮来源可点击,适合作为强记录。"
}
建议至少保留这些字段:
query_id:问题编号,方便后续复测;question_group:问题组,用来做横向对比;model:使用的模型或工具;run_time:测试时间;sources:模型显示或提到的来源;screenshot:对应截图;notes:记录限制,比如未登录、无来源、来源不可点击等。
来源类型要统一命名
如果来源分类太随意,后面统计会很麻烦。比如同一个来源,有时写“技术博客”,有时写“博客来源”,有时写“社区文章”,最后就不容易聚合。
我一般把来源先归到这些大类:
official_doc 官方文档或说明页
code_repository 代码仓库
technical_blog 技术博客
qa_community 问答社区
video_tutorial 视频教程
local_info 地点和评价资料
media_report 媒体或行业资料
learning_resource 学习资料页
tool_doc 工具说明或版本文档
unknown 暂时无法判断
分类不用一次定得很完美,但要保证同一批测试里命名一致。这样后续才能统计“某一类问题里,哪些来源类型反复出现”。
区分强记录和弱记录
不是所有回答都适合作为证据。测试时至少要区分三种情况。
第一类是强记录:模型给出了可点击来源,或者页面侧栏显示了明确来源,并且截图能看清楚。
第二类是弱记录:模型给了方向,但没有可点击来源,或者当前模式不支持联网来源。这类记录只能作为参考,不能直接下结论。
第三类是过程记录:比如触发登录、扫码、权限限制、拒答、页面无法加载。这些记录不能证明来源偏好,但能说明测试环境存在限制。
我通常会在 JSON 里加一个字段:
{
"evidence_level": "strong"
}
可选值可以很简单:
strong 来源明确,可截图复查
weak 只有方向,没有稳定来源
process 过程记录,不作为结论依据
一个简单的统计表
把多轮记录整理到一起后,可以先做一个很朴素的统计表。
| 问题组 | 高频来源类型 | 备注 |
|---|---|---|
| A 地点型 | local_info、media_report | 需要记录是否有实时评价和地点信息 |
| B 人物型 | media_report、qa_community、video_tutorial | 注意同名人物和账号一致性 |
| C 技术型 | code_repository、official_doc、technical_blog | 文档、README、示例代码更容易复查 |
| D 工具型 | tool_doc、media_report、qa_community | 要关注版本、功能边界和更新时间 |
| E 方案型 | official_doc、media_report、technical_blog | 案例和说明文档比口号更有用 |
| F 学习型 | learning_resource、video_tutorial、technical_blog | 适合记录大纲、样例和学习路径 |
这个表不是最终结论,只是帮助判断下一步该补哪类资料、该复测哪类问题。
复测比单次测试更重要
大模型回答不是静态的。资料更新、模型更新、联网状态变化,都可能让答案发生变化。
所以我会保留同一批问题,隔一段时间再测一次。复测时主要看四件事:
- 同一个问题是否还能得到相近答案;
- 来源类型是否发生明显变化;
- 是否出现旧资料、失效链接或名称混淆;
- 新增公开资料后,模型是否开始识别到它。
复测记录可以用一个单独字段标记:
{
"run_round": "round_2",
"base_query_id": "tech-agent-001",
"changed_sources": true,
"change_note": "第二轮新增了官方文档类来源。"
}
这样做的好处是,后面不是凭感觉说“模型看到了什么”,而是能回到记录里查。
最后
观察大模型回答,最好不要只保存最终答案。
更可靠的方式是:
- 先固定问题池;
- 每次测试都记录模型、时间、答案和来源;
- 给来源做统一分类;
- 区分强记录、弱记录和过程记录;
- 定期用同一批问题复测。
这样得到的不是一次性的截图,而是一组可以复查、可以对比、可以持续更新的资料记录。
更多推荐
所有评论(0)