使用增强检索
备注:这是一个概念验证,用克劳德编码的氛围。它有效,但预计会有粗糙的边缘。
Claude Code的使用增强检索(UAR)系统。与无状态的传统RAG不同,该系统从使用结果中学习,以随着时间的推移提高检索效率。
核心理念
传统RAG的问题
标准RAG是无状态的。它基于语义相似性检索内容,但不从结果中学习。一个一直让你误入歧途的块和一个救了你几十次的块一样容易被检索到——只要嵌入足够接近。
结果:讽刺的Reddit评论被视为事实陈述,过时的Stack Overflow答案与当前文档同等重要,并且没有“这个来源对于实用技巧来说很棒,但对于权威声明来说很糟糕”的感觉
UAR有什么不同
RAG询问: *“哪些内容在语义上与此查询相似?”*
UAR询问: *“哪些内容在语义上是相似的,并且实际上有助于完成像这样的任务?”*
每次检索和使用一条知识时,系统都会记录:
- 你试图完成什么任务?(调试、事实查找、概念理解等)
- 它是否有所帮助,部分帮助,完全错过,或积极误导?
- 为什么?
这将为每个块创建使用历史记录。随着时间的推移,系统会学习每一条知识的实际用途——不是通过可靠性得分,而是通过 角色扮演:相同的内容可能对调试很好,但对理论理解毫无用处。
原始使用历史记录直接呈现给LLM,而不是预先计算这些信号中的分数。它看到“这个块在调试中赢得了3倍,在事实查找中错过了2倍”,以及是否信任它完成当前任务的原因。判断取决于推理系统。
与代理记忆系统的关系
UAR符合代理RAG和代理记忆系统的新兴格局:
| 概念 | UAR实施 |
|---|---|
| 情节记忆 | 使用痕迹(带时间戳的结果和上下文) |
| 语义记忆 | 块+功能配置文件 |
| 记忆进化 | 合并(痕迹→ 随时间变化的配置文件) |
| 写入能力 | kb_ingest + kb_record |
| 检索作为工具 | kb_search 由研究子代理调用 |
传统RAG的进步→ 代理式检索增强生成→ 代理内存是关于添加 写入能力 因此,系统可以从交互中学习。UAR更进一步 明确的结果归因:不仅仅是“发生了什么”,而是“它真的有帮助吗?用于什么样的任务?”
这类似于A-Mem(Zettelkasten启发的代理记忆)等模式,其中笔记随着新的相关记忆的到来而演变。我们的整合过程也有同样的目的——将偶发性使用痕迹转换为语义功能特征,为未来的检索提供信息。
反馈归因
学习系统中的一个关键挑战是归因:当多个来源对一个答案做出贡献时,哪些来源值得赞扬?
UAR通过以下方式解决了这个问题 自我评价:在合成响应后,子代理评估哪些块实际对摘要做出了贡献,哪些块被检索但未使用。用户提供一条反馈(“有用”/“无用”),并精确记录该反馈:
- 贡献块 → 用户反馈(胜利/部分/失败/误导)
- 非贡献块 → 自动“未命中”(已检索但没有用)
这提供了按源学习,而不会给用户带来按源反馈的负担。系统从一个竖起的大拇指中学习到“Neo4j文档非常适合实现”和“维基百科被检索到但没有帮助”。
特性
- 多策略检索:关键字、语义(MiniLM嵌入)、概念、使用历史、近因
- 使用情况跟踪:按任务类型记录结果(胜利/部分/失败/误导)
- 角色扮演:相同的内容可能有利于调试,但不利于事实查找——单独跟踪
- LLM在循环中:使用历史记录直接浮出水面,让LLM了解信任的原因
- 本地嵌入:用途
all-MiniLM-L6-v2通过语句转换器,不需要外部API - SQLite存储:具有WAL模式的单文件数据库,用于并发访问
安装
需要Python 3.10+和 紫外线.
cd knowledge_base
uv sync使用Claude代码
添加到您的 ~/.claude.json 全球访问:
{
"mcpServers": {
"knowledge": {
"type": "stdio",
"command": "uv",
"args": ["run", "--directory", "/path/to/knowledge_base", "python", "mcp_server.py"]
}
}
}重新启动克劳德代码。知识工具将可用。
MCP工具
核心工具
| 工具 | 说明 |
|---|---|
kb_search | 具有丰富使用历史的多策略搜索 |
kb_semantic_search | 纯嵌入相似性搜索 |
kb_ingest | 添加内容(自动分块和嵌入) |
kb_record | 记录检索到的块的使用结果 |
kb_reflect | 对工作原理的全面分析 |
kb_quick_insights | 快速健康检查 |
实用工具(未向LLM宣传)
这些是可用的,但不包括在服务器说明中——对调试和管理很有用:
| 工具 | 说明 |
|---|---|
kb_stats | 数据库统计 |
kb_get_chunk | 获取具有完整使用历史记录的块详细信息 |
kb_list_documents | 列出所有文件 |
kb_delete_document | 删除文档及其所有块 |
kb_consolidate | 将使用跟踪转换为功能配置文件 |
整合
整合将情景记忆(个人使用痕迹)转化为语义记忆(功能档案)。当块或源积累了足够的使用数据时,它就会运行:
- 块:5+条记录→ 生成一个功能配置文件,描述块的优点/缺点
- 来源:10+条记录→ 生成源代码级配置文件
何时运行它: kb_quick_insights 包括合并状态:
{
"consolidation": {
"status": "recommended",
"chunks_ready_for_profiling": 3,
"sources_ready_for_profiling": 1
}
}当状态为“推荐”时,运行 kb_consolidate 以生成配置文件。这些配置文件将在未来出现 kb_search 结果,帮助LLM推理是否信任每个块。
任务类型
记录使用情况时,请指定任务类型:
factual_lookup-检查事实、定义、规范implementation_howto-如何构建/编写东西conceptual_understanding-理解概念/理论debugging-修复错误或问题decision_support-在选项之间进行选择exploratory_research-开放式探索
使用结果
win-直接解决了问题partial-有帮助,但需要更多miss-已检索但没有用misleading-导致错误的结论
工作流示例
- 搜索 在回答问题之前了解相关知识
- 使用 检索到的内容以帮助完成任务
- 记录 任务类型和注释的结果
- 随着时间的推移,根据实际工作情况改进检索
推荐用法:研究子代理
为了获得最佳结果,请在研究任务中使用子代理模式:
┌─────────────────────────────────────────────────────────────┐
│ MAIN CLAUDE │
│ - Focuses on user conversation │
│ - Spawns research agent when needed │
│ - Provides feedback on results │
└─────────────────────────────────────────────────────────────┘
│ ▲
│ query + context │ results + feedback request
▼ │
┌─────────────────────────────────────────────────────────────┐
│ RESEARCH SUB-AGENT │
│ - Searches KB first │
│ - Searches web if KB insufficient │
│ - Ingests valuable findings │
│ - Records outcome based on main Claude's feedback │
└─────────────────────────────────────────────────────────────┘此模式:
- 保持主要对话的焦点
- 确保反馈回路始终关闭
- 让子代理处理知识库复杂性
MCP服务器指令包括一个用于生成研究子代理的模板。
建筑
┌─────────────────────────────────────────────────────────┐
│ THE UAR LOOP │
├─────────────────────────────────────────────────────────┤
│ │
│ RETRIEVE ──────► USE ──────► RECORD │
│ ▲ │ │
│ │ │ │
│ │ CONSOLIDATE ◄─────┘ │
│ │ │ │
│ └──────────────┘ │
│ │
│ Retrieval is augmented by usage history. │
│ Usage history consolidates into functional profiles. │
│ Profiles inform future retrieval. │
│ │
└─────────────────────────────────────────────────────────┘文件
schema.py-数据模型和SQLite数据库harness.py-统一APIingest.py-内容摄取管道retrieve.py-多策略检索record.py-使用情况跟踪embeddings.py-本地MiniLM嵌入context.py-LLM推理的块状档案汇编consolidate.py-情景到语义整合reflect.py-知识库分析mcp_server.py-用于Claude Code集成的MCP服务器
许可证
麻省理工学院
