This commit is contained in:
Build Bot
2026-04-16 02:28:49 +08:00
parent 0702eb2a89
commit 4009fcf927
2 changed files with 388 additions and 0 deletions

View File

@@ -0,0 +1,114 @@
# Karpathy用「harness」彻底终结了RAG
> 来源: https://mp.weixin.qq.com/s/ABzwrSGeFs1Wv2RUBjLtwg
> 抓取时间: 2025-04-10
---
假期的时候Karpathy 大神发了一个llm.wiki的想法。 这条推文火爆了。
在LLM Agent时代分享具体代码或应用的意义正在变弱现在只需要分享想法然后把它交给 Claude、Grok 等 Agent它就可以根据你的需求自动搭建一个属于你自己的个人知识库。
还有最近特别火的各种 personal skill ,同事.skill、前任.skill、自己的skill甚至卡兹克把自己的创作skills都开源了。。。。
整体看下来我觉得它们都在做一件事情:把现实世界里原本只能"看"的东西,编译成 AI 可以持续操作的东西。
llm.wiki 在编译知识。创作 skill 编译方法论。persona skill 编译人格。
全网的博主都在分享理论。今天我们分享一下如何能跑通这种知识的编译。
llm.wiki这套理论虽然看起来就是又一次渐进式披露的实践。
但是很多人觉着,这不只是一个 AI 工具而更像是一种元框架meta-framework。它并不依赖某个具体模型或技术栈而是在尝试定义一种人类与 AI 协作管理知识的方式。随着模型不断迭代、框架持续演进,让 LLM 帮助编译并维护一个持续生长的 Wiki 这一模式,反而具备更长期的稳定性和适用性。
## 所以llm.wiki在干什么
过去大模型使用文档都是用RAG。问一个要综合五份文档的问题模型每次都要重新找、重新拼。没有积累。NotebookLM、ChatGPT 的文件上传,其实都是这个模式。
但是llm.wiki的模式是 你丢一份新材料进去,模型不是索引它等着以后检索,而是立刻读它、提炼它、把关键信息编入已有的 wiki。更新实体页、修订概念页、标注新旧数据的矛盾。一份材料可能触及十几个 wiki 页面。
而且知识编译一次,然后持续维护。不是每次都从头来。
这个模式其实非常有意思不止可以用在建个人wiki场景还可以往很多场景拓展比如记忆。
karpathy大佬举了一些场景case如下图也很实用。尤其是今天的ai发展的这么快。前脚龙虾后脚就hermes。上个月的harness可能这个月就要拆掉一些了。 这种知识的管理。不论是对个人还是对自己的agent系统都非常重要。
正常情况下如果想打通这种自动wiki工作流很容易遇到各种奇形怪状的数据。但是llm.wiki 这些都假设数据是干净的markdown这还还挺不符合实际场景的。
所以我找了一批更符合真实场景的数据但是也没有精挑细选。主要是Anthropic、OpenAI关于harness的博客。还有新模型mythos的博客、智谱glm5.1的博客、以及智谱的招股书本来准备下载财报的好像下错了不过这个500多页pdf也有很多复杂的图表
然后就可以开始按照llm wiki的要求3层架构构建了。
把llm.wiki丢给agent会自动构建好目录结构。 我用的 cursor + opus 4.6。raw 放原始材料wiki 放 AI 维护的知识中间层AGENTS.md 告诉 AI 这个 wiki 怎么组织。
整体的一个壳子大概长下面这个样子。
然后第一道坎就来了。
如果你的实际数据不是规整的txt或者markdownai用pdfplumber转成的markdown就会变成这个样子。文字换行、缩进、表格、图片这些都没法保留甚至可能混乱。
不管是简单的博客,还是复杂的文档,解析成这个样子其实对模型都特别不友好。
还好我用的opus 4.6,对这些东西会鲁棒一些,如果用国产平替估计影响就比较大了。
但是。正好我们最近有一些业务涉及到复杂的word格式文档处理订阅了合合信息 TextIn 的 API所以我顺手做了个对比。
比如这是TextIn转写的博客结果图片和格式排版这些都有保留。
TextIn对表格的表示用的是用的html形式的所以它可以表示更复杂的无线表、合并单元格这些。
可以看下图。在招股书的解析里边,图表的结果也非常的不错。
最后还附上TextIn api的耗时参考。目前这套解析在我们现在内部的一个业务上跑的还不错。可以在这里测试TextIn的解析https://cc.co/16YSdj
搞定预编译之后,开始走 ingest 流程。这里有一个很蠢的坑模型喜欢偷懒一次性看一点文档然后ingest很多的文档。
结果每份材料都是浅读,生成的 wiki 页面跟目录没什么区别。信息密度极低。
所以这里我优化了一下默认的AGENTS.md让它一份份处理超过的还要分段来处理。
这个小优化会带来比较明显的数据处理质量的提升。
10 份材料全部 ingest 完之后,结构是这样的:
大概的一个流程是,解析->然后模型会按照AGENTS.md 梳理每份内容的要点,文档要点示例如下:
然后会整理出实体、概念。 以下是二者的示例。都会有明确的跟其他文件的link关系。
concept之间还会自动构建起对比comparisons示例
最后从结果来看因为我已经用了最顶级的Opus4.6模型了,所以不论是不是最好的解析方式。
带来的wiki结构密度其实差异不大。但是信息密度差异比较大。用TextIn API解析的数据可以保留更多的原始信息让整个库的信息密度更高。
所有有考虑搭建这种自动更新wiki的同学可以考虑尽量用最好的解析策略。
接下来就可以看出来这种关联wiki的魅力了。
比如Harness我放了4篇博客包含Ralph Wiggum的反对多Agent的博客以及OpenAI、Anthropic的相关博客。
这样在Agent Harness概念页就出现了同时容纳了正反两方的观点还用表格对比了两种流派的差异。
这种跨文档的交叉引用和矛盾标注RAG 是做不到的。RAG 能从单份文档里检索片段但它不会主动发现两个人其实在用不同方式解决同一个问题。但是通过这种模式构建的wiki 它就全都懂了。
或者需要结合多个跨文档综合的问题。比如「智谱跟 Anthropic 的商业化策略有什么不同」。
Agent就可以依据信息的链接跳转自动的去探索需要的信息找到最终的答案了。
而传统的利用单文档的longcontext chatbot 或者 RAG其实很难做这些事情。但是wiki已经把他们编译好了。
## 写在最后
坦率的讲,跑完整个流程之后我有一个很强的感受。
llm.wiki 这个模式从理论上肯定是跑得通的。你在里面能看到 GraphRAG 的影子,能看到 Skills 的影子,能看到 Context Engineering 的影子。这些东西换了不同的名字,但做的事情有很大的重叠。
而在 Harness Engineering 爆火的今天llm.wiki 其实又是在强调,过去那些手动维护知识库的包袱,可以扔了。一整套编译工作,交给模型就行。
但一个东西没变。
garbage in, garbage out。今天依然成立。
解析,仍然是很多项目真正的卡点。如果你现在还在被这个问题困扰,可以试试 TextIn地址在这里https://cc.co/16YSdj
实验的完整目录结构、AGENTS.md、解析脚本均已开源。https://github.com/Nipi64310/llmwiki-test

View File

@@ -0,0 +1,274 @@
---
description: 从输出文本变成了输出并检验证据是否完整RAG之后+VAG
---
# 病例驱动证据验证框架:从表面匹配到可验证推理
## 研究背景与问题
### 当前 AI 证据引用的核心缺陷
现有 AI 模型在引用外部证据时存在严重的逻辑断层问题:
| 缺陷类型 | 具体表现 |
| ---------- | --------------------- |
| **表面匹配依赖** | 过度依赖文本相似度,用文字重合度"走捷径" |
| **逻辑断层** | 未真正理解证据与主张之间的因果关系 |
| **虚假支撑** | 生成看起来合理但缺乏逻辑支撑的回答 |
| **高风险隐患** | 在医疗、法律等领域可能导致致命错误 |
### 问题本质
模型并未真正"看懂"证据,而是利用文本重合度生成看似合理的回答。这种虚假的逻辑支撑在专业领域非常危险。
---
## 解决方案:三位一体验证框架
### 框架架构
研究团队提出**病例驱动验证框架Case-Driven Evidence Verification**,核心是三位一体结构:
```
┌─────────────────────────────────────────────────────┐
│ 验证任务 │
│ (转化为严苛的判断题) │
├─────────────────────────────────────────────────────┤
│ │
│ ┌─────────┐ ┌──────────────┐ ┌───────────┐ │
│ │ 具体情境 │ + │ 外部证据 │ + │ 结构化主张 │ │
│ │ CASE │ │ EVIDENCE │ │ CLAIM │ │
│ └─────────┘ └──────────────┘ └───────────┘ │
│ │
│ ↓ │
│ 模型输出裁定结果 VERDICT │
│ (支持 / 不支持) │
└─────────────────────────────────────────────────────┘
```
### 工作机制
1. **输入三元组**同时输入具体情境Case、外部证据Evidence和结构化主张Claim
2. **判断题模式**:将任务转化为判断题,强制模型输出明确裁定
3. **逻辑验证**:验证证据在当前情境下是否真实支撑主张
---
## 自动化数据生成方法
### 核心创新
**零人工标注成本**的自动化数据生成流水线,整合两大数据源:
| 数据源 | 用途 |
|-------|------|
| **MIMIC-CXR**(真实影像报告) | 提取病例状态Case |
| **Radiopaedia**(医学知识库) | 抽取数万条证据Evidence |
通过 **Refire Core** 逻辑规则智能重组,自动映射成数十万条正负样本。
### 四类训练样本
| 样本类型 | 特征 | 作用 |
|---------|------|------|
| **正样本** | 明确支持主张 | 学习正确关联模式 |
| **错误状态陷阱** | 高度相关但结论相反 | 封堵关键词匹配捷径 |
| **困难负样本** | 因果关系复杂 | 强化深层理解 |
| **简单负样本** | 明显不支持 | 基线学习 |
### 反事实负样本(核心突破)
- **语义特征**:与主张极度接近,包含所有核心关键词
- **逻辑特征**:由于病例特征差异,推导方向与主张完全相反
- **占比**25% 的数据集专门用于封堵关键词匹配捷径
**目的**:逼迫模型放弃表面关联,深入理解文字背后的逻辑因果。
---
## 实验设计与结果
### 关键对比实验
#### 1. 病例深度关联的效果
| 配置 | AUPRC | 平衡准确率 |
|-----|-------|-----------|
| 纯证据验证 | 35.1% | — |
| **深度关联验证** | **87.8%** | **92.0%** |
**结论**:单纯堆砌资料不能让 AI 变聪明,结合具体情境才能实现性能跨越。
#### 2. 关键词陷阱测试
**场景**:病例明确显示无胸腔积液,面对包含相同术语的干扰证据
| 模型 | 支持率 |
|-----|-------|
| 普通 AI | 99.1% |
| **深度验证模型** | **0.000%** |
**结论**:框架能有效识破伪装,不再盲目信任语义相近但逻辑无关的信息。
#### 3. 物理干预测试(检验推理真实性)
三种极端条件:
| 测试条件 | 描述 | AUPRC | F1 分数 |
|---------|------|-------|---------|
| 正常关联证据 | 基线测试 | 87.8% | 高 |
| 清空证据 | 切断所有参考资料 | 大幅下降 | 大幅下降 |
| **交换证据** | 张冠李戴的专业文本 | **21.7%** | 显著缩水 |
**结论**:性能急剧崩溃证明模型**高度依赖正确的外部证据**,而非死记答案。
#### 4. 证据数量与性能关系
| 证据数量 | AUROC |
|---------|-------|
| 1 句 | 较低 |
| **2 句** | **97.4%(巅峰)** |
| 10 句 | 基本持平 |
**关键发现**:模型不需要翻阅数百页文档,只需抓准最关键的两句信息就能实现满血性能。过度堆砌资料反而引入背景干扰。
### 全维度性能对比
| 方法 | AUROC | AUPRC | BRI Score |
|-----|-------|-------|-----------|
| 纯情境推断 | 59.90% | — | 高 |
| 纯证据验证 | — | 35.11% | 高 |
| **三位一体深度关联** | **97.43%** | **87.8%** | **0.060** |
---
## 泛化能力验证
### 陌生知识测试Held-out Content
使用**从未参与训练**的全新医学百科文章:
| 指标 | 结果 |
|-----|------|
| AUROC | 97.2% |
| F1 分数 | 77.9% |
**结论**:模型学习到的是**通用验证逻辑**,而非对特定教材句式的死记硬背。
### 跨数据集迁移
将基于 MIMIC-CXR 训练的模型**直接空降**到 CheXpert Plus 数据集6万+患者):
| 指标 | 结果 |
|-----|------|
| AUROC | 93.46% |
| 平衡准确率 | 87.45% |
**结论**:即便面对截然不同的书写风格和病例分布,模型验证能力依然在线,展现极强落地适应性。
### 底层模型对比
| 模型 | 参数量 | AUPRC | 特点 |
|-----|-------|-------|------|
| **DeBERTa-v3-large** | **3.95亿** | **87.8%** | 综合最强,面对未知证据最稳 |
| FlanT5-large | — | 次之 | 经典大模型 |
| RoBERTa-large | — | — | 经典 baseline |
**结论**:更现代的特征提取器能更敏锐地锁定微小的语义偏差。
---
## 应用场景
### 1. 临床问答护城河
```
检索器 → 生成器 → 【验证框架】 → 医生
输出置信度分数
拦截 99% 幻觉主张
```
- 作为最后一道交叉质证
- 有效拦截无依据方案
- 辅助医生做出更稳健的决策
### 2. 自动化医疗报告审核
- 自动提取结构化结论
- 与原始影像发现及医学标准逐一核对
- 实时标注逻辑冲突,提示人工复核
- 减轻高年资医生审核负担
- 杜绝因疲劳引发的关键性疏漏
### 3. 跨领域泛化
| 领域 | 应用 |
|-----|------|
| 法律合规 | 核实法条是否真实适用于案件事实 |
| 科研验证 | 自动检查实验引用是否存在张冠李戴 |
| 企业知识库 | 核对工单与操作手册,拒绝随意发挥 |
---
## 范式跃迁:从 RAG 到 VAG
| 范式 | 特征 | 核心区别 |
|-----|------|---------|
| **RAG**(检索增强生成) | 只要检索文本看起来相似,就强行作为答案参考 | 区分**相关性**与**支撑性** |
| **VAG**(验证增强生成) | 只有存在明确逻辑因果的文本才被认定为有效证据 | 追求**确凿性** |
**本质转变**AI 从松散的文本拼接机器 → 严谨的逻辑推演中枢
---
## 当前局限与未来路线
### 技术边界
| 局限类型 | 具体问题 |
|---------|---------|
| **泛化损耗** | 面对截然不同的新证据时AUPRC 指标仍会产生客观衰减 |
| **多状态扩展** | 目前主要验证二元主张,未来需向复杂多元连续图谱扩展 |
| **端到端噪声** | 引入全网实时检索后,对模型抗干扰能力提出更高要求 |
### 演进路线
```
第一阶段(已完成) 第二阶段(进行中) 第三阶段(愿景)
↓ ↓ ↓
三位一体验证框架 → 端到端动态检索 → 人类专家深度对齐
+ +
非结构化长文本 证据链自我修剪
高噪声环境 自主思考 Agents
```
---
## 核心结论
| 指标 | 结果 | 意义 |
|-----|------|------|
| AUPRC | 87.8%(提升 52.6% | 跨越性性能提升 |
| 平衡准确率 | 92.0% | 高可靠性 |
| BRI Score | 0.060 | 极低预测误差 |
**核心启示**:真正的智能不仅在于调取知识,更在于懂得如何对证据负责。
---
## 术语表
| 术语 | 全称 | 解释 |
|-----|------|------|
| **AUPRC** | Area Under Precision-Recall Curve | 精确率-召回率曲线下面积,衡量不平衡数据集性能 |
| **AUROC** | Area Under Receiver Operating Characteristic Curve | ROC 曲线下面积,衡量分类器区分能力 |
| **BRI Score** | Brier Score | 预测误差的均方误差,越低越准确 |
| **RAG** | Retrieval-Augmented Generation | 检索增强生成 |
| **VAG** | Verification-Augmented Generation | 验证增强生成 |
| **DeBERTa** | Decoding-enhanced BERT with disentangled attention | 更现代的预训练语言模型架构 |
| **MIMIC-CXR** | Medical Information Mart for Chest X-ray | 公开胸部 X 光影像数据集 |
| **反事实负样本** | Counterfactual Negative Samples | 语义相似但逻辑结论相反的样本,用于测试模型是否真正理解因果关系 |
| **CheXpert Plus** | — | 斯坦福大学胸部 X 光数据集 |
| **Refire Core** | — | 逻辑规则引擎,用于自动构建训练样本 |