## 相关实体 - [Tcjndrk4Frmumngmboih W](https://github.com/QianJinGuo/wiki/blob/main/entities/tcjndrk4frmumngmboih-w.md) - [Google Workspace Updates Small Businesses Can Now Import Use](https://github.com/QianJinGuo/wiki/blob/main/entities/google-workspace-updates-small-businesses-can-now-import-use.md) - [Identity Behavior Context Itdr Solution](https://github.com/QianJinGuo/wiki/blob/main/entities/identity-behavior-context-itdr-solution.md) - [Openclaw Cloud Storage Config Guide Wechat](https://github.com/QianJinGuo/wiki/blob/main/entities/openclaw-cloud-storage-config-guide-wechat.md) - [Microsoft Is Quietly Shopping For An Openai Replac](https://github.com/QianJinGuo/wiki/blob/main/entities/microsoft-is-quietly-shopping-for-an-openai-replac.md) → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/PGpkC04XfF7ilMDb9vOcNQ.md) - [Gbrain 8Layer 51Cto](https://github.com/QianJinGuo/wiki/blob/main/entities/gbrain-8layer-51cto.md) - [实践教程真实Ai客服落地全流程意图识别混合检索到数据飞轮 V2](https://github.com/QianJinGuo/wiki/blob/main/entities/实践教程真实ai客服落地全流程意图识别混合检索到数据飞轮-v2.md) - [向量库是Rag的前菜知识图谱是答案本体论是灵魂 V2](https://github.com/QianJinGuo/wiki/blob/main/entities/向量库是rag的前菜知识图谱是答案本体论是灵魂-v2.md) ## 深度分析 1. **PDS是OpenClaw云端存储的核心基础设施**:网盘与相册服务(PDS)为OpenClaw提供云端文件存储能力,支持文件级权限管控和多空间隔离,是AI Agent访问云端文件的基础 2. **双重授权机制确保安全与灵活的平衡**:通过超级管理员绑定和可选的细粒度权限配置,OpenClaw可以在拥有足够能力的同时避免过度授权 3. **插件化集成实现无缝使用体验**:网盘功能以插件形式安装,通过自然语言对话即可调用各项能力,无需命令行操作 4. **多模态检索能力大幅扩展应用场景**:支持通过自然语言检索文档、图片和视频,实现跨格式的内容发现和理解 5. **客户端增强提供企业级文件管理特性**:可选安装网盘客户端,获得文件秒传、并发上传、带宽限制和同步备份等企业特性 ## 实践启示 1. **安全优先:使用专用低权限账号**:不要使用超级管理员账号授权OpenClaw,应创建一个具有基础预览/上传/下载权限的专用账号,以最小权限原则降低数据泄露风险 2. **容量规划:根据团队规模选择合适套餐**:网盘支持5~1000用户购买规格,购买前应根据实际使用人数和存储需求选择规格,并注意按包年包月计费 3. **效率提升:充分利用客户端特性**:安装网盘客户端后,可利用文件秒传避免重复上传,并发上传最多10个任务,以及同步备份功能保护本地文件 4. **测试验证:配置完成后进行功能测试**:配置完成后应测试文件查询、多模态检索和文件上传下载等核心功能,确保OpenClaw能正确访问网盘内容 5. **运维准备:提前了解升级卸载流程**:生产环境应提前了解插件升级和卸载命令(`openclaw plugins uninstall pds --force`),以便在出现问题时能快速回滚 --- ## Ch10.002 Identity Behavior Context Itdr Solution > 📊 Level ⭐ | 6.0KB | `entities/identity-behavior-context-itdr-solution.md` ## See exactly what every identity did, and why. Real-time behavior monitoring across humans, machines, and AI — with full session context, risk signals, and timeline clarity — to act in minutes, not hours.  WHAT YOU CAN'T SEE, YOU CAN'T STOP FRAGMENTED AUDIT LOGS NO CROSS-SYSTEM CONTEXT MANUAL LOG CORRELATION AI SESSIONS INVISIBLE ## 相关实体 - [Identity Behavior Context Itdr Solution Teleport](https://github.com/QianJinGuo/wiki/blob/main/entities/identity-behavior-context-itdr-solution-teleport.md) - [Harness Engineering Framework](https://github.com/QianJinGuo/wiki/blob/main/entities/harness-engineering-framework.md) - [Pgpkc04Xff7Ilmdb9Vocnq](https://github.com/QianJinGuo/wiki/blob/main/entities/pgpkc04xff7ilmdb9vocnq.md) - [Openclaw Cloud Storage Config Guide Wechat](https://github.com/QianJinGuo/wiki/blob/main/entities/openclaw-cloud-storage-config-guide-wechat.md) - [Microsoft Agent Framework Python Full Guide Zizhi](https://github.com/QianJinGuo/wiki/blob/main/entities/microsoft-agent-framework-python-full-guide-zizhi.md) → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/identity-behavior-context-itdr-solution.md) ## 深度分析 **统一身份链可见性是 ITDR 的核心差异化能力。** 传统安全运营中,身份日志分散在 Okta、AWS CloudTrail、GitHub、Kubernetes 等多个系统,安全团队需要手动关联拼凑才能还原一次完整的访问会话。Teleport 的方案将跨 IdP 的身份活动统一到单一时间线,关联来自 Okta 的认证事件、GitHub 的操作记录、AWS 的资源访问以及 Teleport 本身的 SSH/Kubernetes/Database 会话,实现"一个身份从登录到资源访问的完整链路"可见。这种统一视图将调查时间从小时级压缩到分钟级,是 ITDR 从"检测已知威胁"升级到"还原完整攻击叙事"的关键能力 。 **AI Agent 和 MCP 工具会话的审计盲区是现实威胁。** 当 AI Agent 通过 MCP 协议调用工具、查询数据库、操作云资源时,传统的 SIEM 和 audit log 无法记录这些行为——因为 AI Agent 使用的是 MCP 工具而非原生 API。Teleport 的方案将 AI Agent 的所有操作(prompts、queries、tool calls、data touched)纳入与人类和机器身份同等的审计框架,解决了 AI Native 时代身份安全最重要的盲区。Access Graph 的 Crown Jewels 监控可以标记 AI Agent 常访问的敏感资源,为 AI 权限滥用提供精准检测能力 。 **上下文驱动的检测与响应打破告警疲劳循环。** 传统 SIEM 规则依赖预定义的异常模式,但新威胁(如新型攻击向量、AI 驱动的权限滥用)往往无法被规则捕获。Teleport 的 50+ 身份漏洞类型检测( privilege escalation、lateral movement、standing privileges、unmanaged keys 等)结合身份上下文(该身份通常访问什么、什么是异常)进行判断,显著提升检测准确性,减少误报。配合 1-Click Identity Lock,可以在检测到可疑行为时立即终止所有会话,而无需手动在 Okta、AWS、GitHub 等多个系统逐一撤销访问权限 。 **跨系统的 impossible travel 检测是差异化能力。** 大多数身份安全产品仅在单一 IdP(如 Okta)内检测不可能旅行——如果一个账号 10 分钟前在北京登录、10 分钟后在伦敦登录则触发告警。Teleport 将这一能力扩展到跨 GitHub、Okta 和 Teleport 三个系统的关联分析,这在多云和混合架构企业中更具现实意义——攻击者可能通过窃取的 GitHub token 横向移动到云资源,而不仅仅是非法登录一个 SaaS 应用 。 **Access Graph + SQL Editor 为平台工程师提供原生工作流。** 安全工具最大的敌人是工具不用。Teleport 没有要求安全分析师学习新的专有界面,而是提供 SQL Editor 让熟悉数据库查询的工程师用 SQL 探索身份到资源的访问关系,以及 Graph Explorer 进行可视化路径遍历。这种设计降低了工具采用门槛,使安全能力真正下沉到平台工程师日常工作流中 。 ## 实践启示 - **AI Agent 身份审计应优先落地。** AI Agent 使用 MCP 工具产生的会话记录是大多数安全工具的盲区,建议优先部署 Teleport 的 AI Session Recording 功能,建立 AI 行为的基线可见性,再逐步扩展到人类和机器身份的全面监控 。 - **用 Access Graph 清理过权限身份。** 部署后第一件事是用 Access Graph 扫描所有身份的权限分布,重点关注跨 1800 个 repo 持有 super-admin maintainer 权限的工程师账号这类场景——这些过权限身份是潜在攻击跳板,应通过 Access Request 机制改为按需临时授权 。 - **Anomaly Detection 需要基线学习期。** 50+ 身份漏洞检测需要先建立正常行为基线再开启告警,避免大量误报冲垮安全团队。建议在"观测模式"下运行 2-4 周,手动审查触发最多的检测类型,调整阈值后再切换到主动告警模式 。 - **1-Click Identity Lock 是应急响应核心能力。** 发生疑似账户被盗时,1-Click Identity Lock 应作为 Incident Response Playbook 的第一步——立即切断所有会话,再进行取证分析,比传统的手动逐一撤销更快速且不留遗漏。该功能支持按用户、角色、服务器、MFA 设备等维度精细锁定 。 - **与 SIEM/SOAR 的集成应作为第二阶段目标。** Teleport 支持通过 HTTP 将审计事件导出到 Splunk、Datadog、Elastic 和 Panther,同时支持 S3 长期存储配合 Amazon Athena 查询。建议在完成内部身份基线建设后,再配置 SIEM 集成将身份安全事件纳入企业级安全运营体系,避免核心能力尚未稳定时就引入过多外部依赖 。 --- ## Ch10.003 向量检索、知识图谱与 LLM Wiki:RAG 被嘲笑了三年,但企业还是离不开它 > 📊 Level ⭐ | 0.9KB | `entities/向量检索知识图谱与-llm-wikirag-被嘲笑了三年但企业还是离不开它-3.md` > -> [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/向量检索知识图谱与-llm-wikirag-被嘲笑了三年但企业还是离不开它-3.md) RAG在网上已经死过很多遍了,谁用谁Low,但是实际上很多的企业知识库仍然在使用,并且依然是主流选择方案。 ## 来源 - 原文: [向量检索、知识图谱与 LLM Wiki:RAG 被嘲笑了三年,但企业还是离不开它](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/向量检索知识图谱与-llm-wikirag-被嘲笑了三年但企业还是离不开它-3.md) --- ## Ch10.004 向量检索、知识图谱与 LLM Wiki:RAG 被嘲笑了三年,但企业还是离不开它 > 📊 Level ⭐ | 0.9KB | `entities/向量检索知识图谱与-llm-wikirag-被嘲笑了三年但企业还是离不开它-2.md` > -> [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/向量检索知识图谱与-llm-wikirag-被嘲笑了三年但企业还是离不开它-2.md) RAG在网上已经死过很多遍了,谁用谁Low,但是实际上很多的企业知识库仍然在使用,并且依然是主流选择方案。 ## 来源 - 原文: [向量检索、知识图谱与 LLM Wiki:RAG 被嘲笑了三年,但企业还是离不开它](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/向量检索知识图谱与-llm-wikirag-被嘲笑了三年但企业还是离不开它-2.md) --- ## Ch10.005 向量检索、知识图谱与 LLM Wiki:RAG 被嘲笑了三年,但企业还是离不开它 > 📊 Level ⭐ | 0.9KB | `entities/向量检索知识图谱与-llm-wikirag-被嘲笑了三年但企业还是离不开它-1.md` > -> [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/向量检索知识图谱与-llm-wikirag-被嘲笑了三年但企业还是离不开它-1.md) RAG在网上已经死过很多遍了,谁用谁Low,但是实际上很多的企业知识库仍然在使用,并且依然是主流选择方案。 ## 来源 - 原文: [向量检索、知识图谱与 LLM Wiki:RAG 被嘲笑了三年,但企业还是离不开它](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/向量检索知识图谱与-llm-wikirag-被嘲笑了三年但企业还是离不开它-1.md) --- ## Ch10.006 图灵平台:万亿级轨迹数据的秒级检索实战 > 📊 Level ⭐ | 0.8KB | `entities/turing-platform-trillion-trajectory-retrieval-baidu-2026-07-22.md` > -> [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/turing-platform-trillion-trajectory-retrieval-baidu-2026-07-22.md) - 底库:近 10 万亿轨迹点(180 天长尾低级路历史轨迹) ## 来源 - 原文: [图灵平台:万亿级轨迹数据的秒级检索实战](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/turing-platform-trillion-trajectory-retrieval-baidu-2026-07-22.md) - 原始链接: : "https://mp.weixin.qq.com/s/Nmgink4YE0KVu8dTuEplyg --- ## Ch10.007 高德广告工程的 AI Native 知识库体系 > 📊 Level ⭐ | 0.8KB | `entities/gaode-ad-engineering-ai-native-knowledge-base-2026-07-22.md` > -> [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/gaode-ad-engineering-ai-native-knowledge-base-2026-07-22.md) | 接入层 | 统一知识入口,以 Skill 形态嵌入各类研发 Agent | ## 来源 - 原文: [高德广告工程的 AI Native 知识库体系](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/gaode-ad-engineering-ai-native-knowledge-base-2026-07-22.md) - 原始链接: : "https://mp.weixin.qq.com/s/1d9LDoD2SOcEZ19mDwiE-Q --- ## Ch10.008 Karpathy又封神!掀翻RAG,把你的笔记变成第二大脑 > 📊 Level ⭐ | 0.7KB | `entities/karpathy又封神掀翻rag把你的笔记变成第二大脑.md` > -> [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/karpathy又封神掀翻rag把你的笔记变成第二大脑.md) source_url: https://mp.weixin.qq.com/s/G7Fna5qK20lFji4Lqx8GMA ## 来源 - 原文: [Karpathy又封神!掀翻RAG,把你的笔记变成第二大脑](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/karpathy又封神掀翻rag把你的笔记变成第二大脑.md) - 原始链接: : "https://mp.weixin.qq.com/s/G7Fna5qK20lFji4Lqx8GMA --- ## Ch10.009 向量库是RAG的前菜,知识图谱是答案,本体论是灵魂 > 📊 Level ⭐⭐ | 49.6KB | `entities/向量库是rag的前菜知识图谱是答案本体论是灵魂.md` [向量库是Rag的前菜知识图谱是答案本体论是灵魂](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/向量库是rag的前菜知识图谱是答案本体论是灵魂.md) > AI训练营9 ** 期 ** ,5 ** 月7日 ** 开班,欢迎咨询 在最初做RAG系统的时候有个几乎绑定的名词: ` 向量库 ` 。所以他是什么呢? 应该说向量库是一个理论上很美好的名词,他是一类用于存储和检索向量的数据系统,这里有两点要注意: 1. ** 向量(embedding) ** ,可以将一段文本、图片、音频等内容,通过embedding模型编码成一个高维数组; 2. ** 检索 ** ,现在拿着一个查询向量,理想情况下向量库可以快速找到 ** 最相似的Top-K ** 条类目,这里可以带上原文片段等信息; 所以, ` 向量库找的是语义相近,而不是关键词查询。 ` 比如你去搜苹果,系统不可能给到你iPhone手机的,当向量库可以将他搜出来,于是大家就开始兴奋了。这似乎意味着: ` 我们从关键词查询进入了语义查询了! ` 另一方面,早期模型能力不行,单词上下文也就几千Token,而主流的文本embedding模型最佳编码长度也就500左右(256-768 tokens,最近也有提升到了8000左右Tokens的): 1. 太短了,可能信息不足,embedding表达不完整,匹配不上; 2. 太长,单个向量需要概括的信息过多,可能稀释核心语义,难以在相似性搜索中被选择,这是"信息淹没"; 这还正好跟模型上下文还对上了,于是乎向量库 ` 在早期 ` 的RAG系统几乎是标配,并且Coze、Dify、N8N等Agent低代码平台都是默认带上了向量库的,这进一步给很多不明真相群众造成了烟雾弹效应; 但真正使用过程中,大家又发现了好像玩不转,最主要的问题就是 ` 断章取义 ` ,要明白这是什么,就需要简单做展开: ## unset unset 传统RAG unset unset 传统向量库构建知识库的底层逻辑,是很粗糙的: 1. ** 切分(Chunking): ** 把一整段文档直接丢给向量库,然后开始无脑分块; 2. ** 向量化(Embedding): ** 把这些块映射成高维空间里的坐标; 3. ** 检索(Retrieval): ** 当用户问问题时,去找空间里距离最近的几个chunk; 4. ** 拼凑(Prompting): ** 把这几个chunk塞给大模型,说:"来,信息都给你了,把完整文档该给我了"; 如果原始文档过长,而每段分块内容又是不可控的,这里就会导致很多问题,最经典的就是 ** 上下文割裂 ** : 文档分块的时候对原文的完整性进行了破坏,比如表格阶段、论证逻辑切断,最终结果是信息丢失,比如以下案例: 电商"退款助手"场景,用户问"多久到账"。RAG 只召回主条款"T+1",把下一块的"黑名单/已发货订单除外"没带进来,助手回答"一律T+1",这可能导致高风险订单被误退款。 更恐怖的是医疗或者法律场景,比如将临床指南按段落切分,导致降压药"适用症"与关键的"妊娠期禁用"提示被分隔在不同向量块。 医生在审方时询问:"孕妇高血压能否使用某某地平?"系统如果仅检索到并返回了"适用症"信息块,生成的结果显示"该药可用于治疗高血压",这存在严重安全隐患。 于是乎,大家逐渐发现一个问题: ` 什么JB语义检索,还是关键词检索靠谱! ` ,于是乎,向量库其实在后来模型进步后( ** 上下文越来越长 ** ),一直是个非常尴尬的存在。 但如果非要把这些锅丢全部给向量库,也不大合适,因为RAG效果不行多半是 ` 大家想偷懒,数据处理(包括切分)没做好的缘故 ` ... 因为大家最后终于发现了: ` 语义相似也只能解决部分问题,我们需要完整的数据关系来表征真实的世界 ` ,说人话就是:我们不止要数据,我们还要关系,比如你说到苹果,我们要根据上下文自动带出iPhone,还需要连带带出乔布斯等数据; 到这里才引出今天的主角 ` 知识图谱 ` ,其实复杂的AI知识库,用的多半是 ` 伪知识图谱 ` 技术,这里会同时涉及到关键词、向量库检索等。 ## unset unset 知识图谱 unset unset 知识图谱和知识库非常相似,可以说 ** 知识图谱是知识库的一种有机表现形式。 ** 在逻辑上,知识库通过关系链的建立也能够形成图谱结构。 具体来说,知识库是对各种知识的组织、存储和管理,而知识图谱则是在此基础上通过图的结构(实体、关系和属性)来呈现知识的内在联系和结构。 知识图谱通常包括三大元素: 1. ** 实体(Entities): ** 即图中的节点,代表真实世界中的事物、概念等(如人、地点、物品、概念、类别)。 2. ** 关系(Relations): ** 实体之间的连接或联系,描述实体之间的互动。 3. ** 属性(Attributes): ** 描述实体或关系的特征信息,如一个实体的具体属性值。 通过这种标准化的表示形式,知识图谱不仅能够展示实体之间的关联,还能够进行语义分析,帮助计算机理解和推理这些关系。 它为我们提供了一种更加直观、结构化的方式来管理和呈现知识库中的信息。 > 更粗暴的理解可以是: ** 图谱就是强制将知识库按照实体、关系、属性 ** 的标准做结构化,两者间界限很模糊 为方便理解给一个案例,首先是 ** 没有关系的知识库 ** : 疾病: { 名称: "糖尿病", 类型: "慢性疾病", 并发症: ["心血管疾病", "肾脏病", "神经损伤"] } 症状: [ { 名称: "口渴", 常见疾病: "糖尿病" }, { 名称: "频繁排尿", 常见疾病: "糖尿病" }, { 名称: "体重下降", 常见疾病: "糖尿病" }, { 名称: "疲劳", 常见疾病: "糖尿病" } ] 药物: { 名称: "胰岛素", 类型: "药物", 用途: "控制血糖", 使用方法: "注射" } 然后是 ** 有关系的知识图谱: ** 实体: [ 疾病("糖尿病"): { 类型: "慢性疾病" }, 并发症("心血管疾病"): {}, 并发症("肾脏病"): {}, 并发症("神经损伤"): {}, 症状("口渴"): { 常见疾病: "糖尿病" }, 症状("频繁排尿"): { 常见疾病: "糖尿病" }, 症状("体重下降"): { 常见疾病: "糖尿病" }, 症状("疲劳"): { }, 药物("胰岛素"): { 类型: "药物", 用途: "控制血糖", 使用方法: "注射" } ] 关系: [ (疾病("糖尿病") - 表现为 -> 症状("口渴")), (疾病("糖尿病") - 表现为 -> 症状("频繁排尿")), (疾病("糖尿病") - 表现为 -> 症状("体重下降")), (疾病("糖尿病") - 表现为 -> 症状("疲劳")), (疾病("糖尿病") - 引发 -> 并发症("心血管疾病")), (疾病("糖尿病") - 引发 -> 并发症("肾脏病")), (疾病("糖尿病") - 引发 -> 并发症("神经损伤")), (疾病("糖尿病") - 治疗 -> 药物("胰岛素")) ] > PS:上述只是为了便于各位理解图谱是什么,真实的情况会更复杂,但大体是这么个意思 > > 比如常见的贝叶斯预测:P(糖尿病|多饮+多尿) = P(多饮|糖尿病) x P(多尿|糖尿病) x P(糖尿病) / P(多饮+多尿) 在大模型时代,当前模型对于 ** 根据症状推导常见疾病已经非常擅长 ** ,但是依旧会由于幻觉有各种问题,这里知识图谱的意义就来了: 输入:咳嗽 + 呼吸急促 + 发热 + 胸痛 图谱推理路径: 症状 → 咳嗽、呼吸急促、发热、胸痛 症状 → [常见疾病类别] → 呼吸系统疾病 可能的疾病:肺炎、支气管炎、慢性阻塞性肺疾病(COPD) 进一步筛查 → [检查指标] → 血氧饱和度、白细胞计数、胸部影像 如果胸部影像显示肺部浸润阴影,高度怀疑肺炎或肺结核 影像学特征差异 → [不同疾病影像学差异] → 肺炎(浸润阴影) vs 肺结核(钙化灶) 若影像学表现为浸润阴影,进一步考虑细菌性肺炎 最终诊断 → [关联知识库] → 确定细菌性肺炎可能性 若有相关临床史(如吸烟史、基础疾病),可能进一步确定为慢性阻塞性肺疾病合并肺炎。 综上,大模型其实就是我们所谓的快思考而知识图谱(知识库)就是我们所谓的慢思考了,在快慢结合下,医疗AI的答案将更为靠谱。 ## unset unset 知识图谱 → CDSS unset unset 医疗是知识图谱最经典的场景,而大模型出现之前最经典的图谱类产品是CDSS(Clinical Decision Support System):临床决策支持系统,是一种为辅助医疗专业人员做出临床决策的AI技术产品。 因为 ** AI辅助诊断的需求一直存在 ** ,所以前些年一直有机构在做CDSS的尝试,比如 ** IBM Watson ** 就投入了大量资源,但最终却以失败告终,现在回过头来看看其价值和失败的原因, ** 可能为后续的AI应用研发提供一些中肯的建议 ** 。 ### CDSS的核心原理 CDSS的核心原理之一是 ** 基于规则的推理 ** ,这种方法 ** 依赖 ** 于大量由 ** 领域专家 ** (医生)手工输入的规则和知识库。 每条规则通常以"如果...则..."的形式存在,系统通过这些规则对患者的症状、检查结果等信息进行分析,给出相应的建议。例如: 1. 如果患者有 ** 发热、咳嗽和气促 ** 的症状,那么该患者可能感染了 ** 呼吸道疾病 ** ; 2. 如果患者的 ** 血糖水平持续超过某个阈值 ** ,可能需要调整 ** 糖尿病 ** 治疗方案; 以上的所有规则便形成了CDSS最核心的 ** 知识库 ** ,他是CDSS最重要的组件: ** 存储着关于各种疾病、症状、治疗方法等的信息。 ** 这些信息通常来自医学文献、临床经验以及专家的知识,通过不断更新知识库,CDSS可以适应最新的医学研究成果和临床实践。 最终CDSS利用知识库中的信息结合患者的临床数据,进行诊断和治疗推理。它可以根据患者的病史、体征、实验室检查结果等信息,自动生成诊断建议,并根据既有的治疗方案推荐治疗方法。 只不过这里有两个核心的问题也就暴露出来了: ### 第一,知识库不全 CDSS的效果依赖于知识库的完整性,而知识库的完整性依赖于 ** 专业人员的不断录入 ** 。 且不论ICD11上的 ** 几万个疾病 ** 信息一次完整录入何其之高,一旦知识库中出现任何 ** 错误 ** 整个系统就会受到质疑,由此CDSS失败的 ** 罪魁祸首 ** 出现: ** 完整的知识库总是难以达成,包括知识的校准以及信息不断的更新,专业医生的时间成本极高。 ** ### 第二,泛化能力不足 CDSS之所以是辅助系统,是因为其泛化能力不足,他无法从海量的患者语言中抽取出他需要的医学关键词,换句话说: ** 真实世界的患者描述是很宽的,而CDSS的入口是很窄的,这导致了CDSS的适应性极差 ** 。 比如患者的描述是:我感觉到胸口很沉,有时候呼吸急促,特别是晚上躺下时。 CDSS通常需要将这些信息转化为结构化的数据,如 ** "胸痛"、"呼吸急促" ** 等,才能对症下药。 但 ** "胸口很沉" ** 这样的描述是非标准化的,且没有精确到医学术语,CDSS难以直接识别并匹配相关的疾病(如心脏病或呼吸系统问题)。 这里还产生了另一个问题,一旦CDSS的理解(关键词抽取)是 ** 错误的 ** ,那么 ** 整个诊断建议都是不可逆的错误。 ** 这里虽然有些排除算法,但并不能从根本解决问题,因为 ** 没办法解决关键术语抽取能力的缺陷 ** 。 下图应该能让大家直观的感受到 ** 泛化能力中宽窄 ** 的情况: 术语 | 可能描述 | 难以解释 ---|---|--- ** 头痛 ** | "太阳穴一跳一跳地疼" "后脑勺像被锤子砸" "一吹风就头胀" "看电脑久了眼眶连着疼" | 无法区分偏头痛/紧张性头痛/青光眼 ** 胸痛 ** | "心脏位置像针扎" "左胸有东西压着喘不过气" "胸口火辣辣地烧" "深呼吸肋骨下刺痛" | 可能混淆心绞痛/胃食管反流/肋间神经痛 ** 呼吸困难 ** | "喉咙被掐住的感觉" "吸气吸不到底" "睡觉躺不平会憋醒" "走两步就要大喘气" | 无法区分哮喘/心衰/COPD/焦虑症 ** 铁摄入过量 ** | "最近补铁片后大便发黑" "每天吃半斤菠菜+猪肝" "孕期补铁后恶心加重" | 可能忽略铁剂中毒风险 无法跨越这个 ** 泛化能力不足 ** 的问题,所以CDSS只能是辅助系统,由医生输入真实的症状信息,比如医生根据用户描述进行症状输入。 者就显得CDSS很鸡肋了: ** 好的医生不需要CDSS,水平不行的医生本身也抽取不准,一时之间,CDSS竟有鸡肋之感受! ** 所以,结论就是: ** CDSS没用咯?这可能也不至于,特别是大模型的AI时代。 ** CDSS的本质是医学知识库,更进一步可以衍生出一套 ** 医学知识图谱 ** ,这套图谱在之前由于 ** 泛化能力不足所以不好用 ** ,但在大模型时代技术鸿沟的问题被弥合了,所以知识图谱也就开始焕发新生了。 ## unset unset 图谱 VS 知识库 unset unset 从存储方式来说图谱区别于知识库的差异在于 ** 图结构 VS 表结构 ** ,其实更深一步来说,其差异是认知的差异,或者说点状或网状: 传统的知识库以表分类知识: 传统知识库如同中药房的百子柜,每个抽屉(数据库表)存放着严格分类的知识: 1. ** 疾病表: ** ICD-11编码、标准名称、所属科室; 2. ** 药品表: ** 化学名、适应症、禁忌证; 3. ** 症状表: ** 标准化描述、关联器官; 这种结构的致命缺陷在2020年新冠疫情中暴露无遗:当患者同时出现 ** 发热、腹泻、味觉丧失 ** 时,系统无法自主发现这些跨科室症状的新型关联模式。 其实这里疾病和症状表之间可以通过多重关系表(如症状与疾病的"表现为"关系)建立更多动态的联接,这能更好地发现症状之间的组合关联模式。 但即便如此,这种关系依然是 ** 预先定义好的 ** 。这里的意思是: ** 知识库 + 关系表在已知关系的场景中可以满足大部分需求,尤其是在数据结构比较明确且稳定的情况下。 ** 而知识图谱的核心优势是 ** 开放系统的可扩展性,以及它能够应对更加动态、复杂和未知的情况, ** 举个例子: ### 二甲双胍的案例 二甲双胍是治疗2型糖尿病的一zhong药物,但我们发现: 1. 长期服用后体重可能下降; 2. 可能通过抑制肝糖异生、改善胰岛素敏感性间接影响脂肪代谢; 3. 在非糖尿病人群中也可能产生代谢调节作用; 这类 ** 跨领域 ** 的关联关系在传统医学知识库中往往缺失,因为不是糖尿病治疗重点,所以一般不会存在,但知识图谱可以低成本扩展。 假设某医学数据库的结构如下: 当需要添加【二甲双胍→减肥】关系时: 1. 需要修改数据库模式(新增字段或关联表); 2. 需临床指南明确认可该用途才能入库; 3. 无法表达间接作用机制(如通过AMPK通路影响代谢); PS:从这里也可以看出来,图谱的存在其实是为了解决工程维护问题 但以上问题在知识图谱规则中就比较简单了: 当新研究发现时,只需添加三元组: 以上算是产品视角层面图谱与知识库的核心差异。 ### 生成手段 传统知识库通常由 ** 权威专家(至少会有专家校验) ** 手工录入数据,所有信息都经过严格审核,确保每条记录都能追溯到权威文献(顶级期刊)或临床指南(最差也得是教材)。 这种方式使得数据具有高度的准确性和权威性,便于医生查证数据的来源,提高医疗决策时的信心。 知识图谱的话除了从结构化的数据(比如知识库)生成外,还会从非结构化数据(比如文章、文献、网页甚至影像等)提取关系和实体。 毕竟舒服的工作是他自己就将结构提取好了,比如之前我们研究的阿里KAG框架,可以直接提取我文章形成图谱: 《第一节:经理的能力模型》(现在公众号不允许外链,我这里就不发出来了) > PS:只不过实际提取的还不太好,现在也没太更新,总之不好用... ### 医疗置信度 在当前医疗大模型产品中, ** 溯源(可追溯性)和医疗置信度 ** 是至关重要的,因为它们直接关系到诊断决策的安全性和可靠性。 指能够追踪每一条信息的来源,从原始文献、临床指南、专家共识到数据采集的具体过程。 溯源性越高,医生越能确信系统给出的结论有明确的依据,从而在临床决策中更有信心使用这些数据。 只要医疗信息可溯源,加之算法清晰合理,其医疗置信度自然就高了。 综上,图谱与知识库各有优劣但大家也不必纠结,一起使用就好, ** 其实可以看出,图谱会更适应于大模型时代的搜索使用 ** 。 至此进入今天的正题: ** 知识图谱+大模型提升解决医疗幻觉问题 ** ## unset unset 图谱+LLM unset unset 如上所述,AI1.0时代的CDSS根本无法满足医生的基本使用,而大模型时代的DeepSeek依旧在 ** 模型幻觉 ** 等问题上让医疗人员 ** 犹豫不决 ** ,比如以下案例: 在急诊分诊、手术抢救等情境下,错误的诊断不仅会延误治疗,还可能使患者失去最佳抢救时机,极大地危及生命。 因此, ** 降低大模型幻觉风险、提高生成答案的可信度成为关键任务。 ** > ** 而知识图谱结合大模型的使用会是解决模型幻觉乃至增强医疗置信度的有效手段 ** > > _ PS:这类应用其实有很多,比如前面所述的KAG乃至GraphRAG(由微软研究院开发的一种 ** 新型检索增强生成框架 ** ,它旨在利用知识图谱和大型语言模型来提升信息处理和问答能力)。 _ ### 医疗置信度的四个维度 为了保证诊断建议的准确性和临床安全性,我们需要考虑四个维度: 1. ** 数据溯源 ** 。 每条诊断结论都应能追溯到权威指南、临床文献和历史病历数据。只有明确溯源,医生才能信任系统的判断。 2. ** 一致性 ** 。 综合患者的主诉、检查数据、影像资料等多方面信息,确保不同数据源之间推理结果的一致性。多模态一致性有助于消除单一数据带来的偏差。 3. ** 动态性 ** 。 系统必须能够 ** 实时更新 ** ,根据最新的医学研究和临床指南动态调整诊疗路径。动态适配确保了诊断建议始终反映最新临床证据。 4. ** 可解释推理链 ** 。 生成的答案应附带详细的推理链和证据来源,让医生了解每一步判断的依据,从而对系统的决策过程有充分信任。 ### 医学知识结构化 医疗知识图谱可以形成一张庞大的知识网络。例如,对于2型糖尿病: 通过这种结构化方式,系统可以明确展示各医学实体之间的因果和关联关系,形成完整的知识链条。 这样,在实际诊断过程中,知识图谱不仅能提供丰富的背景知识,还能对大模型的生成过程进行实时约束,从而降低幻觉风险。 并且,图谱的更新速度可以很快,以进一步保障医疗的及时性。 ## unset unset 图谱+RAG unset unset 在实际应用中,将知识图谱与RAG技术结合,可以构建一个多层次的诊断体系: 该系统通过路由、查询规划,形成了一个自上而下的三层防御体系,确保生成答案具有置信度和可解释性: 在此架构中,系统首先对输入问题进行初步判断:对于简单、标准的查询直接由RAG基础层处理; 而对于复杂、多模态或涉及实体关系的问题,则交由图谱推理层进一步分析。 无论哪种路径,最终结果都经过置信度验证,当系统置信度超过预设阈值(如90%)时直接输出,否则提交专家复核。 以下是 ** 通过知识图谱实现对复杂问题的结构化推理 ** 案例: 为了更直观展示知识图谱+LLM对提高医疗置信度的效果,下面通过三个层次的案例进行对比分析,以下是基本输入: ** 一、大模型(无RAG技术) ** ** 二、大模型+RAG ** 这里的输出其实已经不错了,只不过组装的信息缺少逻辑性。 ** 二、大模型+图谱+RAG ** 这种在输出前结合CoT的功能,再集合溯源的功能,医生还不被迷得死死的... 本体论 聊到图谱就不得不提最近一个偶尔被提起的新词: 本体论,Ontology 。 所谓本体论,如果放到 AI 知识系统中,他核心想要做的事是, 去表述这个世界应该被如何定义,要注意,这个世界可以很小 。 所以,图谱更像一张网,本体论可以是这张网背后的建模逻辑,从这里就可以看出他们的关联性很大了,这也是为什么本体论做完了看上去和图谱差不多的原因: 这里大家可能看不懂,我们继续回归前面CDSS相关案例,我们不能随便把 发热、肺炎、抗生素、白细胞升高 ,都等价为图谱上的节点,因为这些东西根本不是同一类对象: * 发热是症状; * 肺炎是疾病; * 抗生素是药物类别; * 白细胞升高是检查结果; * 细菌感染可能是病因; * 用药禁忌又属于约束条件。 本体论的价值在于,它先定义清楚几件事: 1. ** 实体类型是什么: 疾病、症状、药物、检查、指南、禁忌证、适应证; ** 2. ** 实体之间允许什么关系: 疾病表现为症状,药物治疗疾病,药物禁用于某类人群; ** 3. ** 关系的语义强度是什么: 是因果、相关、并发、风险提示,还是弱关联; ** 4. ** 推理规则是什么: 哪些关系可以传递,哪些关系不能传递,哪些结论必须结合证据等级。 ** 举个简单例子: > 二甲双胍 —— 治疗 —— 2型糖尿病 > 二甲双胍 —— 可能导致 —— 体重下降 > 二甲双胍 —— 通过AMPK通路影响 —— 代谢调节 这三条关系都是对的,但它们的医学含义完全不同: * 第一条是明确适应证,置信度高; * 第二条是临床观察或副作用层面的关联; * 第三条是作用机制层面的解释。 如果没有本体论,系统可能会把它们粗暴理解成:二甲双胍可以减肥,这显然是不对的。 这就回到了知识图谱的问题了,图谱这个技术本身是没有KnowHow的,也就是是我们这批不懂医学的程序员做出来的,但我们做出来的东西肯定会存在很多问题,其中最重要的就是: 这个领域里的知识,应该按照什么规则被理解? 这也是为什么医疗、法律、金融这类高风险行业,不能只靠大模型自动抽取三元组就完事, 大模型可以帮我们提高抽取效率,但本体论决定了这些抽取结果能不能被正确使用 。 说到底,关系千千万,我们需要的逻辑是什么,这个反而最重要。 这里我下个结论: 本体论是让知识图谱具备行业 KnowHow 的建模规则... ## unset unset 结语 unset unset 最后总结一下:向量库从来都不是RAG必须的选择,他的问题很大, ` 它将知识压缩为孤立的"点" ` ,这种所谓语义检索是很脆弱的。 相应的,知识图谱的"回归",则是对知识本质的回应: ** 它不满足于点与线的偶然关联,而是着力构建实体、属性和关系的确定网络。 ** 它带来的不是"更像",而是"更相关"与"更可信",通过可解释的逻辑链,将检索从概率匹配提升到关系推理。 事实上做过复杂AI知识库业务的同学会理解: ` 伪知识图谱就是CoT本身了 ` 。 最后,工程实践也正在走向务实与融合,但依旧有很多问题需要处理,其中最大的问题是 ` 人们很"懒惰",他们并不想去处理烦躁的数据 ` 。于是乎市面上也出了很多自动数据处理的框架,比如PageIndex: 他通过层级化、结构化的索引,检索可以变为先定位、后精读的"规划-取证"流程。 向量库在此体系中,作用是处理模糊问法的补充工具,这可能才是他真正需要去到的角色。 ` 真实的系统,往往是关键词、规则路由、向量检索与图谱查询的混合体。 ` 这里再说下下阶段的可能:未来的AI知识系统,或许将不再显式区分这些组件,而是将其内化为自主规划、多步推理、自我校验的Agent能力。从"检索增强"走向"推理增强",让机器不仅找到片段,更能理解因果,最终交付确信的答案。 我反正看进来Google的NoteBookLLM表现是很不错的,他的技术路径可能是个方向。 好了,文章很长了,希望对大家有用! ** 点击上方卡片关注叶小钗公众号 ** ## 深度分析 ### 向量库的局限性本质 向量库作为早期RAG的核心组件,其本质缺陷在于**将知识压缩为孤立的"语义点"**。这种处理方式存在三个根本性问题: 1. **上下文割裂**:Chunking过程中对原始文档完整性的破坏,导致关键信息被分隔 2. **信息淹没**:长文本的向量表示需要概括过多信息,稀释核心语义 3. **语义脆弱性**:依赖"语义相似性"而非"关系推理",容易出现断章取义 向量库的衰落与模型上下文能力的增长呈负相关——当上下文窗口从4K扩展到128K甚至更高时,向量库的"折中"价值急剧下降。 ### 知识图谱的范式价值 知识图谱的"回归"本质上是对**关系推理**的回归。与向量库的"概率匹配"不同,图谱提供: - **确定性关联**:实体-关系-属性的标准化表示 - **可解释推理链**:从症状到疾病的逻辑推导可追溯 - **开放扩展性**:新关系可低成本添加,无需修改数据库模式 更深层地,知识图谱体现了**慢思考**的认知模式——与LLM的快思考(直觉生成)形成互补,这在医疗、法律等高风险场景中尤为关键。 ### 本体论的建模意义 本体论(Ontology)是知识图谱背后的**建模逻辑**,决定了: - 实体类型定义(疾病、症状、药物、检查等) - 允许的关系类型及其语义强度 - 推理规则的传递性约束 没有本体论的图谱是"没有KnowHow的骨架"——这也是为什么高风险行业(医疗、法律、金融)不能仅靠LLM自动抽取三元组,必须有领域专家参与本体论建设。 ### 图谱+LLM的演进路径 从CDSS失败到GraphRAG兴起,知识图谱与LLM的结合经历了: 1. **CDSS阶段**:纯规则驱动,依赖专家手工录入,泛化能力不足 2. **向量RAG阶段**:语义检索,但上下文割裂问题严重 3. **GraphRAG阶段**:图谱+LLM结合,实现置信度验证和可解释推理 未来方向:从"检索增强"走向"推理增强",将知识系统内化为Agent的多步推理、自我校验能力。 ## 实践启示 ### 1. 重新评估向量库的定位 向量库不应再被视为RAG的"标配",而应是: - **模糊问法的补充检索工具** - **非结构化内容的预筛选层** - **与关键词检索、规则路由混合使用** 真实系统往往是:关键词路由 + 向量检索 + 图谱查询的混合体。 ### 2. 构建领域知识图谱的优先级 对于高风险行业(医疗、法律、金融): 1. **先建本体论**:明确实体类型、关系语义、推理规则 2. **再建图谱**:基于本体论构建领域知识网络 3. **最后引入LLM**:用LLM增强图谱的构建效率和推理能力 关键认知:LLM可以提高抽取效率,但本体论决定了这些结果能否被正确使用。 ### 3. 医疗AI系统的设计建议 基于本文分析,医疗AI系统应具备四维置信度: - **数据溯源**:每条诊断结论可追溯到权威指南 - **一致性**:多模态数据(症状、检查、影像)推理结果一致 - **动态性**:实时更新最新医学研究 - **可解释推理链**:附带详细判断依据 架构建议:路由层 → 简单查询由RAG基础层处理,复杂多模态问题交由图谱推理层,最终经置信度验证后输出。 ### 4. 数据处理的工程实践 不要再"偷懒"——数据处理(包括切分)的好坏直接决定RAG效果: - 使用层级化、结构化的索引(如PageIndex) - 检索流程:先定位、后精读的"规划-取证"模式 - 避免无脑chunking,考虑文档结构(表格、论证逻辑) ### 5. 关注技术演进方向 - **Google NotebookLLM** 可能是未来方向之一 - 从"检索增强"走向"推理增强" - 未来的AI知识系统将不再显式区分组件,而是内化为Agent的自主规划、多步推理、自我校验能力 ## 关联阅读 ## 相关实体 - [Google Agentic Rag Sufficient Context Agent Framesqa](https://github.com/QianJinGuo/wiki/blob/main/entities/google-agentic-rag-sufficient-context-agent-framesqa.md) - [Architecture Data Foundations For Ai Powered Search](https://github.com/QianJinGuo/wiki/blob/main/entities/architecture-data-foundations-for-ai-powered-search.md) - [Rag技术框架的演进方向](https://github.com/QianJinGuo/wiki/blob/main/entities/rag技术框架的演进方向.md) - [Skill Rag Tsinghua Sra](https://github.com/QianJinGuo/wiki/blob/main/entities/skill-rag-tsinghua-sra.md) - [Harness Engineering Framework](https://github.com/QianJinGuo/wiki/blob/main/entities/harness-engineering-framework.md) → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/向量库是rag的前菜知识图谱是答案本体论是灵魂-v2.md) --- ## Ch10.010 RAG → 知识图谱 → 本体论:三层知识架构 > 📊 Level ⭐⭐ | 28.7KB | `entities/rag-vector-knowledge-graph-ontology.md` # rag-vector-knowledge-graph-ontology 向量库是RAG的前菜,知识图谱是答案,本体论是灵魂 2026年5月4日 10:39 四川 标题已修改 在最初做RAG系统的时候有个几乎绑定的名词:向量库。所以他是什么呢? 应该说向量库是一个理论上很美好的名词,他是一类用于存储和检索向量的数据系统,这里有两点要注意: 向量(embedding),可以将一段文本、图片、音频等内容,通过embedding模型编码成一个高维数组; ## 相关实体 - [Three Rag Architectures Classic Graph Agentic](https://github.com/QianJinGuo/wiki/blob/main/entities/three-rag-architectures-classic-graph-agentic.md) - [Nvidia Multimodal Rag Knowledge Systems](https://github.com/QianJinGuo/wiki/blob/main/entities/nvidia-multimodal-rag-knowledge-systems.md) - [Rag技术框架的演进方向](https://github.com/QianJinGuo/wiki/blob/main/entities/rag技术框架的演进方向.md) - [Skill Rag Tsinghua Sra](https://github.com/QianJinGuo/wiki/blob/main/entities/skill-rag-tsinghua-sra.md) - [Harness Engineering Framework](https://github.com/QianJinGuo/wiki/blob/main/entities/harness-engineering-framework.md) → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/rag-vector-knowledge-graph-ontology.md) - [knowledge base layer architecture: from rag to agent-native](https://github.com/QianJinGuo/wiki/blob/main/entities/pyramid-kb-knowledge-context-layer-banya.md) - [MOC](https://github.com/QianJinGuo/wiki/blob/main/moc/rag-knowledge-retrieval.md) ## 深度分析 **一、向量库的"语义检索"神话在工程实践中存在根本性脆弱性。** 向量库将知识压缩为孤立的"向量点",依赖语义相似度匹配(Top-K检索),但这无法捕捉完整上下文。典型失败场景是:文档分块导致"上下文割裂"——如医疗场景中药物适用症与妊娠期禁用警示被切分到不同向量块,召回时只返回部分信息,导致误诊风险。文章犀利指出"什么JB语义检索,还是关键词检索靠谱",揭示了向量检索在实际生产环境中的局限被长期低估 。 **二、知识图谱的核心价值在于将知识从"点状存储"升级为"关系网络"。** 知识图谱由实体(节点)、关系(边)和属性构成,能够显式表达"糖尿病→表现为→口渴"、"糖尿病→治疗→胰岛素"等确定性关联。这种网状结构使得推理路径可追溯、可解释,而不像向量检索那样只能提供"概率相似的片段"。在医疗、法律、金融等高风险领域,这种可解释性直接决定系统能否被信任和使用 。 **三、本体论是知识图谱具备行业KnowHow的建模规则,是三者中最被低估的层次。** 本体论定义了"实体类型是什么、允许什么关系、关系语义强度如何、哪些推理规则可以传递"。二甲双胍的案例极具说明性——"治疗糖尿病"(明确适应证)、"可能导致体重下降"(副作用观察)、"通过AMPK通路影响代谢"(作用机制)是三条语义强度完全不同的关系,没有本体论的约束,系统可能将其粗暴理解为"二甲双胍可以减肥"。这解释了为什么医疗、法律等高风险行业不能只靠大模型自动抽取三元组 。 **四、RAG架构正在从"检索增强"向"推理增强"演进,混合架构是当前最优解。** 真实系统往往是关键词路由、向量模糊匹配、知识图谱推理的混合体。向量库在其中扮演的角色正在从"主力检索"退化为"模糊问法的补充工具",真正复杂的实体关系推理必须交给知识图谱和路由层。这一趋势已在Google NotebookLLM等产品中得到验证 。 **五、知识图谱+LLM的融合是降低医疗幻觉的有效路径,但前提是医疗置信度四维度的完整建设。** 医疗置信度需要同时满足:数据溯源(每条结论追溯到权威文献)、一致性(多模态数据推理结果一致)、动态性(实时更新最新医学研究)、可解释推理链(附详细依据和来源)。知识图谱+CoT+溯源的组合架构已在实验性场景中展现显著优于纯RAG的效果,但距离规模化落地仍有工程成熟度差距 。 ## 实践启示 1. **重新评估向量库在RAG架构中的定位。** 向量库并非RAG的必选组件,其语义检索能力存在边界——长文档切分导致的上下文割裂和"信息淹没"问题在复杂场景中不可忽视。建议将向量库定位为"模糊匹配的补充工具",核心检索逻辑交由结构化程度更高的知识图谱或规则路由层承担。 2. **在高风险应用场景(医疗、法律、金融)必须引入知识图谱而非单纯依赖向量RAG。** 这些领域的知识具有强关联性和高置信度要求,向量检索的"概率匹配"无法满足"谁说了什么、证据等级如何、结论是否可传递"的推理需求。知识图谱提供的确定性关系网络和多跳推理能力是降低误诊、误判风险的关键基础设施。 3. **本体论建设应先于知识图谱抽取工程。** 在开始用大模型自动抽取三元组之前,应先与领域专家共同定义清楚:实体类型体系、允许的关系类型、语义强度分级、推理传递规则。否则大模型抽取出的"关系"会因为语义边界模糊而失去可用性,甚至引入误导性关联(二甲双胍→减肥的错误推导)。 4. **采用三层防御架构处理不同复杂度的查询。** 简单标准化查询走RAG基础层,复杂多跳或实体关系推理走图谱推理层,两路结果都经置信度验证(阈值如90%)后才输出或提交专家复核。这一架构已在医疗诊断场景中验证有效,适合作为复杂知识问答系统的设计参考。 5. **关注RAG向"推理增强"的演进方向,而非继续在向量检索上内卷。** 未来的AI知识系统将不再显式区分检索组件,而是将其内化为Agent的自主规划、多步推理、自我校验能力。开发者和企业应储备Agent架构和推理链设计能力,而非持续优化切分策略或向量模型。 6. **拥抱混合架构,但优先投资数据治理而非模型调优。** 文章最后的判断"人们很懒惰,不想处理烦躁的数据"是行业痛点也是机会点——自动数据处理框架(PageIndex等)正在涌现,但最终决定系统效果的仍是数据质量。在图谱和本体论上的数据投入,回报远超在向量模型或Embedding策略上的微调。 --- ## 第 2 来源 — Zleap AI 团队「SAG (SQL-Retrieval Augmented Generation)」(2026-06-16) > Source: [第2原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/sag-sql-retrieval-augmented-generation-zleap-ai-2026-06-16.md) > Author: 尹John (AGI Hunt) > Team: Zleap AI > Date: 2026-06-16 第 1 来源 (2026-05-04) 讲 **向量库/知识图谱/本体论** 三种知识组织形态的对比。第 2 来源是 **Zleap AI 团队 SAG 新 SOTA RAG** —— 用 **event-entity 超边模型 + MySQL + Elasticsearch 双存储 + 双路并行检索 + SQL JOIN 多跳** 替代传统 GraphRAG,在多跳问答基准上**领先 HippoRAG 2 (当前 SOTA) 11.1 个百分点**,已在 **5 亿生产数据**规模稳定运行。本来源填补 wiki 中"RAG 新 SOTA / 新一代架构"的视角空白。 ### 核心数据(HippoRAG 2 vs SAG) | 指标 | HippoRAG 2 | SAG (Zleap AI) | 提升 | |------|-----------|---------------|------| | MuSiQue Recall@2 | 49.5% | **64.1%** | +14.6 | | 三个基准平均 Recall@2 | 68.2% | **79.3%** | +11.1 | | Recall@5 (MuSiQue) | - | **80.04%** | - | | 生产数据规模 | - | **5 亿+** | - | **三个基准**: HotpotQA / 2WikiMultiHopQA / MuSiQue **统一配置**: BGE-Large-EN-v1.5 (embedding) + Qwen3.6-Flash (LLM) ### 三大 RAG 范式演进(本来源独家时间线) #### 范式 1: 传统向量 RAG (只会看脸) **逻辑**: 把每段文本变成一个向量 → 问题来了找最"像"的文本。 **优势**: 快 / 便宜 / 好部署 / 简单问答够用 **根本短板**: 向量搜索只知道"像不像",**不知道"谁跟谁有关系"** **经典失败案例**(本来源独家): > "A 公司收购了 B 公司,B 公司的 CTO 后来加入了 C 项目,C 项目影响了哪个产品路线?" > 答案分散在 3 篇完全不同文档,单独拿出任意一篇都和"问题不太像",只有**连起来才是完整答案**。向量 RAG 稳定找到这条链的概率"相当之低"。 **核心比喻**: 只会"看脸",不会"顺藤摸瓜"。 #### 范式 2: GraphRAG / HippoRAG 2 (图谱太重) **思路**: 从文本里把实体和关系抽出来 → 建知识图谱 → 沿着图谱做多跳检索。 **问题 1 - 三元组抽取**: 把每件事拆成"头实体 → 关系 → 尾实体" → 把完整的事拆得支离破碎。质量高度依赖每条"关系"抽得准不准。 **谓词不稳定**(本来源独家观察): 同一件事,不同模型可能抽出"使用"/"基于"/"提出"/"支持"四个不同谓词 → 真实数据里差异迅速放大,一发不可收拾。 **问题 2 - LLM 每步推理**: 抽取实体 → 归一化名称 → 合并重复 → 发现社区 → 生成摘要 → **每步靠 LLM**,跑一遍又慢又贵。 **问题 3 - 增量更新困难**: 新实体/新关系不断出现,旧关系可能过时 → 持续更新是难题。 **HippoRAG 2 的核心痛点**(本来源独家): 依赖**全局 Personalized PageRank** 做图排序,在 benchmark 规模下还行,但数据量上来且每天增量增长时,**全局 PageRank 负担相当大**。 **核心比喻**: "你每次往图书馆加一本新书,就得把整个图书馆的书重新排列一遍"。 #### 范式 3: SAG (索引卡片 + SQL JOIN) —— 本来源重点 **核心创新**: 不建图谱 / 不做三元组 / 不搞全局图。 **索引卡模型**: 给每个文本 chunk 加一张"索引卡": - **一个 chunk → 一个 event**(事项摘要,保留完整语义) - **同时抽取多个 entity**(实体,11 种类型标签: 人物/组织/地点/时间/产品/话题 等) - **event 保留完整语义,entity 负责索引和连接** - 两者通过 SQL 关联查询建立**多对多连接**,共同定义一条**潜在的超边(hyperedge)** ### event-entity 超边 vs 三元组(本来源独家对比) | 维度 | 三元组 | SAG 超边 | |------|-------|---------| | **结构** | 头 → 关系 → 尾 | event ⟷ entities | | **语义保留** | 拆碎,质量依赖每条关系 | 完整事项 + 多实体桥接 | | **LLM 负担** | 抽取实体 + 关系(每条关系都要抽对) | 抽取 event(完整事项) + entity(应提尽提) | | **谓词稳定性** | 不稳定(同件事不同模型可能抽 4 个不同谓词) | 不需要关系谓词,只有事项摘要 | | **图结构** | 两点之间的一条线 | 超图中一条超边: event 同时连多个 entity | | **检索友好** | 关系准才能用 | event 独立可搜,不依赖上下文 | **为什么 SAG 比三元组更轻、效果反而更好**(本来源独家): > "RAG 到最后还是要回到原文证据,三元组太碎,容易丢上下文。而 SAG 的 event 则保留了上下文,同时提供了可检索、可扩展的结构。" **代词消歧代码细节**(本来源独家): > SAG 在抽取 event 时,**强制做代词消歧** —— 子事项必须把所有"他"/"该公司"/"这个产品"替换成完整名称。从而每个 event 就是一段**独立可搜的完整描述,不依赖上下文就能被理解**。 ### SAG 完整架构 #### 离线阶段 1. 把文档切成 chunk 2. 每个 chunk 提取一个 event + 多个 entity 3. 写进 MySQL (存储结构化关系) 4. 同时写入 Elasticsearch 的向量索引和全文索引 **细节**(本来源独家): - 每条 event-entity 关系自身也带一段描述文本 + 自己的 embedding 向量 - 同一个实体"OpenAI"在不同 event 里的角色描述完全不同: - "OpenAI,发布 GPT-5 的公司" - "OpenAI,Sam Altman 创立的公司" - 在向量空间里是**不同的点** → 实体召回更精准 #### 在线检索阶段(双路并行) 问题进来
↓
LLM 识别关键实体
↓
├── 路径 A: 结构化召回
│ 实体 → 向量索引找相近实体 → SQL JOIN 查关联 event → 找到 chunk
│
└── 路径 B: 语义召回
问题向量 → 相似度检索 → 找到语义接近的 event
↓
合并 + 查询时扩展(从已找到 event → SQL 反查 entity → 找新 event)
↓
每一轮只引入之前没出现过的新内容
↓
筛选 event 映射回原始 chunk → 回答基于原文证据
**为什么两条路**(本来源独家): > 路径 A 通过实体关联覆盖**结构化的多跳线索**,路径 B 通过语义匹配覆盖**直接相关的事项**。两者在证据召回上**高度互补**。 **消融实验数据**(本来源独家): - **纯语义路径**: Recall@5 = 56.2% - **加入少量结构化路径**: Recall@5 = **80.0%** - 提升 **+23.8 个百分点** **多跳实现**(本来源独家简洁): > 实现方式上,用的只是 SQL 里的**关系扩展**,不需要全局 PageRank,不需要让 LLM 临时推理一张图。 > **就是数据库里的 JOIN,而已。** #### 两种使用模式(本来源独家) | 模式 | 特点 | 适用场景 | |------|------|---------| | **快速模式** | 省掉 LLM 精排 | 追求速度 | | **高精度模式** | 加一步 LLM 重排序 | 追求准确率 | 两者都用 event/entity 索引和多跳检索,**核心架构一致**。 ### 两来源对比表 | 维度 | 第 1 来源 (2026-05-04) | 第 2 来源 (Zleap AI 2026-06-16) | |------|------------------------|-------------------------------| | **核心定位** | 向量库/知识图谱/本体论三种形态对比 | **RAG 新 SOTA** (SAG event-entity 超边) | | **视角** | 知识组织形态学 | **新架构** + 量化数据 | | **核心结论** | 知识图谱是答案,本体论是灵魂 | **SAG 超边 + SQL JOIN** 是新 SOTA | | **核心痛点** | 向量检索"语义检索神话"根本性脆弱 | **向量 RAG + GraphRAG 都搞不定多跳** | | **解决方案** | 混合架构(图谱+向量+本体) | **event-entity 超边 + 双路并行 + SQL JOIN** | | **生产规模** | 未量化 | **5 亿+ 生产数据** | | **量化数据** | 概念层 | **Recall@2 79.3% (+11.1 vs HippoRAG 2)** | | **技术新颖性** | 综合综述 | **SQL JOIN 替代 PageRank** / **代词消歧** / **同一实体不同角色向量化** | ### 关键独到判断(本来源独家) - **范式 3 演进**: 向量 RAG → GraphRAG → SAG 超边 —— RAG 已进入第三代 - **event-entity 超边模型**(本来源独家): 不建图谱 / 不做三元组 / 不搞全局图,用 SQL JOIN 替代 PageRank - **代词消歧代码细节**(本来源独家): 子事项强制替换"他"/"该公司" → 每个 event 独立可搜不依赖上下文 - **同一实体不同角色描述**(本来源独家架构细节): "OpenAI 发布 GPT-5"和"OpenAI Sam Altman 创立"在向量空间是不同点 → 召回更精准 - **纯语义 vs 结构化融合**(本来源独家消融数据): 纯语义 56.2% → 加结构化 80.0% (+23.8 百分点) → 双路并行必要性 - **谓词不稳定问题**(本来源独家观察): 同一件事不同模型可能抽 4 个不同谓词 → 三元组路线的根本性弱点 - **5 亿生产规模**(本来源独家): 不是 benchmark 模拟数字,是生产环境稳定运行 - **快速模式 vs 高精度模式**(本来源独家): 同一架构不同模式,速度和准确率权衡 ### 实践启示(本来源补全) - **RAG 已进入第三代**: 向量库 → GraphRAG/HippoRAG → SAG event-entity 超边 —— 跟进 SOTA 很重要 - **不要被 GraphRAG 三元组路线绑架**: 谓词不稳定 + 全局 PageRank 难增量更新是结构性弱点 - **代词消歧是 RAG 鲁棒性的关键**: 每个 chunk/event 都应该是独立可搜的完整描述 - **双路并行必要性**: 纯语义 56.2% vs 加结构化 80.0% → **结构化召回不应被语义检索取代** - **SQL JOIN 替代 PageRank**: 5 亿级数据规模下,SQL 关系扩展比全局图排序更可扩展 - **同一实体不同角色**: 向量化时考虑实体在不同上下文的不同含义,避免混淆 - **代词消歧 + 独立可搜 + 完整语义** = SAG event 的三大特征,值得借鉴到所有 RAG 系统的 chunk 设计 → [第2原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/sag-sql-retrieval-augmented-generation-zleap-ai-2026-06-16.md) ## 第 3 来源 — VibeCoder「SAG 知识引擎:用 SQL 做 RAG」(Vibe编码, 2026-06-17) > Source: [第3原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/sag-knowledge-engine-sql-rag-vibecoder-vibe-2026-06-17.md) > Publisher: Vibe编码 / Author: VibeCoder > 视角: **源码级实现 + Agent MCP 集成视角** (与第 2 来源的"架构对比与生产数据"视角互补) > 与第 2 来源的关系: 同一篇 Zleap AI SAG 论文,不同公众号(Vibe编码 vs AGI Hunt)的二次解读。VibeCoder 提供了源码行号级别的实现细节 + Agent 工具集成接口 + 消融实验数据。 第 1 来源 (2026-05-04) 讲**向量库/知识图谱/本体论**三种知识组织形态的对比。第 2 来源 (2026-06-16) 是 **Zleap AI 团队 SAG 新 SOTA RAG 概览 + 范式对比**。本来源 (2026-06-17) 是 **VibeCoder 对同一篇 SAG 论文的源码级深度解读** —— 给出具体的源文件路径、MCP 工具集定义、检索 SQL 实现、消融实验数据,补全 SAG 在 **"Agent 如何消费知识"** 与 **"工程落地细节"** 这两个视角。 ### 互补角度 7 条 1. **源码级文件路径引用** (本来源独家): `src/services/webui-service.ts:131`(上传入口)/ `src/services/ingestion-service.ts:55`(入库流程)/ `src/ingestion/chunking/markdown.ts:34`(切片)/ `src/ingestion/extract/extractor.ts:4`(抽取,含 `.slice(0, 1)` 强制融合)/ `src/services/search-service.ts:92`(多路检索主流程)/ `src/db/repositories.ts:465`(实体库 SQL)/ `src/mcp/server.ts:17`(MCP server 起点)与 `:110`(UUID 校验)/ `src/services/mcp-agent-service.ts:434`(WebUI Agent 清理工具参数)—— 比第 2 来源的"4 表结构"描述更具体到行 2. **MCP 工具集 4 个定义** (本来源独家): `sag_ingest_document`(写入)/ `sag_search`(检索+trace)/ `sag_explain_search`(调试链路)/ `sag_get_event`(回查事项)—— 提供 Agent 消费 SAG 的标准接口形态 3. **项目边界服务端控制** (本来源独家): MCP server 启动时通过 `SAG_MCP_SOURCE_ID` 绑定当前项目,`src/mcp/server.ts:110` 校验 UUID;WebUI 内置 Agent 在 `src/services/mcp-agent-service.ts:434` 删除工具参数里的 sourceId/sourceIds/projectId/projectIds—— **Agent 不需要也无法指定项目边界**,服务端单向控制,降低误用风险 4. **检索两模式 fast vs standard** (本来源独家): - `fast` 模式: 不调用 LLM 抽 query entities,直接在实体库做全文检索 + trigram 相似度 + 实体名包含关系 + 精确匹配(`src/db/repositories.ts:465`) - `standard` 模式: 让 LLM 先抽查询实体,再做实体名称 + 向量召回 5. **Trace 调试数据结构** (本来源独家): SAG trace 记录 `queryEntities`、`recalledEntities`、`expandedEventIds`、`rerankedEventIds` 与 `timings` 五个阶段,检索失败时可定位到实体抽取 / SQL 连接 / rerank 哪个环节出问题——对 Agent 系统级调试极有价值 6. **消融实验数据** (本来源独家补充): - 关闭查询时扩展: MuSiQue Recall@5 从 **80.0% → 69.4%** (降 10.6pp,共享实体扩展对多跳证据至关重要) - event hyperedge 拆三元组: Recall@5 从 **80.0% → 77.1%** (降 2.9pp,完整事项比碎三元组更稳) - 候选 event 从 100 → 200 → 500: 收益迅速变小,**直接变成 LLM token 成本与延迟** 7. **SAG 短板公开承认** (本来源独家): 实体合并很轻(字符串归一 + SQL 唯一键),别名/缩写/同义词可能分裂成多个索引点;低频桥接实体可能在扩展早期被剪枝—— 与第 2 来源的"5 亿生产规模乐观结论"形成对照,补全工程落地的真实约束 ### 与第 2 来源的关系定位 | 维度 | 第 2 来源 (尹John / AGI Hunt 2026-06-16) | 第 3 来源 (VibeCoder / Vibe编码 2026-06-17) | |------|------------------------------------------|----------------------------------------------| | **核心视角** | 论文概览 + 范式对比 + 生产数据 | **源码实现 + Agent MCP 集成** | | **量化数据** | Recall@2 79.3% / Recall@5 80.04% / 5 亿生产 | **消融: 80.0%→69.4% (无扩展) / 80.0%→77.1% (三元组)** | | **代码细节** | 4 表结构概述 | **8 个具体源文件路径 + 行号** | | **Agent 集成** | 未涉及 | **MCP 4 工具 + 项目边界服务端控制 + WebUI Agent 工具参数清理** | | **失败调试** | 未涉及 | **Trace 5 阶段结构(queryEntities/recalledEntities/...)** | | **承认的短板** | 未明确披露 | **轻量实体合并 / 低频桥接实体剪枝** | | **生产规模** | 5 亿级 | 未量化(侧重实现而非规模) | ### 关键独到判断(本来源独家) - **Agent 集成优先的工程视角**: VibeCoder 直接给出 `sag_search / sag_explain_search / sag_get_event / sag_ingest_document` 4 个 MCP 工具,Agent 集成路径清晰可参考 - **项目边界服务端收口设计** (本来源独家): `SAG_MCP_SOURCE_ID` + UUID 校验 + Agent 工具参数清理 = 三重防护,**Agent 无法越界访问其他项目知识** —— 比"让 Agent 自己传 projectId"的常见做法更安全 - **共享实体扩展是 SAG 的关键差异化** (本来源独家消融验证): Recall@5 从 80.0% 掉到 69.4% 说明 **如果去掉扩展,SAG 退化成普通向量检索**——共享实体扩展是 SAG 的灵魂,不是可选项 - **完整 event 比三元组稳** (本来源独家消融验证): 80.0% → 77.1% 的 2.9pp 差看似小,但意味着 **拆解上下文本身有信息损失**,完整事件保留更多语义信号 - **候选数量边际递减** (本来源独家消融验证): 100 → 200 → 500 收益迅速变小,**应将候选上限设为 100-200 之间**——超过即浪费 token,反而引入噪声 - **Trace 5 阶段结构** (本来源独家): queryEntities/recalledEntities/expandedEventIds/rerankedEventIds/timings —— 给所有 RAG 系统做 trace 提供了参考模板 - **源码行号是工程落地信任信号** (本来源独家隐含): VibeCoder 给的 8 个具体 `file.ts:line` 引用,意味着文章不是 PPT 级概述,而是真正读源码的产物——可信度高于"概述级二手解读" ### 实践启示(本来源补全) - **Agent 集成 RAG 应优先 MCP 化**: 4 个工具(sag_search / sag_explain_search / sag_get_event / sag_ingest_document)形态清晰,值得所有 RAG 系统参考 - **项目边界应服务端单向控制**: 不要让 Agent 传 projectId,服务端用 `SOURCE_ID` 环境变量 + UUID 校验 + Agent 工具参数清理三重防护 - **RAG 系统都应实现 5 阶段 trace**: queryEntities / recalledEntities / expandedEventIds / rerankedEventIds / timings,失败时可定位环节 - **候选上限设 100-200 之间**: 超过即边际递减,反而引入噪声 + 浪费 token - **不要拆解完整事件**: 拆成三元组会损失 2.9pp 的 Recall@5,完整 event 保留更多上下文 - **共享实体扩展是核心差异化**: 去掉共享实体扩展 Recall@5 暴跌 10.6pp 到 69.4%,本质退化成普通向量检索 - **SAG 的代码结构可参考**: 4 张表 + 1 个 MCP server + 1 个 webui-service + 1 个 ingestion-service + 1 个 search-service + 1 个 mcp-agent-service,职责清晰可拆分 → [第3原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/sag-knowledge-engine-sql-rag-vibecoder-vibe-2026-06-17.md) ## 第 4 来源 — AWS HippoRAG Implementation (Amazon Bedrock + Neptune + Titan, 2026-07-01) v×c=7×8=56, stars=4。AWS 官方博客提供的 HippoRAG 部署指南,使用 Bedrock (LLM)、Neptune (图数据库)、Neptune Analytics (Personalized PageRank)、Titan Embeddings (向量化) 全套 AWS 原生服务实现多跳 RAG。 ### 互补角度 (vs 第 1-3 来源的 SAG 侧重点) 1. **AWS 原生实现** — 与第 2/3 来源的 SAG (MySQL+Elasticsearch+event hyperedge 架构) 形成对照,HippoRAG 走 Neptune 图数据库 + PPR 图排序路线,是经典的 GraphRAG 工程化路径。 2. **Personalized PageRank 生产化** — 实现细节:Neptune Analytics 执行 PPR 替代全局图遍历,用 LLM 提取三元组建 KG、Titan Embeddings 做初始召回、PPR 重排。对比 SAG 用 SQL JOIN 替代 PageRank 的设计选择。 3. **HotpotQA 全流程流水线** — 数据准备 → 三元组提取 (Bedrock) → Neptune bulk-load CSV → S3 上传 → Neptune 批量加载 → 查询推理,完整的生产级数据流水线模式。 4. **Titan Embeddings 集成** — 具体使用 Amazon Titan Embedding G1 模型,与 Bedrock 同生态,为 HippoRAG 的"初始检索 → PPR 重排序"双阶段检索提供向量召回基础。 ### 与第 2/3 来源的关系定位 | 维度 | SAG (第 2/3 来源) | HippoRAG on AWS (本来源) | |------|-------------------|--------------------------| | **图实现** | MySQL + ES event hyperedge | Neptune + Personalized PageRank | | **多跳推理** | SQL JOIN 多跳 | PPR 图排序多跳 | | **检索方式** | 双路并行 (语义 + 结构化) | 向量检索 → PPR 重排序 | | **可增量更新** | 是 (event 粒度增删) | 受限 (全局 PPR 重计算) | | **生产部署** | 5 亿生产数据 | AWS 托管服务 (Bedrock/Neptune) | | **开源代码** | 项目内模式表结构 | 完整 Jupyter notebook | HippoRAG on AWS 提供了一个**经典的 GraphRAG 生产实现模板**,与 SAG 的 event hyperedge 路线形成对照,两者在多跳 RAG 的图实现和推理方式上有本质区别。 → [第4原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/hipporag-neurobiologically-inspired-rag-using-amazon-bedrock.md) --- ## Ch10.011 Nvidia Multimodal RAG Knowledge Systems > 📊 Level ⭐⭐ | 22.0KB | `entities/nvidia-multimodal-rag-knowledge-systems.md` # Build AI-Ready Knowledge Systems Using 5 Essential Multimodal RAG Capabilities | NVIDIA Technical Blog Build AI-Ready Knowledge Systems Using 5 Essential Multimodal RAG Capabilities | NVIDIA Technical Blog DEVELOPER Home Blog Forums Docs Downloads Training Join Technical Blog Subscribe Related Resources Agentic AI / Generative AI English Build AI-Ready Knowledge Systems Using 5 Essential Multimodal RAG Capabilities Feb 17, 2026 By Shruthii Sathyanarayanan , Sumit Bhattacharya , Punit Kumar , Pranjal Doshi and Nikhil Kulkarni Like Discuss (1) L T F R E Enterprise data is inherently complex: real-world documents are multimodal, spanning text, tables, charts and graphs, images, diagrams, scanned pages, forms, and embedded metadata. Financial reports carry critical insights in tables, engineering manuals rely on diagrams, and legal documents often include annotated or scanned content. Retrieval-augmented generation (RAG) was created to ground LLMs in trusted enterprise knowledge retrieving relevant source data at query time to reduce hallucinations and improve accuracy. But if a RAG system processes only surrounding text, it misses key signals embedded in tables, charts, and diagrams resulting in incomplete or incorrect answers. An intelligent agent is only as good as the data foundation it s built on. Modern RAG must therefore be inherently multimodal able to understand both visual and textual context to achieve enterprise-grade accuracy. The NVIDIA Enterprise RAG Blueprint is built for this, providing a modular reference architecture that connects unstructured enterprise data to the intelligent systems built on top of it. The blueprint also serves as a foundational layer for the NVIDIA AI Data Platform , helping to bridge the traditional gap between compute and data. By enabling retrieval and reasoning closer to the data layer, it preserves governance, reduces operational friction, and makes enterprise knowledge immediately usable by intelligent systems. The result is a modern AI data stack storage that can retrieve, enrich, and reason alongside your models. While the Enterprise RAG Blueprint provides many configurable options, this post highlights the following five key configurations that most directly improve accuracy and contextual relevance across enterprise use cases: Baseline multimodal RAG pipeline Reasoning Query decomposition Filtering metadata for faster and precise retrieval Visual reasoning for multimodal data The post also explains how the blueprint can be embedded into AI data platforms to transform traditional repositories into AI-ready knowledge systems. Accuracy metrics in this blog are measured using the RAGAS framework , using well-known public datasets. Learn more about evaluating your NVIDIA RAG Blueprint system . 1. Document ingestion and understanding Before an agent can deliver insights, it must be perfectly grounded in your data. This foundational configuration focuses on intelligent document ingestion and core RAG functionality. The Enterprise RAG Blueprint uses NVIDIA NeMo Retriever to extract multimodal enterprise content text, tables, charts and graphs, and infographics then embeds that content into text for indexing in a vector database. At query time, the blueprint runs semantic retrieval, reranking, and Nemotron LLM to generate a grounded answer. To maximize performance, this baseline intentionally avoids image captioning and heavy reasoning, making it the ideal starting point for production deployments. Deploy this baseline on Docker . Benefits of document ingestion and understanding This foundational configuration is the blueprint s highest-efficiency pipeline, optimized for accuracy and throughput while keeping GPU cost and time to first token (TTFT) low. This configuration establishes your baseline performance for retrieval quality and LLM grounding. Figure 1. RAG pipeline Table 1 summarizes the overall impact across a few datasets. Accuracy (v2.3 Default) MM = Multimodal, TO = Text-Only Dataset Type Accuracy RAG Battle MM 0.809 KG RAG MM 0.565 FinanceBench MM 0.633 BO767 MM 0.910 HotpotQA TO 0.671 Google Frames MM 0.509 Table 1. Accuracy impact of baseline configuration (higher is better) 2. Reasoning When you turn on reasoning in the RAG blueprint, you enable the LLM to interpret the retrieved evidence, and synthesize logically grounded answers. This is the easiest change to get an accuracy boost for many applications. Enable reasoning for the NVIDIA Enterprise RAG Blueprint . Table 2 summarizes the overall impact across several sample datasets. Accuracy (v2.3 Default) plus Reasoning MM = Multimodal, TO = Text-Only Dataset Type Reasoning on Default RAG Battle MM 0.85 0.809 KG RAG MM 0.58 0.565 FinanceBench MM 0.69 0.633 BO767 MM 0.88 0.91 Table 2. Accuracy impact of enabling reasoning versus baseline configuration (higher is better) Benefits of reasoning For any use case involving mathematical operations or complex data comparison, a typical simple similarity or hybrid search will not suffice. Reasoning is required to correct errors and ensure precise contextual understanding. Accuracy improvements across datasets averaged ~5%, with several cases demonstrating dramatic reasoning-driven corrections. Examples In the FinanceBench dataset, the baseline configuration incorrectly computed the Adobe FY2017 operating cash flow ratio as 2.91. After enabling reasoning, the model produced the correct answer, 0.83. In addition, the Ragbattle dataset demonstrates the accuracy improvement from enabling VLM. 3. Query decomposition Answering complex user questions often requires pulling facts from multiple places in the data foundation. Query decomposition breaks a single question into smaller subqueries, retrieves evidence for each, and recombines the results into a complete, grounded response. Turn on query decomposition for the NVIDIA Enterprise RAG Blueprint . Figure 2. Response accuracy before and after query decomposition Benefits of query decomposition Query decomposition significantly improves accuracy for multihop and context-rich questions that span multiple paragraphs or documents. It does add extra LLM calls (increasing latency and cost), but the accuracy gains are often worth it for mission-critical enterprise use cases. Query decomposition can also be paired with reasoning for an additional boost when needed. Example As NVIDIA AI Data platform partners evolve to offer more relevant and accurate retrieval, this feature can either include some level of query processing as part of the data platform or can be left to the agent. Learn more about how query decomposition can be an approach in some use cases . Table 3 shows the overall impact across a few datasets. Accuracy (v2.3 Default) plus Query Decomposition MM = Multimodal, TO = Text-Only Dataset Type Query decomposition Default RAG Battle MM 0.854 0.809 FinanceBench MM 0.631 0.633 BO767 MM 0.885 0.91 HotpotQA TO 0.725 0.671 Google Frames MM 0.6 0.5094 Table 3. Accuracy impact of query decomposition versus baseline configuration (higher is better) 4. Filtering metadata for faster and precise retrieval Metadata, such as author, date, category, and security tags, has always been integral to enterprise data. In RAG pipelines, metadata filters can be leveraged to narrow the search space and align retrieved content with the right context, significantly improving retrieval precision and speed. The RAG blueprint supports custom metadata ingestion and automatic query generation based on that data. To leverage your custom metadata, see Advanced Metadata Filtering with Natural Language Generation . To learn more about what s possible with this feature set, check out the example notebook on the NVIDIA-AI-Blueprints/rag GitHub repo. Benefits of metadata filtering Metadata filtering narrows the search space for faster retrieval and improves precision by aligning retrieved content with context. This allows developers to leverage metadata without manual filter logic to achieve higher throughput and contextual relevance. When metadata filtering capabilities are embedded directly into AI data platforms, it can make your storage smarter, leading to faster retrieval and lower latency. Example To provide an example, consider two documents that are ingested with the following metadata: custom_metadata = [ { "filename": "ai_guide.pdf", "metadata": { "category": "AI", "priority": 8, "rating": 4.5, "tags": ["machine-learning", "neural-networks"], "created_date": "2024-01-15T10:30:00" } }, { "filename": "engineering_manual.pdf", "metadata": { "category": "engineering", "priority": 5, "rating": 3.8, "tags": ["hardware", "design"], "created_date": "2023-12-20T14:00:00" } } When using metadata with dynamic filter expression, a query such as, “Show me high-rated AI documents with machine learning tags created after January 2024” will translate to one that automatically generates a filtering expression such as: filter_expression = `content_metadata["category"] == "AI" and content_metadata["rating"] >= 4.0 and array_contains(content_metadata["tags"], "machine-learning") and content_metadata["created_date"] >= "2024-01-01 ` With metadata filtering enabled, the system retrieved 10 focused citations from one document, ai_guide.pdf , achieving 100% precision on the target domain while reducing search space by 50%. 5. Visual reasoning for multimodal data Enterprise data is visually rich. Where traditional text-only embeddings fall short, vision language models (VLMs) such as NVIDIA Nemotron Nano 2 VL (12B) introduce visual reasoning into the pipeline. Learn more about how to leverage a VLM for generation in the RAG Blueprint. Figure 3. Before and after leveraging a VLM for generation Benefits of visual reasoning Visual reasoning is crucial for handling real-world enterprise documents. Integrating a VLM in the generation pathway enables the RAG system to interpret images, charts, and infographics, making it possible to accurately answer queries where the information lies in a structured visual element rather than just the surrounding text. Example A significant accuracy improvement was observed when a VLM was enabled for the Ragbattle dataset in the RAG Blueprint, especially when the answer was in a visual element. Note that enabling VLM inference can increase response latency from additional image processing. Consider this tradeoff between accuracy and speed based on your requirements. Learn more about the accuracy improvements with VLM for the Ragbattle dataset. Transforming enterprise storage into an active knowledge system The Enterprise RAG Blueprint demonstrates how the progressive adoption of these five capabilities from reasoning and metadata-driven retrieval to multimodal understanding directly enhances the accuracy and groundedness of your intelligent agents. Each capability offers a unique balance between latency, token cost, and contextual precision, providing a flexible, tunable framework that can be adopted to various enterprise use cases. This accelerates the evolution of the data foundation itself. The NVIDIA AI Data Platform transforms enterprise data into AI-searchable knowledge. As NVIDIA partners evolve their storage offerings, this blueprint serves as a reference for delivering embedded RAG capabilities that leverage metadata to enforce permissions, track changes, and provide highly accurate retrieval directly at the storage layer. NVIDIA storage partners are building AI data platforms based on the NVIDIA reference design that are transforming enterprise storage from a passive repository to become an active intelligent system in the AI workflow. The result is a next-generation enterprise data infrastructure: faster, smarter, and purpose-built for the age of generative AI. What s new with the NVIDIA Enterprise RAG Blueprint The latest release of the NVIDIA EnterpriseRAG Blueprint deepens its focus on serving agentic workflows. It introduces first-class document-level summarization with both shallow and deep strategies, enabling agents to quickly assess relevance, narrow search space, and balance accuracy with latency. A new data catalog improves discoverability and governance across large corpora, while upgrades to the best-in-class Nemotron RAG models further enhance retrieval quality, reasoning, and generation performance making RAG a more efficient, agent-ready foundation for enterprise-scale knowledge systems. Get started with enterprise-grade RAG Ready to integrate these five capabilities into your RAG use cases? Access the modular code, documentation, and evaluation notebooks for free within the NVIDIA Enterprise RAG Blueprint . Make your enterprise data AI-ready and transform your production data into an intelligent knowledge system with embedded RAG capabilities with NVIDIA AI Data Platform. Contact an NVIDIA AI storage partner to get started with your own NVIDIA-powered AI data platform. Discuss (1) Like Tags Agentic AI / Generative AI | Data Center / Cloud | General | Blueprint | Nemotron | Intermediate Technical | Best practice | AI Agent | AI Data Platform | AI-Ready Data | featured | LLMs | Retrieval Augmented Generation (RAG) About the Authors About Shruthii Sathyanarayanan Shruthii Sathyanarayanan is a product marketing manager in the NVIDIA Enterprise Computing group with a focus on enterprise AI and virtualization. Shruthii holds a bachelor s degree in Computer Engineering and Business from the University of Illinois at Urbana-Champaign and has previously held roles in software development and product management. View all posts by Shruthii Sathyanarayanan About Sumit Bhattacharya Sumit Bhattacharya is a senior engineering manager at NVIDIA, working on AI blueprints and conversational AI. His primary area of focus is building scalable, low-latency solutions for Enterprise RAG, data flywheels, and voice agents. He also has extensive experience of working on NLP, dialog systems, and voice assistants. He holds a master s degree in Electrical Engineering from the Indian Institute of Technology, Kharagpur, and has over 18 years of industry experience. View all posts by Sumit Bhattacharya About Punit Kumar Punit Kumar is a senior system software engineer at NVIDIA with a focus on the RAG Blueprint, production RAG systems, and features that improve accuracy and performance. Punit holds a master s degree in Data Science and Engineering from BITS Pilani and a BTech in Computer Science from SKIT Jaipur and has previously held roles in R&D in AI engineering and in data engineering. View all posts by Punit Kumar About Pranjal Doshi Pranjal Doshi is a software engineer at NVIDIA, specializing in retrieval-augmented generation (RAG) and the productionization of large language models. Pranjal holds a master s degree in Computer Science and Engineering from the Indian Institute of Technology (IIT) Kharagpur and focuses on bridging the gap between AI research and scalable, real-world applications. View all posts by Pranjal Doshi About Nikhil Kulkarni Nikhil Kulkarni is a software engineer at NVIDIA specializing in the productization of the RAG Blueprint, with an emphasis on accuracy improvements, performance optimizations, and deployment. Nikhil holds a bachelor s degree in Computer Science and focuses on translating AI models into robust, enterprise-grade architectures. He has previously worked on building speech-based AI agents at NVIDIA. View all posts by Nikhil Kulkarni Comments Related posts Chat With Your Enterprise Data Through Open-Source AI-Q NVIDIA Blueprint Chat With Your Enterprise Data Through Open-Source AI-Q NVIDIA Blueprint NVIDIA NeMo Retriever Delivers Accurate Multimodal PDF Data Extraction 15x Faster NVIDIA NeMo Retriever Delivers Accurate Multimodal PDF Data Extraction 15x Faster Insights, Techniques, and Evaluation for LLM-Driven Knowledge Graphs Insights, Techniques, and Evaluation for LLM-Driven Knowledge Graphs Translate Your Enterprise Data into Actionable Insights with NVIDIA NeMo Retriever Translate Your Enterprise Data into Actionable Insights with NVIDIA NeMo Retriever Scaling Enterprise RAG with Accelerated Ethernet Networking and Networked Storage Scaling Enterprise RAG with Accelerated Ethernet Networking and Networked Storage Related posts Building NVIDIA Nemotron 3 Agents for Reasoning, Multimodal RAG, Voice, and Safety Building NVIDIA Nemotron 3 Agents for Reasoning, Multimodal RAG, Voice, and Safety How to Build Deep Agents for Enterprise Search with NVIDIA AI-Q and LangChain How to Build Deep Agents for Enterprise Search with NVIDIA AI-Q and LangChain Build Next-Gen Physical AI with Edge First LLMs for Autonomous Vehicles and Robotics Build Next-Gen Physical AI with Edge First LLMs for Autonomous Vehicles and Robotics Building Telco Reasoning Models for Autonomous Networks with NVIDIA NeMo Building Telco Reasoning Models for Autonomous Networks with NVIDIA NeMo How to Build a Document Processing Pipeline for RAG with Nemotron How to Build a Document Processing Pipeline for RAG with Nemotron L T F R E ## 深度分析 **1. 企业数据天然是多模态的,单语文本 RAG 存在结构性缺陷** 企业文档涵盖文本、表格、图表、图片、图表、扫描页和表单,关键洞察往往嵌入在视觉元素而非周围文本中。传统仅处理文本的 RAG 系统会遗漏表格中的关键数据、图表中的趋势和表单中的结构化信息,导致不完整或错误的答案。多模态 RAG 是实现企业级准确率的必要条件而非可选项。 **2. NVIDIA Enterprise RAG Blueprint 的模块化设计降低了多模态落地门槛** NVIDIA Enterprise RAG Blueprint 采用模块化参考架构,将文档摄取与理解、推理、查询分解、元数据过滤和视觉推理作为可独立配置的能力。这种设计使企业能够渐进式采用——从基础管道开始,逐步叠加推理(+5% 平均准确率提升)、查询分解(元数据+50% 搜索空间缩减)、VLM 视觉推理(视觉元素问答能力)等能力。 **3. 推理能力对 RAG 准确率提升最显著且实现成本最低** 启用推理后,RAG 准确率平均提升约 5%。在 FinanceBench 数据集上,基础配置错误计算 Adobe FY2017 经营现金流比率(2.91 vs 正确值 0.83),启用推理后自动修正。推理能力对于涉及数学运算或复杂数据对比的场景尤为关键,是大多数应用最容易获得的准确率提升。 **4. 查询分解和元数据过滤是精准检索的重要支柱** 查询分解通过将复杂多跳问题分解为子查询,从多个文档检索证据并重组答案,显著提升跨段落/多文档问题的准确率。元数据过滤通过安全标签、日期、类别等属性缩小搜索空间(减少 50% 搜索范围),同时聚焦检索内容与正确上下文,是企业知识管理场景的核心能力。 **5. 视觉推理能力解锁企业文档中图像和图表的问答能力** NVIDIA Nemotron Nano 2 VL (12B) VLM 将视觉推理引入 RAG 管道,使系统能够解释图像、图表和信息图,在视觉元素中包含答案的数据集(如 Ragbattle)实现显著准确率提升。存储层嵌入 RAG 能力(NVIDIA AI Data Platform)使数据本身成为可推理的智能知识系统,实现治理保留、运营摩擦降低和权限直接执行。 ## 实践启示 1. **多模态 RAG 是企业知识管理的必选项**:在选型时,文本+表格+图表的联合摄取和检索能力应作为企业 RAG 的基础要求,而非增强功能。 2. **采用分阶段路径部署多模态 RAG**:从基础管道开始 → 启用推理处理数学/复杂对比 → 添加查询分解支持多跳问题 → 叠加元数据过滤和视觉推理 VLM,每阶段交付可衡量的准确率提升。 3. **金融/法律等高精度场景优先启用推理能力**:推理对涉及数值计算和多步逻辑的查询准确率提升最为显著,应在第一阶段就启用而非留到后期。 4. **元数据驱动检索应在数据摄取阶段同步设计**:在设计企业 RAG 时,从一开始就规划好作者、日期、类别、安全标签等元数据的完整摄取,以支撑后续精准过滤。 5. **推进数据基础设施现代化为 AI 原生**:存储层嵌入 RAG 能力(向量检索+语义理解)是企业数据基础设施的未来方向,应纳入 AI 转型路线图。 ## 相关实体 - [Nvidia Nemotron 3 Agents Rag Voice Safety](https://github.com/QianJinGuo/wiki/blob/main/entities/nvidia-nemotron-3-agents-rag-voice-safety.md) - [Nvidia Extreme Co Design Agentic Systems](https://github.com/QianJinGuo/wiki/blob/main/entities/nvidia-extreme-co-design-agentic-systems.md) - [Nvidia Agentic Ai Subsurface Engineering](https://github.com/QianJinGuo/wiki/blob/main/entities/nvidia-agentic-ai-subsurface-engineering.md) - [Nvidia Secure Local Agent Nemoclaw Openclaw](https://github.com/QianJinGuo/wiki/blob/main/entities/nvidia-secure-local-agent-nemoclaw-openclaw.md) - [Nvidia Telco Reasoning Models Nemo](https://github.com/QianJinGuo/wiki/blob/main/entities/nvidia-telco-reasoning-models-nemo.md) - [MOC](https://github.com/QianJinGuo/wiki/blob/main/moc/nvidia-gpu-acceleration.md) → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/nvidia-multimodal-rag-knowledge-systems.md) --- ## Ch10.012 RAG 分块优化 2025:策略选择与工程实践 > 📊 Level ⭐⭐ | 17.8KB | `entities/rag-chunking-optimization-2025.md` ## 相关实体 - [elasticpp重塑elasticsearch查询性能的c内核引擎](https://github.com/QianJinGuo/wiki/blob/main/entities/elasticpp重塑elasticsearch查询性能的c内核引擎.md) → [原文存档:分块向量化召回重排](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/rag-chunking-vectorization-rerank-distillation.md) → [原文存档:全链路技术详解](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/rag-full-pipeline-taobao.md) → [原文存档:流水线](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/rag-chunk-embedding-rerank-pipeline.md) ## 核心命题 RAG 系统的效果瓶颈不在模型,而在**入库质量**。同样的 Embedding 模型和 Rerank 策略,文档切得好与切得差,召回质量可能相差 40% 以上。2025 年的行业共识是:分块策略的选择与迭代,是 RAG 工程化中最关键也最经验驱动的环节。 ## 分块优化的核心矛盾 分块面临经典两难:**太大则语义模糊,太小则上下文断裂**。这个矛盾没有完美解法,只有业务场景下的最优解。 当一个 chunk 包含多个主题(退货规则、换货规则、发票规则、运费规则),向量化后的语义表达会变得模糊——它试图同时表示很多件事,结果哪件事都表示不精准。反之,切得太小(如只保留"超过 7 天后"),单独看没有任何意义,模型无法判断不能退还是可以换还是要人工审核。 ## 2025 年主流分块策略 ### 1. 固定长度分块 最简单粗暴,按 token 数切分(如每 500 tokens)。优点是实现简单、速度快,适合快速验证;缺点是可能切断句子、表格、标题与正文的语义关联。不适合严肃生产场景。 ### 2. 语义边界分块(递归分块) 优先按自然语言边界切(段落→句子→空格→字符),层层降级,尽量保留语义完整性。这比固定长度更合理,是大多数知识库的起步选择。 ### 3. 结构感知分块 按文档原生结构切分(Markdown 标题、代码块、表格、FAQ 问答对)。适合技术文档、产品手册、制度文档。FAQ 文档最理想的切法是按完整 Q&A 切,而非按 token 数切——一个 Q&A 天然是一个完整知识单元。 ### 4. Meta-Chunking(2025 年前沿) 基于 PPL(困惑度)的智能分块方法,用轻量模型(如 Qwen2)计算每个句子相对于前文的 PPL。在 PPL 局部极大值处切分——这些点对应逻辑断层的语义边界。切分后再用 LLM 进行语义补全和摘要生成,弥补上下文断裂。 **核心洞察**:语义边界不来自标点,而来自语义连贯性的突变。PPL 把语言模型在每个句子处的"惊讶度"量化出来,当模型突然对下一句感到意外时,PPL 曲线出现尖峰,对应逻辑断层。这个方法比固定切分更接近"语义感知",但比纯 LLM 切分更轻量。 ### 5. 智能语义分块 用 Embedding 计算相邻句子的语义相似度,当语义突然变化时在这里切分;或直接让大模型判断哪些内容应该放在同一个 chunk。效果最好但成本最高,适合高价值知识库、文档复杂、对准确率要求高的场景。 ## 父子分块:检索与生成的解耦设计 父子分块解决 RAG 链路最核心的矛盾:**检索需要小块,生成需要大块**。 - **小块**:语义更聚焦,更容易精准匹配用户问题(如直接命中"SKU-20240315 属于定制类商品,不支持无理由退货") - **大块**:包含完整上下文,让模型知道规则属于哪个政策、是否有适用范围、是否有时间限制 **工程思路**:入库时同时切成大块和小块,检索时用小块匹配,命中后返回对应的大块给模型。本质上是将"检索精度"和"回答完整性"这两个目标解耦,分别优化。非常适合长文档、制度文档、产品手册。 ## Dify 分块参数配置 | 参数 | 作用 | 建议 | |------|------|------| | 分段标识符 | 决定在哪里切 | 按业务语义自定义(FAQ 用"Q:"、政策用"第 X 条") | | 分段最大长度 | 控制每块大小 | FAQ 200-500 tokens,技术文档 500-1200 tokens | | 分段重叠长度 | 防止边界切断 | 默认 50 token,建议最大长度的 10%-25% | ## 向量化与索引模式 ### 高质量模式 vs 经济模式 - **高质量模式**:调用 Embedding 模型将 chunk 转换成向量,语义相近的文本向量距离更近。文档和查询**必须使用同一个 Embedding 模型**,否则检索结果会非常不稳定。 - **经济模式**:用关键词索引(如 Jieba 分词),成本低但只能做字面匹配。适合成本极度敏感、查询以精确关键词为主的场景。 ### 索引是源头决策 索引模式是源头决策,不是后面调 Top K、调 Score 阈值就能补回来的。如果一开始选了经济模式,后面问为什么同义词匹配不上、为什么语义召回效果不好,就无法回答了——因为系统从一开始就没有把知识放进语义空间里。 ## 查询优化:HyDE 与 Doc2Query ### HyDE(假设文档嵌入) 先让 LLM 生成"假答案",用假答案的向量去匹配真实文档。将"问题-文档匹配"转化为"文档-文档匹配",解决短问题与长文档之间的向量空间不对称问题。 **本质**:短 query 与长文档在 embedding 空间中分布天然不同——query 通常是口语化提问,文档是结构化陈述。HyDE 通过生成"假答案"把 query 投射到"文档分布空间",再做文档-文档匹配。 ### Doc2Query(反向 HyDE) 对每个 chunk 预生成可能的 question,建立 question→chunk 索引。可离线处理,不影响实时 RT。核心价值:用"提问 vs 提问"替代"提问 vs 陈述"。 **适用场景**:Doc2Query 离线预处理降低 RT,适合 query 模式稳定的客服场景;HyDE 在线处理复杂 query,适合 query 多变且意图模糊的探索性场景。两者可以并存于同一系统。 ## 检索与重排 ### 混合检索是默认选择 向量检索擅长语义相似,全文检索对 SKU、订单号、合同编号、错误码等精确信息更稳定。在大多数企业知识库场景里,混合检索(向量+全文)是最稳妥的起步方案。用户问题通常不是纯语义也不是纯关键词,两者混在一起是常态。 ### Rerank:召回是海选,重排是复试 召回追求快且不漏,重排将候选片段按与用户问题的真实相关性重新排序。Cross-Encoder 将 Query 和候选文档拼接后共同编码,通过交叉注意力捕捉细微匹配关系,解决多条件联合约束(如"2000以下+续航好+华为")的精确排序。 **建议场景**:客服、售后、法务、医疗、金融等高风险场景尽量开 Rerank;内部知识助手等低风险场景可以先关闭,把链路跑通再说。 ## TopK 与 Score 阈值配置 - **TopK**:不是越大越好。chunk 大则 TopK 小;chunk 小则 TopK 可适当大。用父子分块返回父块时,TopK 不能太大,否则上下文会爆。 - **Score 阈值**:防止硬凑答案。知识库里没有依据时,不要强行回答。宁可保守——"当前知识库中没有找到足够依据,建议转人工处理"——也不要让模型硬编。 ## 调优顺序 合理的调优顺序:**文档质量 → 分块策略 → 索引模式 → 检索方式 → 重排 → TopK/Score 阈值 → Prompt 约束**。前面环节没做好,后面再怎么调都只是修修补补。80% 的 RAG 项目时间实际上应该花在数据处理上,而非模型调参上。 ## 2025 年工程实践清单 1. **文档格式优先级**:Markdown > 纯文本 > Word > PDF > Excel > PPT > 图片/扫描件 2. **数据清洗是核心**:不要把未经整理的资料一股脑上传,页眉页脚、水印、版权声明、过期条款都需要清理 3. **分块需要迭代验证**:没有最优分块策略,只有最适合业务场景的分块策略。从递归分块或结构化分块开始,通过实际召回效果迭代调整 4. **父子分块是复杂场景利器**:文档较长、规则之间有关联时,优先考虑父子分块 5. **混合检索是默认起步**:不要一开始就用纯语义或纯关键词 6. **Rerank 按场景开启**:高风险场景开启,低风险场景先跑通链路 7. **建立可观测性**:持续收集用户问题日志、召回命中率、回答准确率等指标,RAG 项目需要数据飞轮 ## Related - [RAG 深度解析:分块向量化召回重排](https://github.com/QianJinGuo/wiki/blob/main/entities/rag-chunking-vectorization-rerank-distillation.md) - [RAG 全链路技术详解](https://github.com/QianJinGuo/wiki/blob/main/entities/rag-full-pipeline-taobao.md) - [RAG 分块向量化召回重排流水线](https://github.com/QianJinGuo/wiki/blob/main/entities/rag-chunk-embedding-rerank-pipeline.md) - [向量库 vs 知识图谱:RAG 的进阶路径](https://github.com/QianJinGuo/wiki/blob/main/entities/rag-vector-knowledge-graph-ontology.md) - [AI Agent 记忆系统工作原理](https://github.com/QianJinGuo/wiki/blob/main/entities/how-ai-agent-memory-works.md) ## 深度分析 **入库质量决定 RAG 上限的根本原因**:RAG 系统的本质是在"知识的语义空间"中做匹配。当文档被切分和向量化后,其语义表达就被固定了——无论后续用多么精巧的检索算法或多么强大的生成模型,都无法超越入库时损失的信息。向量检索的本质是在高维语义空间中寻找最近邻,如果入库时 chunk 的语义就是模糊的、多主题的,那么检索回来的"最近邻"必然也是语义模糊的。生成模型在这样的上下文上,无论能力多强,都无法凭空恢复丢失的语义细节。这解释了为什么"80% 的时间应该花在数据处理上"——模型调优是在天花板下绣花,数据处理是在提升天花板本身。 **PPL 语义分块的理论意义:从标点边界到认知边界**:传统分块依赖标点符号(句号、换行符)定义切分点,但标点只反映口语节奏,不反映语义结构。PPL(困惑度)分块的核心洞察是:语义连贯性可以被量化——当语言模型对下一个句子的预测突然变得不确定时(即 PPL 出现尖峰),说明前一句和当前句之间存在逻辑断层。这个方法将语言模型的"认知不确定性"用于边界检测,本质上是在用模型的内在表征做语义分割,比依赖表面特征的分块方法更接近人类对"完整语义单元"的判断。 **父子分块的工程哲学:解耦而非妥协**:检索精度与生成完整性之间的矛盾,本质上是两个不同目标的冲突——检索需要细粒度(越小越精准),生成需要粗粒度(越大越完整)。父子分块的工程哲学是拒绝在这两个目标之间做妥协,而是通过引入双层表示将两者解耦:小块负责精准匹配,大块负责完整上下文。这种"解耦而非权衡"的思路在系统设计中具有普遍意义——当两个需求看似矛盾时,往往是因为它们混在了同一个抽象层次中,通过引入中间层将矛盾分流,是比硬撑着做折中更优的架构选择。 **HyDE 与 Doc2Query 的深层对称性**:HyDE(用假答案匹配文档)和 Doc2Query(为文档预生成问题)是同一思想的不同方向——前者从 query 侧出发生成"文档假样本",后者从 document 侧出发生成"query 假样本",两者都在解决"提问方式与陈述方式不匹配"的核心问题。HyDE 的优势是处理开放性、模糊性 query;Doc2Query 的优势是处理结构稳定、可枚举的文档知识。两者并存的架构启示是:真实的 RAG 系统往往需要在 query 侧和 document 侧同时做增强,而非只优化其中一端。 **调优顺序的因果链:前序决策对后序的不可逆影响**:文档质量、分块策略、索引模式、检索方式、重排、TopK/Score 阈值这个调优顺序,本质上是一条信息损失链——每一个环节的决策都会在其后续环节中产生放大效应。如果在文档质量环节引入噪声,后面的分块会将噪声固化为语义模糊的 chunk;索引模式选错(选了经济模式),后续无论怎么调 TopK 和 Score 阈值都无法把知识重新放入语义空间。这条因果链说明:早期决策的错误成本远大于后期决策,且后期决策几乎无法弥补早期决策的损失。正确的工程实践应该是"前期慢后期快"——在文档处理和分块策略上多花时间验证,在参数调优上快速迭代。 ## 实践启示 1. **将文档预处理提升为独立的数据工程项目**:不要把"数据清洗"当作上传前的手动步骤,而应该建立一套自动化的文档质量 pipeline,包括:格式标准化(优先转 Markdown)、结构化解析(提取标题层级、表格、代码块)、去噪(移除页眉页脚、水印、版权声明)、版本校验(检测过期条款和内容冲突)。在正式知识库建设之前,这个 pipeline 的质量直接决定 RAG 系统的效果上限。 2. **以业务语义边界作为分块优先策略,而非 token 数量**:在选择分块策略时,首先分析业务知识的最基本单元是什么——FAQ 场景是 Q&A 对,政策文档是条款,客服话术是场景,处理流程是步骤。如果业务语义单元与 token 限制不匹配,应该优先保证语义完整性,token 限制作为硬约束在必要时通过重叠切分来弥补,而非反过来让 token 限制主导切分。 3. **父子分块是复杂制度文档的默认选择**:当知识库涉及退货政策、优惠规则、产品说明等存在大量"适用条件"和"例外情况"的文档时,默认采用父子分块架构。具体配置:子块(小块)用于精准匹配,大小控制在 100-300 tokens;父块(大块)包含完整的上下文上下文,大小控制在 500-1000 tokens;检索时用子块匹配,返回时用父块上下文。 4. **索引模式的决策要在系统设计阶段确定,后期几乎不可更改**:在系统设计阶段就要明确:应用场景是偏语义(如产品咨询、概念解释)还是偏精确(如 SKU 查询、订单号检索)。前者必须选高质量模式(向量索引),后者可以选择经济模式(关键词索引)。一旦选了经济模式,后续即使切换到向量索引,已入库的 chunk 也没有语义向量,需要重建索引——这是一个巨大的工程成本。 5. **建立 RAG 系统的可观测性基础设施,从第一天开始**:RAG 系统的优化本质上是数据驱动的——需要持续监控:用户 query 的召回率(是否找到了相关 chunk)、Score 阈值的过滤率(有多少候选被过滤)、最终回答的引用完整率(回答是否真的有引用依据)。建议从第一天就接入 Ragas 或类似评估框架,建立自动化评测管道,形成"用户 query → 召回分析 → 分块迭代"的闭环数据飞轮。 --- **补充阅读**: - - - - - --- ## Ch10.013 Manufacturing Intelligence with Amazon Nova Multimodal Embeddings > 📊 Level ⭐⭐ | 17.0KB | `entities/amazon-nova-manufacturing-intelligence.md` ## 为什么制造业需要多模态检索 制造业文档的一个典型特征是文本与图像的深度融合。单个工单可能同时包含书面装配步骤和已完成步骤的标注照片;检测报告将合格/不合格测量值与焊缝 X 光图像配对;材料认证证书同时包含表格化的力学性能和 S-N 疲劳曲线。 以本文评估数据集中的具体示例来说明:扭矩规范表被绘制在工程图内部而非作为独立文本存储;彩色编码的热等值线图用于可视化火箭发动机喷嘴的峰值温度;制造工艺流程图通过决策菱形和颜色编码的关卡来直观标注质量暂停点,相关周期时间则以图表注释的形式呈现。 文本检索系统处理这类文档时,通常先通过 OCR 提取文本,再对提取的字符串进行嵌入和索引。这种方法在答案位于文档书面部分时有效,但会丢失图表中的空间关系、检测图像中的视觉模式,以及图表和曲线中编码的定量信息。当搜索涡轮泵中使用的轴承类型时,答案可能以横截面图上的标注形式出现,而 OCR 可能误读或剥离了其空间上下文。 多模态嵌入采用不同方法:模型直接处理图像并生成与文本嵌入位于同一空间中的向量,无需先将图像转换为文本。关于涡轮泵轴承的文本查询可以直接基于视觉理解与数据集中的横截面图进行匹配。 ## Amazon Nova Multimodal Embeddings 概述 Amazon Nova Multimodal Embeddings 在 Amazon Bedrock 上可用,能为文本、图像和多页文档生成嵌入。文本、图像和文档模态投影到单一共享向量空间,支持直接计算文本嵌入与图像嵌入之间的余弦相似度。 该模型支持 256、384、1024 和 3072 四种嵌入维度配置。更高维度捕获更多语义细节,但需要更多存储和计算资源进行相似度搜索。本文评估使用 1024 维度作为检索质量与成本的实际平衡点。模型还支持 `DOCUMENT_IMAGE` detail level,这是一种专为混合内容页面(如图表、表格和带注释的示意图)设计的处理模式。 对于检索工作负载,模型接受 `purpose` 参数,可设置为 `GENERIC_INDEX`(用于被索引的文档)或 `GENERIC_RETRIEVAL`(用于查询)。这种非对称嵌入方法改善了检索的向量空间,无需手动格式化查询。 ## 解决方案架构 该方案构建了两个并行检索管道进行比较: **数据集**:15 张独立技术图像(CAD 图形、检测报告、测试图表、材料规格、工艺流程图)和 5 份多页 PDF(装配程序、热试车报告、工程变更通知、材料认证、不合格报告),包含合成航空航天制造数据。 **管道 A(多模态)**:使用 Amazon Nova Multimodal Embeddings 直接嵌入每张图像,每份 PDF 页面作为文档图像嵌入,然后摄入 Amazon S3 Vectors 索引。 **管道 B(纯文本基线)**:将每张图像和 PDF 页面发送给 Amazon Nova 2 Lite 进行 OCR 文本提取,使用 Amazon Nova Multimodal Embeddings(纯文本输入)嵌入提取的文本,然后摄入独立的 Amazon S3 Vectors 索引。 ## 评估方法 评估分为两个阶段:检索质量(系统是否找到正确文档?)和生成质量(语言模型能否根据检索到的上下文生成正确答案?)。评估数据集包含 26 个从航空航天制造文档衍生的查询,每个查询都有真实相关的文档 ID 和参考答案。 ### 检索评估指标 检索评估计算三个指标: - **Recall@K**:相关文档出现在前 K 个结果中的比例 - **MRR**(Mean Reciprocal Rank):首个相关结果排名的倒数均值 - **NDCG@K**(Normalized Discounted Cumulative Gain):当相关文档排名更高时给予更多权重 ### LLM 评判的生成评估 对于生成评估,两个管道都检索每个查询的前五个结果。多模态管道将检索到的图像直接作为多模态上下文传递给 Amazon Nova 2 Lite;纯文本管道将 OCR 提取的文本作为字符串上下文传递。使用 Anthropic Claude Sonnet 4.5 作为 LLM 评判,对每个生成的答案根据真实答案打分 1-5 分。 ## 评估结果 ### 多模态检索指标 多模态管道在 K=5 时达到 90% 的召回率,在 K=10 时升至 96%。MRR 为 0.92,表明首个相关结果通常出现在第 1 位。有两个查询在 K=10 时召回率低于 1.0,因为相关信息分散在 PDF 和独立图像中,其中一个相关来源未出现在前 10 名。 ### 生成质量:纯文本 vs 多模态 | 管道 | 评判平均分 | 归一化分数 | |---|---|---| | 多模态 (MME) | **4.88/5** | **0.977** | | 纯文本 (OCR) | 2.00/5 | 0.400 | 多模态管道在 88% 的查询(26 个中的 23 个)上表现更好,平均 4.88/5 分。纯文本管道平均 2.00 分,其中 26 个查询中有 17 个得分 1 分(完全错误)。视觉内容(如热分析等值线图、疲劳曲线、工艺流程图和 CAD 标注标签)改进最为显著。 ### 实现复杂度和成本 多模态管道的实现更简单且运行成本更低。纯文本管道每个文档需要两次模型调用(一次 OCR 文本提取,一次文本嵌入),且需要针对多样化文档布局进行提示工程。多模态管道每个文档仅需一次嵌入调用,无需中间提取步骤,将每个文档摄入成本降低约一半。 ## 技术要点 **嵌入维度选择**:1024 维在本文场景下实现检索质量与成本的最佳平衡,支持从 256 到 3072 的灵活配置。 **Detail Level 配置**:对于包含混合内容的 PDF 页面,`DOCUMENT_IMAGE` 模式优于 `STANDARD_IMAGE`,因为模型对表格和图表内容应用额外处理。 **Asymmetric Embedding**:`GENERIC_INDEX` 和 `GENERIC_RETRIEVAL` 的分离设计使查询-文档匹配更加精准,无需手动格式化查询文本。 **Amazon S3 Vectors**:作为托管式向量存储和查询层,无需集群管理或容量规划,按请求计费无持久基础设施。 ## 与 [Amazon Nova Lite 微调](https://github.com/QianJinGuo/wiki/blob/main/entities/amazon-nova-lite-fine-tuning-cost-effective-vision-detection-model-tuning-case-and-practice.md) 的关系 Amazon Nova Multimodal Embeddings 与 同属 Amazon Nova 家族的多模态能力,但定位不同:MME 专注于跨模态语义检索,将不同模态映射到统一向量空间;Lite 微调则针对特定视觉检测任务的端到端优化。两者都利用 Amazon Bedrock 的托管推理能力,但在下游任务上形成互补——检索 vs 判别。 ## 深度分析 **1. 端到端多模态处理避免了 OCR 管道的信息丢失,这是生成质量差距的根源** 纯文本管道(2.00/5)vs 多模态管道(4.88/5)的巨大差距,其本质是信息转换链中的丢失。纯文本管道经过 OCR 提取(可能误读工程图中的符号和标注)→ 文本嵌入(丢失空间关系)→ 生成器收到纯文本(没有视觉上下文)→ 生成错误答案。多模态管道直接处理图像(保留完整视觉信息)→ 图像嵌入(保留空间关系)→ 生成器收到原始图像(直接视觉理解)→ 生成正确答案。这印证了一个关键原则:多模态系统的端到端设计优于串联设计,任何中间转换步骤都会造成信息丢失,且丢失的信息在后续阶段无法恢复。 **2. 纯文本检索在视觉密集型文档上的失败不是偶然而是系统性局限** 26 个查询中 17 个纯文本管道得 1 分(完全错误),这不是个别案例而是系统性问题。OCR 在扭矩规范表绘制在工程图内部、热等值线图可视化峰值温度、决策菱形标注质量暂停点等场景中失效是必然的——这些信息的编码方式(空间位置、颜色编码、图形标注)本质上不是文本形式,而是视觉形式。传统文本检索的前提假设"信息存在于文本中"在这些场景中根本不成立。对于任何视觉密集型文档(工程图纸、检测图像、工艺流程图、曲线图表),纯文本检索从原理上就注定失败,多模态嵌入是唯一的解决路径。 **3. 多模态检索的"实现简单+成本降低"具有正向飞轮效应** 多模态管道每个文档仅需一次嵌入调用(vs 纯文本管道两次),无需提示工程处理多样化文档布局,且摄入成本降低约一半。这意味着不仅准确性更高,实施成本也更低。这种"更简单+更便宜+更准确"的三重优势会形成正向飞轮:成本优势驱动更多采用,更多采用产生更多训练数据,更多数据进一步提升模型质量。对制造业而言,这意味着多模态检索的 ROI 计算应该包含:传统方案的实际总成本(OCR失败率×业务损失 + 两次调用成本 + 提示工程维护成本),而不仅是多模态方案的直接成本节省。 **4. 检索质量与生成质量必须联合评估,单独评估检索质量会误导系统选型** 多模态管道在 K=5 时达到 90% 召回率(检索指标优秀),但这个数字如果被视为唯一评估标准,会掩盖纯文本管道在生成环节的彻底失败(88% 查询多模态更优)。这提示了一个关键的系统性盲点:很多 RAG 系统评估只看检索指标(Recall@K、MRR),但检索正确不等于生成正确——即使找到正确文档,如果以错误方式传递给生成器(纯文本 vs 原始图像),生成质量仍会崩溃。完整的评估必须包含端到端生成质量,才能真正反映用户实际体验。 **5. 嵌入维度选择需要基于实际场景评估,1024 是制造业文档检索的实用平衡点** Amazon Nova MME 支持 256/384/1024/3072 四种维度,1024 被本文选为实用平衡点。这说明维度选择不是越高越好——3072 维可能捕获更多细节,但存储和计算成本也更高。评估结果在 1024 维实现 K=5 时 90% 召回率、K=10 时 96% 召回率,对于大多数制造文档检索场景已经足够。实际选型建议:先用 1024 维评估基线,如果特定场景召回率不足再尝试更高维度,同时监控存储和查询延迟的变化。不同行业文档的语义复杂度不同,需要实验确定最优维度。 ## 实践启示 **1. 视觉密集型制造文档优先使用多模态嵌入而非 OCR+文本嵌入方案** 对于航空航天、汽车、重型制造等行业的制造文档(CAD 图形、热等值线图、工艺流程图、检测照片、疲劳曲线),强烈建议采用多模态嵌入方案而非传统的 OCR+文本嵌入方案。评估结果已充分证明:多模态方案在生成质量上大幅领先(4.88/5 vs 2.00/5),同时实现更简单(单次调用 vs 两次调用)、成本更低(摄入成本降低约一半)。对于已有大量工程图纸和视觉文档的制造企业,这是立即可用的文档检索智能化路径。实施路径:1)将制造文档图像直接摄入 Amazon S3 Vectors;2)使用 Amazon Nova MME 生成 1024 维嵌入;3)通过 Amazon Nova 2 Lite 生成答案。 **2. 评估多模态检索系统必须同时评估检索指标和端到端生成质量** 单独评估检索指标(Recall@K、MRR、NDCG@K)会掩盖"检索正确但生成失败"的问题。建议的评估框架分两层:1)检索层评估文档召回率(K=5, K=10);2)生成层使用 LLM-as-Judge 评估端到端答案质量(1-5 分),输入应为完整的检索-生成管道。评判时将 ground truth 答案、生成答案和查询一并给 LLM 评分。多模态管道的 88% 查询更优这一数据,只有在端到端评估框架下才能得出——这是本文最重要的方法论贡献,对所有 RAG 系统评估都有参考价值。 **3. PDF 页面摄入时使用 DOCUMENT_IMAGE 模式而非 STANDARD_IMAGE** 对于混合内容页面(包含图表、表格、标注示意图的 PDF),必须使用 `DOCUMENT_IMAGE` detail level 而非 `STANDARD_IMAGE`。这是因为模型对 `DOCUMENT_IMAGE` 模式会应用额外处理,专门优化表格和图表内容的嵌入质量。对于制造文档场景(大多数 PDF 都包含混合内容),这是保证嵌入质量的关键配置。相对地,对于纯图像(如独立 CAD 图、检测照片),使用 `STANDARD_IMAGE` 模式即可。实施时建议对不同类型文档测试两种模式,选择召回率更高的配置。 **4. 充分利用 GENERIC_INDEX / GENERIC_RETRIEVAL 非对称嵌入设计** Amazon Nova MME 的 `GENERIC_INDEX`(文档索引用)和 `GENERIC_RETRIEVAL`(查询用)分离设计是有目的的架构选择,不是简单的参数。对索引文档使用 `GENERIC_INDEX` 使文档嵌入更全面(针对文档理解优化),对查询文本使用 `GENERIC_RETRIEVAL` 使查询嵌入更适合匹配(针对查询-文档匹配优化)。这种非对称设计改善了向量空间的质量,无需用户手动格式化查询文本。实施时应严格遵循这一分离设计,不要对查询也使用 `GENERIC_INDEX`。 **5. 托管向量存储(Amazon S3 Vectors)是多模态检索的实用选择** 对于大多数企业,S3 Vectors 作为托管式向量存储和查询层是更实用的选择:无需集群管理或容量规划,按请求计费无持久基础设施,集成 Amazon Bedrock 的模型调用自然流畅。对于制造业文档检索这类场景,托管方案的性能和成本通常已经足够,无需自建向量数据库。实施路径:使用 Amazon S3 Vectors 创建向量桶和索引,摄入时批量提交(本文使用 50 个一批),查询时指定 topK 和返回距离及元数据。评估完成后记得清理索引和桶以避免持续计费。 ## 参见 → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/amazon-nova-manufacturing-intelligence.md) → [Amazon Bedrock 模型推理无服务器架构案例](https://github.com/QianJinGuo/wiki/blob/main/entities/amazon-bedrock-model-inference-serverless-architecture-case-study.md) → [Amazon Nova Sonic 可扩展语音代理设计](https://github.com/QianJinGuo/wiki/blob/main/entities/scalable-voice-agent-design-with-amazon-nova-sonic-multi-agent-tools-and-session.md) → [Amazon Nova 2 内容审核提示工程](https://github.com/QianJinGuo/wiki/blob/main/entities/prompting-amazon-nova-2-for-content-moderation.md) → [Amazon Bedrock AgentCore 运行时深度解析](https://github.com/QianJinGuo/wiki/blob/main/entities/amazon-bedrock-agentcore-runtime-deep-dive-and-scenario-analysis.md) ## 相关实体 - [MOC](https://github.com/QianJinGuo/wiki/blob/main/moc/amazon-aws-ai.md) --- ## Ch10.014 RAG Chunk Embedding Rerank Pipeline > 📊 Level ⭐⭐ | 13.7KB | `entities/rag-chunk-embedding-rerank-pipeline.md` # RAG 分块·向量化·召回·重排流水线 ## 深度分析 **入库质量是 RAG 效果的天花板,而不是模型。** 原文明确指出"知识库效果的上限,往往不是由模型决定的,而是由入库质量决定的"。这一洞察揭示了 RAG 项目中最反直觉的现实:团队遇到效果不佳时,第一反应往往是换 Embedding 模型、调 TopK 或 Score 阈值,但真实原因大概率是文档从一开始就处理不当。入库质量具有不可逆性——如果分块策略和索引模式在入库时选错,后续的检索调优无法弥补。这解释了为什么"80% 的时间在搞数据"不是夸张,而是工程现实。 **分块是定义知识检索最小返回单位的艺术,核心矛盾是"太大不精准,太小不完整"。** 原文揭示了分块的本质悖论:chunk 越大语义越模糊(同时包含退货规则、换货规则、运费规则),chunk 越小上下文越不完整("超过 7 天后"单独成块毫无意义)。父子分块通过"检索用小块、生成用大块"的思路同时解决了这一矛盾,是复杂文档场景的利器。但更深层的启示是:分块没有通用最优解,效果只能通过持续测试来验证,这也是 RAG 项目"一周出 Demo,半年还在 60 分"的根本原因之一。 **Skill 与 RAG 的分工本质是"流程复制"与"知识调用"的互补。** 原文清晰定义了 AI 同事的三层能力:Workflow 层(知道怎么做)、Knowledge 层(知道参考什么资料)、Judgement 层(知道如何权衡)。Skill 主要覆盖第一层,RAG 主要覆盖第二层,第三层依赖模型能力和业务边界。这一框架解释了为什么大多数"同事 .skill"只是蒸馏了外显动作而非真实能力——因为隐性知识无法全部写入 prompt,必须依赖 RAG 来补足认知缺口。 **索引模式是源头决策,具有不可补偿性。** 原文特别强调"索引模式是源头决策,不是后面调 TopK、调 Score 阈值就能补回来的"。经济模式(关键词索引)从一开始就没有把知识放进语义空间,无法通过后期的检索调优来弥补语义召回的缺失。这一原则可以推广到整个调优顺序:文档质量 → 分块策略 → 索引模式 → 检索方式 → 重排 → TopK/Score 阈值 → Prompt 约束,前序环节的错误无法通过后续环节弥补。 **召回追求"快且不漏",重排是"复试"——两阶段设计映射了信息检索的经典范式。** 召回是海选,追求广度(向量检索擅长语义相近、全文检索擅长精确词匹配、混合检索兼容两者);重排是复试,追求精度(Rerank 模型深入看问题与文本的匹配关系)。这一两阶段架构的本质是用更低成本先快速排除明显无关内容,再用更高成本细排候选片段。它还揭示了一个深层规律:检索链路越往后越"贵",因此前段应倾向于多召回而非漏召回。 ## 实践启示 1. **在讨论 RAG 调优之前,优先评估文档格式和清洗质量。** 适合知识库的格式优先级为 Markdown > 纯文本 > Word > PDF > Excel > PPT > 图片/扫描件。扫描件依赖 OCR,错误率高。入库前应去除连续空格、多余换行符、URL、邮箱、水印、版权声明等噪音。业务噪音(过期条款、错误版本、内部备注)需要人工处理,系统自带清洗无法覆盖。 2. **从 Dify 的三个分块参数出发,结合业务文档结构定制分块策略。** 分段标识符决定"在哪里切"(按段落、标题、"第 X 条"、FAQ 的"Q:"等业务语义边界);分段最大长度建议按文档类型参考经验值(FAQ 200-500 tokens、客服话术 300-700 tokens、技术文档 500-1200 tokens);分段重叠长度设为最大长度的 10%-25%。对于长文档、制度文档、产品手册,优先考虑父子分块能力。 3. **在大多数企业知识库场景中,混合检索是默认最优选择。** 向量检索擅长语义相似但对 SKU、订单号、错误码等精确信息不敏感;全文检索相反。客服、售后、技术支持等场景的用户问题通常是两者混合,因此"无脑选混合检索"是合理的起点。对于准确性要求高的场景(客服、法务、医疗、金融、技术支持),建议开启 Rerank。 4. **TopK 和 Score 阈值需要结合 chunk 大小和场景类型动态调整。** chunk 大则 TopK 小;chunk 小则 TopK 可适当大;用父子分块返回父块时 TopK 不能太大否则上下文会爆。Score 阈值从 0.5-0.7 开始调,高风险场景宁可保守转人工,也不要让模型在缺乏依据时强行回答。 5. **建立 RAG 可观测性飞轮,从用户真实日志中迭代优化。** 调优顺序应该从真实问题日志出发:分析是漏召回多还是噪音多。RAG 项目需要回答的五个问题是——文档本身干净吗?chunk 切得合理吗?索引模式选对了吗?召回方式适合业务问题吗?是否需要 Rerank? 建议逐步建立:回答是否有依据可追溯、Bad Case 是否能定位到具体环节、TopK/Score 调整是否有数据支撑。 ## 相关实体 - [Rag Chunking Optimization 2025](https://github.com/QianJinGuo/wiki/blob/main/entities/rag-chunking-optimization-2025.md) - [Rag Full Pipeline Taobao](https://github.com/QianJinGuo/wiki/blob/main/entities/rag-full-pipeline-taobao.md) - [Ai Agent Engineer Capability Map](https://github.com/QianJinGuo/wiki/blob/main/entities/ai-agent-engineer-capability-map.md) - [Aws Sagemaker Ai Agent Guided Workflows Finetuning](https://github.com/QianJinGuo/wiki/blob/main/entities/aws-sagemaker-ai-agent-guided-workflows-finetuning.md) - [Claude Code Search Architecture Tencent 2026](https://github.com/QianJinGuo/wiki/blob/main/entities/claude-code-search-architecture-tencent-2026.md) → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/rag-chunk-embedding-rerank-pipeline.md) RAG(Retrieval-Augmented Generation)流水线是 RAG 知识库从文档入库到答案生成的全链路工程实践,涵盖**离线阶段**(文档解析→清洗→分块→向量化→建索引)和**在线阶段**(查询改写→知识库路由→召回→重排→TopK/Score过滤→上下文拼接→大模型生成)。 - [prosemirror @文档 mention:知识库 agent 输入框的工程化实现](https://github.com/QianJinGuo/wiki/blob/main/entities/prosemirror-knowledge-base-mention.md) - [MOC](https://github.com/QianJinGuo/wiki/blob/main/moc/rag-knowledge-retrieval.md) ## 核心定位:Skill 与 RAG 的分工 Skill 负责**流程复制**(第一步做什么、第二步做什么),RAG 负责**知识调用**(做这件事需要参考哪些资料、历史经验、信息从哪里来)。两者组合才接近真正"蒸馏同事"的能力。 真正的 AI 同事需要三层能力: 1. **Workflow 层**:知道这件事该怎么做 2. **Knowledge 层**:知道做这件事要参考什么资料 3. **Judgement 层**:知道在复杂情况下如何权衡 ## 离线阶段:数据入库 ### 文档解析与清洗 知识库效果的上限往往不是由模型决定的,而是由入库质量决定的。文档从一开始没处理好,后续再好的 Embedding 模型、Rerank 模型、向量数据库都只是把垃圾更快地找出来。 适合知识库的文档格式优先级:Markdown > 纯文本 > Word > PDF > Excel > PPT > 图片/扫描件。扫描件依赖 OCR,错误率较高。 清洗阶段需去除:连续空格、多余换行符、URL、邮箱、水印、版权声明等噪音。系统自带清洗能力有限,业务噪音(过期条款、重复政策、错误版本、内部备注、表格结构错乱)需在上载前人工处理。 ### 分块策略 分块的本质是**定义知识检索的最小返回单位**。分块面临经典两难:**太大不精准,太小不完整**。 | 分块策略 | 适用场景 | 优点 | 缺点 | |---|---|---|---| | 固定长度分块 | 快速验证 | 实现简单、速度快 | 可能切断句子和表格 | | 语义边界分块(按段落/句号/换行) | 通用场景 | 语义相对完整 | 长段落无法处理 | | 递归分块 | 长文档 | 先大边界再小边界,尽量保留语义 | 仍可能破坏复杂结构 | | 结构感知分块(按标题、代码块、表格、FAQ 问答对) | Markdown、技术文档、制度文档 | 符合文档原生结构 | 依赖文档格式规范 | | 智能语义分块(Embedding 相似度 / LLM 判断边界) | 高价值知识库 | 语义最精准 | 成本高、复杂 | Dify 三个核心分块参数:分段标识符(在哪里切)、分段最大长度(每块多大,默认 1024 token)、分段重叠长度(相邻片段共享内容,防止边界切断,默认 50 token,建议 10%-25%)。 ### 父子分块 父子分块解决 RAG 核心矛盾:**检索需要小块,生成需要大块**。入库时同时切成大块和小块,检索时用小块匹配,命中后返回对应大块给模型。用小块提高召回精度,用大块保证回答完整性。 ### 向量化与索引 **高质量模式**使用 Embedding 模型将每个知识片段转换成向量,语义相近的文本向量距离更近。**经济模式**使用 关键词索引(如 Jieba 分词),成本低但只能做字面匹配。 关键工程原则:文档和查询**必须使用同一个 Embedding 模型**,否则检索结果会非常不稳定。 索引模式是源头决策,后续调 Top K、调 Score 阈值无法补回。向量数据库常用索引算法包括 HNSW、IVF、PQ、FAISS,本质解决如何在大量向量里又快又准地找到相似内容。 ## 在线阶段:检索生成 用户提问进入链路:`查询改写/知识库选择 → 召回 → 重排 → TopK 过滤 → 拼接上下文 → 大模型生成回答`。 ### 查询改写 将用户口语化、模糊化的问题改写成更适合检索的表达。所有改写应往知识库靠,只做澄清和标准化,不替用户脑补。 ### 知识库路由 多知识库场景下两种策略:先让模型判断问题属于哪个知识库再检索(结果干净但判断错误则漏掉答案),或多知识库一起检索后合并结果(不易漏但召回更杂)。 ### 召回 召回追求**快且不漏关键数据**。三种检索方式: - **向量检索**:擅长语义相似,语义接近即使字面不同也能匹配 - **全文检索**:依赖关键词匹配,对 SKU、订单号、合同编号、错误码等精确信息更稳定 - **混合检索**:同时走两路再合并,适合大多数企业知识库场景 ### 重排 召回是海选,重排是复试。重排将候选片段按与用户问题的真实相关性重新排序。Rerank 模型比单纯向量相似度更细,深入看问题和文本之间的匹配关系,代价是成本和效率。对准确性要求高的场景(客服、法务、医疗、金融、技术支持)建议开启。 ### TopK 与 Score 过滤 - **TopK**:决定最多给模型几个片段。chunk 大则 TopK 小;chunk 小则 TopK 可适当大;用父子分块返回父块时,TopK 不能太大,否则上下文会爆。 - **Score 阈值**:数量控制(TopK)+ 质量控制(Score),防止系统硬凑答案。知识库里没有依据时,不要强行回答,宁可保守转人工。 ## 调优顺序与配置映射 合理的调优顺序:**文档质量 → 分块策略 → 索引模式 → 检索方式 → 重排 → TopK/Score 阈值 → Prompt 约束**。 | Dify 配置项 | 对应环节 | 本质作用 | |---|---|---| | 索引模式 | 向量化/建索引 | 决定语义检索还是关键词检索 | | 分块方式 | 文档分块 | 决定知识片段颗粒度 | | 分段最大长度 | 文档分块 | 控制 chunk 大小 | | 分段重叠长度 | 文档分块 | 防止边界信息丢失 | | 检索方式 | 召回 | 语义找、关键词找,还是两者都用 | | Rerank | 重排 | 候选片段怎么重新排序 | | Top K | 上下文过滤 | 决定最多给模型多少片段 | | Score 阈值 | 上下文过滤 | 决定低相关内容是否丢弃 | ## 可观测性 RAG 项目需要**可观测性和飞轮系统**:回答需要有依据、可追溯、可控制。 → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/rag-chunk-embedding-rerank-pipeline.md) --- ## Ch10.015 RAG 全链路技术详解:从文档加载到 Ragas 评估 > 📊 Level ⭐⭐ | 12.7KB | `entities/rag-full-pipeline-taobao.md` → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/rag-full-pipeline-taobao.md) # RAG 全链路技术详解 淘天集团品牌行业架构团队出品的 RAG 工程化实战指南,覆盖从文档加载到 Ragas 自动化评估的完整链路。 ## 评分 | 维度 | 分数 | |------|------| | 知识价值 | 8 | | 置信度 | 8 | | 产品 | **64** | ## 核心标签 `rag` `pipeline` `embedding` `chunking` `retrieval` `rerank` `graph-rag` `ragas` `evaluation` `meta-chunking` `hyde` `agent` ## 全链路概览 文档加载 → 智能切分 → 索引构建(Embedding) → 检索优化 → 生成调优 → Graph RAG 进阶 → Ragas 评估闭环 ## 1. 文档加载与切分 **文档加载**:多格式适配(PDF/Word/HTML/JSON)、OCR 扫描件解析、元数据提取、初步清洗。 **Meta-Chunking**(语义切块):基于 PPL(困惑度)的智能分块方法。用轻量模型(Qwen2)计算每个句子相对前文的 PPL,在 PPL 局部极大值处切分——这些点对应逻辑断层的语义边界 。切分后用 LLM 进行语义补全和摘要生成,弥补上下文断裂。 ## 2. 索引构建(Embedding) Transformer 架构下 embedding 生成的完整过程:Tokenization → 初始向量映射 → Q/K/V 变换 → 位置编码注入 → Self-Attention 逐层深化 → Pooling(CLS/Mean/Max)→ L2 归一化。归一化后点积=余弦相似度,加速向量库检索 。 ## 3. 检索优化 **Query 改写**:指代消解(多轮对话)、纠错去噪、术语对齐、结构转换。多查询生成(3-5 个变体)提升召回率 。 **HyDE**(假设文档嵌入):先让 LLM 生成"假答案",用假答案的向量去匹配真实文档,将"问题-文档匹配"转化为"文档-文档匹配",解决短问题与长文档之间的向量空间不对称问题 。 **Doc2Query**(反向 HyDE):对每个 chunk 预生成可能的 question,建立 question→chunk 索引。可离线处理,不影响实时 RT。核心价值:用"提问 vs 提问"替代"提问 vs 陈述" 。 **标签过滤**:非结构化→半结构化转化,在语义检索基础上引入硬标签过滤,解决"语义相似但事实不符"的噪音问题。 **ReRank(重排序)**:使用 Cross-Encoder 将 Query 和候选文档拼接后共同编码,通过交叉注意力捕捉细微匹配关系。解决多条件联合约束(如"2000以下+续航好+华为")的精确排序 。 ## 4. 生成优化 常见问题:无检索信息时捏造答案、知识冲突(A说可/B说禁)、中间信息丢失、忽略参考资料。 优化手段:强约束 Prompt(禁止编造+强制引用)、内容分隔标记、模型调参(seed/temperature/presence_penalty/max_tokens)、SFT 微调(训练"根据资料回答"和"资料不足时拒绝"的能力)。 ## 5. Graph RAG 用知识图谱解决传统 RAG 的局限性:多跳推理(路径追踪:A→B→C)、全局理解(社区检测+摘要预生成)。 索引流程:文本切分→LLM 提取三元组→构建全局图谱→Leiden 算法社区检测→社区摘要。 查询模式:Local Search(实体邻居 n 跳遍历)vs Global Search(预生成社区摘要汇总)。 代表框架:Microsoft GraphRAG、LlamaIndex、LightRAG 。 ## 6. Ragas 评估体系 **核心理念**:LLM-as-a-Judge,自动化评估 RAG 系统。 | 维度 | 指标 | 关注点 | |------|------|--------| | 检索 | Context Precision | 相关 chunk 排在前面 | | 检索 | Context Recall | 不遗漏重要结果(拆解 Claims 溯源) | | 生成 | Faithfulness | Claim 能否从上下文支撑 | | 生成 | Answer Relevancy | 反向生成问题+embedding 相似度 | | 鲁棒性 | Noise Sensitivity | 对冗余/无关上下文的抗干扰能力 | **评测集生成**:基于知识图谱的自动化测试集构建,通过节点、查询长度、查询风格、人设组合场景,支持 Single-Hop/Multi-Hop × Specific/Abstract 四种查询类型 。 ## 关键洞察 1. **Meta-Chunking 是 PPL 的外科手术式应用**:用语言模型的"困惑度"作为语义边界检测器,在 PPL 尖峰处切分,远比固定长度/标点切分科学 2. **HyDE 的本质是向量空间对齐**:短问题与长文档在向量空间中分布不同,通过生成"假答案"将问题投射到文档空间,再从文档空间做匹配 3. **Doc2Query 的离线预处理思路**:将"用户提问→文档匹配"的不对称提前消除,在线只做"问题→问题"匹配,RT 几乎无损耗 4. **Cross-Encoder Rerank 是精准度的最后一道防线**:Embedding 只能表达文档的平均含义,Cross-Encoder 可以逐字检查多条件联合约束 5. **Graph RAG 解决的是"跳"和"面"的问题**:多跳(路径追踪)和全局理解(社区摘要)是传统向量检索的结构性盲区 6. **Ragas 让 RAG 从"感觉还行"变成"可量化"**:Context Precision/Recall + Faithfulness + Answer Relevancy + Noise Sensitivity 覆盖了工程团队最关心的五个问题 ## 深度分析 **1. Meta-Chunking 的本质是"困惑度驱动的时间切片"** 传统规则切分(固定字数/段落)本质上是把文档当静态文本处理,忽略了语言内部的结构性信号。PPL(Perplexity)把语言模型在每个句子处"惊讶度"量化出来——当模型突然对下一句感到意外时,PPL 曲线出现尖峰,对应逻辑断层。这个方法的核心洞察是:**语义边界不来自标点,而来自语义连贯性的突变**。这与人类阅读时感知"段落的起承转合"高度吻合。Meta-Chunking 的工程价值在于:它把一个 NLP 问题(PPL 计算)转化为了一个可配置的超参数问题(局部极大值的敏感性阈值),这比固定切分更接近"语义感知"但比纯 LLM 切分更轻量。 **2. HyDE/Doc2Query 解决的是"向量空间不对称"问题** 短 query 与长文档在 embedding 空间中的分布天然不同:query 通常是口语化提问或关键词组合,文档是结构化陈述。直接用 query 向量检索文档,本质上是让两个不同分布的东西在同一空间竞争。HyDE 通过让 LLM 生成"假答案"把 query 投射到"文档分布空间",再做文档-文档匹配;Doc2Query 则反向操作,把文档陈述转成可能的提问,将匹配转化为问题-问题匹配。两条路径都承认了"提问vs陈述"的不对称性,只是解法方向相反。实际系统中可以互补:Doc2Query 离线预处理降低 RT,HyDE 在线处理复杂 query。 **3. Cross-Encoder Rerank 是精度-速度权衡的必然选择** Bi-encoder(双塔模型)分别编码 query 和文档,适合大规模 ANN 检索但丢失了细粒度交互信息。Cross-Encoder 将 query 和文档一起喂进模型,通过自注意力机制让每个 token 观察另一方的每个 token,代价是 O(N×M) 的计算复杂度和无法预计算文档向量。当下,Bi-encoder + HNSW 保证召回,Cross-Encoder 做精排是工程上最常见的分层检索架构。值得注意的是,ReRank 还能缓解"中间丢失"问题——将长上下文中被早期高相似度文档挤掉的 relevant docs 重新提升到 top k。 **4. Graph RAG 的真正价值在于"结构化记忆"而非"图数据库"** Graph RAG 常常被误解为"知识图谱 + 向量检索"的简单组合。它的核心贡献是引入了**预生成的社区摘要**——把全局理解问题("这篇论文讲了什么")从在线 LLM 生成变成了离线计算。Leiden 社区检测将图谱划分为多个子社区,每个社区预先用 LLM 生成摘要。查询时分 Local Search(实体邻居遍历)和 Global Search(社区摘要聚合)两种路径,前者保证局部精确性,后者提供全局视野。这个设计与传统 RAG 在全局问答上的结构性盲区形成了鲜明对比——传统 RAG 的语义搜索本质上是"最近邻检索",无法做跨簇的信息聚合。 **5. Ragas 的 LLM-as-a-Judge 本质上是"模型自我评估能力"的工程化** 传统评估依赖人工标注的 ground truth,成本高且无法规模化。Ragas 用 LLM 自身作为裁判,通过设计巧妙的 prompt(Faithfulness 用"逐 claim 溯源",Answer Relevancy 用"反向生成问题")把主观评估转化为可计算的相似度指标。这背后有一个假设:**LLM 对"逻辑一致性"和"语义相关性"的判断足够稳定**。这个假设在 GPT-4 级别模型上大致成立,但在小模型上可能失效。工程落地时需要注意:Ragas 分数高不代表用户体验好,分数低一定意味着某个维度有明确问题。 ## 实践启示 1. **切分策略的优先级高于 embedding 模型选择**:很多团队花大量精力选 embedding 模型,却忽视了"garbage in, garbage out"的切分问题。建议先用 PPL 语义切分 + 摘要补全重建知识库,再迭代 embedding 模型。 2. **HyDE 和 Doc2Query 不是非此即彼**:Doc2Query 离线生成 question-index,适合 query 模式稳定的客服场景;HyDE 在线生成假答案,适合 query 多变且意图模糊的探索性场景。两者可以并存于同一系统,Doc2Query 作为第一层召回,HyDE 作为查询改写层。 3. **标签过滤是工程落地的关键一环**:语义相似但事实不符是向量检索的典型 corner case,半结构化的标签系统(如类目、品牌、属性标签)可以作为硬过滤层补足语义检索的不足,成本远低于重新训练 embedding 模型。 4. **ReRank 阶段介入时机要卡准**:ReRank 放在检索和生成之间,但候选文档数量需要控制(通常 top 50-100),过多会浪费算力,过少会遗漏有效结果。建议配合 A/B 测试确定最优 top_k。 5. **Graph RAG 适合"知识密集型 + 多跳推理"场景**:对于简单 FAQ 场景,传统 RAG 已足够;对于需要关联分析的复杂文档集(如技术文档、财报、研究论文),Graph RAG 的社区摘要能显著提升全局问答质量。 6. **Ragas 评估应该作为 CI/CD 的一部分**:将 Ragas 指标(Context Precision、Faithfulness 等)接入自动化测试,新版本发布前跑一遍回归测试,避免检索策略或 Prompt 改动引入回归。 7. **评测集生成要覆盖四种查询类型**:Single-Hop/Specific(简单事实)、Single-Hop/Abstract(概念解释)、Multi-Hop/Specific(多步推理)、Multi-Hop/Abstract(综合分析)。单一类型的测试集会导致对其他类型 query 的覆盖盲区。 ## Related - [harness-engineering-systematic-explainer](https://github.com/QianJinGuo/wiki/blob/main/entities/harness-engineering-systematic-explainer.md) - [Agent 原理、架构与工程实践](https://github.com/QianJinGuo/wiki/blob/main/entities/agent-engineering-principles-architecture-practice.md) - [AI Agent 工程师能力地图](https://github.com/QianJinGuo/wiki/blob/main/entities/ai-agent-engineer-capability-map.md) --- ## Ch10.016 SIGIR 2026: RAD-DPO 生成式检索偏好对齐 > 📊 Level ⭐⭐ | 11.6KB | `entities/sigir-2026oxygensearch-之生成式检索偏好对齐-rad-dpo-技术解析.md` # SIGIR 2026: RAD-DPO 生成式检索偏好对齐 > **v×c score**: 72 | stars=4 > **来源**: https://mp.weixin.qq.com/s/iPaRBCnSPk5kq0h9R6kM5Q > **发布**: 京东技术 (2026-07-16) ## 摘要 RAD-DPO(Robust Adaptive Denoising Direct Preference Optimization)是京东 OxygenSearch 团队提出的面向生成式检索(Generative Retrieval, GR)中 SID(Semantic ID)结构的偏好对齐方案,被 SIGIR 2026 接收。该方案系统性地解决了标准 DPO 在电商生成式检索场景中的三个核心问题:公共前缀被误伤(Shared Prefixes)、隐式反馈噪声敏感(Pseudo-negatives)、多正例概率挤压(Squeezing Effect)。RAD-DPO 通过三个协同模块——MLGC(Multi-Label Global Contrast, session 级多标签全局对比)、TLGD(Token-Level Gradient Detachment, token 级梯度截断保护公共前缀)、RDRW(Reward-Dependent Reweighting, 动态奖励加权降低伪负例惩罚)——将 DPO 从"简单 pair-wise 序列级偏好优化"提升为"低成本、多样本、token 级、噪声鲁棒、prefix-aware 的结构化偏好学习范式"。配合 Label Packing 高效训练方案,RAD-DPO 在 3000 万数据基准上对比 SFT 和其他 DPO 变体取得全面领先,召回和 MRR 指标在 0.6B 到 8B 模型上持续提升。 ## 核心要点 - **三个核心问题**:共享前缀误伤(正负样本共享的类目前缀被 DPO 无差别打压)、伪负例噪声(曝光未点击≠不相关)、多正例概率挤压(打压负样本同时压缩长尾正样本概率) - **MLGC(多标签全局对比)**:将偏好学习从单个 pair 扩展到 session 级,同时提升所有正样本、对所有负样本做 list-wise 对比 - **TLGD(Token 级梯度截断)**:只切断负样本公共前缀上的梯度,只在正负样本分叉点之后施加偏好惩罚 - **RDRW(动态奖励加权)**:基于模型自身 hidden state 相似度判断正负样本相似性,对疑似伪负例做软惩罚 - **Label Packing 工程优化**:将所有正负候选拼接到同一序列,使用 Block-diagonal Attention Mask,训练吞吐提升 300%、显存降低 50% - **实验结果**:在 3000 万数据集上全面领先 SFT 和竞品 DPO 变体,0.6B→8B 模型领先优势持续扩大 ## 深度分析 ### 为什么标准 DPO 在生成式检索中失败 理解 RAD-DPO 的价值,需要先理解生成式检索(GR)与传统 NLP 任务的本质差异。在 GR 中,商品被编码为结构化的 Semantic ID(SID),通常由层次化聚类(如 RQ-VAE)构建——前缀 token 表示粗粒度类目(如"电子产品 > 手机"),后缀 token 区分具体商品。 标准 DPO 的 loss 函数对整条序列无差别操作:正样本整条序列被提升,负样本整条序列被打压。但当正负样本共享类目前缀时(比如 iPhone 15 和 iPhone 15 Pro 都是"电子产品 > 手机 > 苹果"),打压负样本的同时也在打压正确的类目前缀——这正是"公共前缀误伤"问题的根源。 此外,电商的"未点击"不等同于"不相关"。用户没点击可能是位置偏见、图片问题或已通过其他方式购买。将这种"伪负例"作为强负样本使用,会扭曲模型对商品语义的理解。这与 [eBay 生成式检索实践](https://github.com/QianJinGuo/wiki/blob/main/entities/ebay-generative-retrieval-rq-vae-semantic-id-2026-06-30.md) 中遇到的噪声问题一致。 ### TLGD:结构化输出的梯度保护创新 TLGD(Token-Level Gradient Detachment)是 RAD-DPO 最具原创性的贡献。它的核心思路可以概括为:**"把'整条负样本序列打压'改造成'只在分叉点之后打压'"**。 具体实现:前向计算时,负样本公共前缀仍然参与 likelihood 计算(保证 prefix 的表示更新);反向传播时,通过 Stop-Gradient 操作切断公共前缀上的梯度,只让真正区分正负样本的差异后缀参与偏好优化。这个精妙的梯度操作确保了 SID 的层级语义结构不会被 DPO 破坏——粗粒度语义(类目、品牌)受到保护,细粒度语义(具体商品差异)才参与偏好学习。 这个思路与 [RL 对齐算法演进](https://github.com/QianJinGuo/wiki/blob/main/entities/2026-llm-rl-algorithms-deeplog-imba-ppo-dpo-grpo-marl.md) 中的"token 级细粒度优化"趋势一致,但 TLGD 的技术路线更直接——不是通过复杂的 reward 设计间接保护前缀,而是从梯度传播机制层面直接切断不必要的梯度。 ### RDRW:基于模型表示的自适应降噪 RDRW 解决的是隐式反馈噪声问题。它的方法论比 TLGD 更难设计:如何判断一个负样本是"真负例"还是"伪负例"? RAD-DPO 的解法很巧妙:用模型自身生成 EOS token 时的最后一层 hidden state 作为 SID 的序列级表示,计算正负样本之间的余弦相似度。如果正负样本在表示空间中非常相似,说明负样本很可能是"伪负例"(语义相关但用户没点击),惩罚应当减轻。 为了避免使用固定阈值(不适应性),论文设计了一个统计 warm-up 阶段:先缓存 4096 个 pair 的相似度,构造基准分布,计算分位点,然后根据分位点动态调整惩罚权重。相似度低的负样本保留完整惩罚(更大可能是真负例),相似度高的负样本惩罚降到 0.5(更可能是伪负例)。 这种"用模型当前表征判断样本可信度"的思路,本质上是把偏好学习从"基于固定标签的训练"升级为"基于模型认知状态的自适应训练"。 ### Label Packing:将工程效率提升 300% 的关键创新 RAD-DPO 的工程实现面临一个独特挑战:一个 session 级训练样本包含 1 个 prompt + N 个正样本 + M 个负样本。如果复用标准 DPO 框架,prompt 会被重复编码 1+(N+M) 次。 在 NLP 任务中这个问题不明显(response 较长,prompt 占比不高),但 GR 场景中 SID 通常只有 3-7 个 token,prompt 可能上百 token——计算量主要在 prompt 上。 Label Packing 的解决方案是将所有 candidate 拼接到同一条 unified sequence,prompt 只计算一次。通过 Block-diagonal Attention Mask 确保不同 candidate 之间互不可见,同时对齐 Position ID 防止模型通过位置差异区分样本。这一工程创新使得 RAD-DPO 的训练吞吐与 SFT 处于同一水平,对比 GRPO 等强化学习方案有数量级的优势 —— 这是论文中提到的"全链路算法优化 + 工程效率优化"的双轮驱动策略。 这对于 [生产级 Agent Harness](https://github.com/QianJinGuo/wiki/blob/main/entities/agent-harness-production.md) 的设计原则——"高效训练是大规模落地的必要条件"——是一个有力的佐证。 ### 与 RL 对齐方法论的定位 RAD-DPO 选择 DPO 路线而非 GRPO 或 PPO,有明确的技术考量:DPO 不依赖额外的 Reward Model,实现简单且样本获取成本低。但 GRPO(如 OneSearch-V2 的 TPMA-GRPO)对 SID 前缀 token 也有建模,两种路线的差异在于: - DPO 路线(RAD-DPO):通过梯度操作保护前缀,保持 DPO 的简洁性 - GRPO 路线:通过分组奖励建模前缀,但需要多个采样的 reward 估算 两种路线各有利弊——DPO 路线训练效率更高,但 reward 信号来自身而非外部评判;GRPO 路线更灵活但训练成本更高。RAD-DPO 的 reference-free 设计(与 SimPO 一致)进一步简化了训练流程。 ## 实践启示 1. **结构化输出场景中的 DPO 需要 token 级保护**:如果模型输出具有层级结构(如 SID、代码 AST、JSON schema),标准 DPO 会误伤公共前缀。应该在 token 级别控制梯度传播,保护底层结构不被偏好优化破坏。 2. **隐式反馈信号的噪声处理应基于模型自身表示**:电商"点击/未点击"等隐式信号天然有噪声。RDRW 的方法论——用模型当前表征判断样本可信度——比固定规则过滤更适应训练过程中的表示空间变化。 3. **Session 级对比优于 Pair-wise 对比**:在 multi-label 场景中(一个 query 对应多个正样本),pair-wise 对比会导致长尾正样本被挤压。使用 session 级全局对比,所有正样本都被提升,模型看到的不是"单个正负 pair"而是"正样本集合 vs 负样本集合的整体关系"。 4. **Label Packing 是多候选训练场景的标配工程优化**:任何需要在一个 prompt 下对多个候选 response 计算 log-probability 的训练场景(DPO、对比学习、候选重排),都可通过 Label Packing + Block-diagonal Attention Mask 大幅提升吞吐。 5. **Reference-free 设计降低训练成本**:去掉冻结的 reference model(走 SimPO 路线)在 GR 场景中有效,显存降低近 50%。如果你的场景不需要 KL 散度约束,可以考虑这条更轻量的路线。 6. **从 error bar 中提炼真正有用的 insight**:论文在 0.6B、2B、8B 三个规模上做了实验。模型规模越大,RAD-DPO 领先优势越明显——这说明结构化偏好学习在大模型中释放的潜力大于小模型,可能因为大模型具有更好的 SID 结构表示能力。 ## 相关实体 - [eBay 生成式检索实践](https://github.com/QianJinGuo/wiki/blob/main/entities/ebay-generative-retrieval-rq-vae-semantic-id-2026-06-30.md) - [RL 对齐算法演进](https://github.com/QianJinGuo/wiki/blob/main/entities/2026-llm-rl-algorithms-deeplog-imba-ppo-dpo-grpo-marl.md) - [生成式检索 RQ-VAE](https://github.com/QianJinGuo/wiki/blob/main/entities/ebay-generative-retrieval-rq-vae-semantic-id-2026-06-30.md) - [LLM RL 算法深度分析](https://github.com/QianJinGuo/wiki/blob/main/entities/2026-llm-rl-algorithms-deeplog-imba-ppo-dpo-grpo-marl.md) - Agentic 搜索检索 - RLHF/DPO/GRPO 对齐 - [DREAM 密集检索](https://github.com/QianJinGuo/wiki/blob/main/entities/dream-dense-retrieval-autoregressive-modeling-challengehub-2026.md) - [生产级 Agent Harness](https://github.com/QianJinGuo/wiki/blob/main/entities/agent-harness-production.md) → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/sigir-2026oxygensearch-之生成式检索偏好对齐-rad-dpo-技术解析.md) --- ## Ch10.017 Karpathy LLM Wiki V2:记忆生命周期 + 知识图谱 + 混合检索 + 落地路线图 > 📊 Level ⭐⭐ | 11.5KB | `entities/karpathy-llm-wiki-v2-deep-analysis-rohit-ghumare.md` # Karpathy LLM Wiki V2:从复利启动到复利防烂 Rohit Ghumare 在 Karpathy 的 LLM Wiki gist 上更新的 V2 版本,把原版"让知识开始复利"的思路推到了"复利系统别烂掉"。核心新增:记忆生命周期、类型化知识图谱、混合检索、事件驱动、质量治理。 与 [Karpathy LLM Wiki V2 中文概述](https://github.com/QianJinGuo/wiki/blob/main/entities/karpathy-llm-wiki-v2-2026.md) 互补——原 entity 是中文入门解读,本文是 V2 深度技术分析 + 落地路线图 + 评测方法论。 → [LLM Wiki 范式](https://github.com/QianJinGuo/wiki/blob/main/concepts/llm-wiki-paradigm.md) — 原版三层架构(Raw → Wiki → Schema) ## 原版回顾 Karpathy 的原版反对 RAG(每次重算),主张让 LLM 把资料**编译**成 wiki。三层结构: | 层 | 作用 | |---|---| | Raw sources | 原始材料,LLM 只读不改 | | Wiki | LLM 维护的 Markdown 页面(summary/entity/concept) | | Schema | CLAUDE.md / AGENTS.md,写作和维护规则 | 类比:Obsidian = IDE,LLM = programmer,wiki = codebase。人负责选题和判断,LLM 负责整理、交叉引用、补 index、查孤儿页。 ## V2 六大生产层升级 ### 1. 记忆生命周期 wiki 页面不能默认同等可信。V2 加入 memory lifecycle: - **Working memory** → 当前 session 临时 - **Episodic memory** → 事件记录 - **Semantic memory** → 压缩后的事实 - **Procedural memory** → 操作模式 越往后越压缩,证据越强,生命周期越长。 关键主张:confidence 不应是裸数字(0.85),应做成**证据链**——来自哪个 ADR、哪次 commit、哪篇 source、哪次 session,最近确认时间,是否被新信息替代。 ### 2. 类型化知识图谱 原版靠 Markdown wikilink + Obsidian graph,只能看页面连接。V2 需要带含义的边:`uses`、`depends_on`、`contradicts`、`supersedes`。 查询场景:升级 Redis 影响哪些服务?某个鉴权决策牵涉哪些 bug 和负责人?普通 wikilink 无法回答这类影响链问题。 ### 3. 混合检索 原版 index.md 在 100-200 页内有效。V2 超过此阈值用三路检索 + RRF 融合: - **BM25**:精确关键词匹配 - **向量搜索**:语义相似 - **图遍历**:结构上相关的影响链 关键洞察:BM25 + 向量负责"此刻相关",图遍历负责"结构相关"。两者必须一起用。 ### 4. 事件驱动维护 session end → 自动生成候选 summary → proposal-first 写入。直接改主 wiki 危险,应走 review queue。 ### 5. 写入门控 | 风险等级 | 操作 | 策略 | |----------|------|------| | 低 | append 新 claim | 自动提交 | | 中 | 已有 claim 增加证据 | 自动追加 | | 高 | contradiction/supersession/批量删除/权限变更 | 人工审核 | ### 6. 多 Agent 协调 mesh sync、shared/private knowledge、coordination boundary。 ## V1 vs V2 对比 | 问题 | 原版处理 | V2 处理 | |------|----------|---------| | 知识变旧 | lint 发现 stale claim | lifecycle + supersession + retention | | 搜索扩展 | index.md + 可选工具 | BM25 + vector + graph | | 结构关系 | wikilinks | typed entities and relations | | 自动维护 | 人触发 ingest/lint | hooks + 事件驱动 | | 多 Agent | 略提团队场景 | mesh sync + shared/private | | 治理 | Git 历史 | privacy filter + audit + reversible bulk ops | ## 落地路线图 **Phase 1 — MVP**:保留 raw/、wiki/、index.md、log.md、AGENTS.md。每次 ingest 更新相关页面,看 Git diff。验收:一次 source 稳定更新 summary/entity/concept/index/log。 **Phase 2 — 证据链**:加 claim id + source_ref(如 `auth.redis-cache.uses`)。新证据追加到 claim,旧决策被替代时用 supersedes 链接。旧内容不消失——解释今天设计为什么长这样。 **Phase 3 — 混合检索**:SQLite FTS5 / 本地 BM25 → embedding → frontmatter/sidecar JSON 抽图关系。图数据库晚点上,先定实体和边的契约。 **Phase 4 — 事件驱动**:proposal-first,高风险写入进 review queue。 ## 评估方法论 评估应围绕**决策**做,不是功能覆盖: **检索层**:三路 vs 单路 vs index?测 Recall@5、MRR、p50/p95 latency、token cost。查询分类型:精确术语、语义同义、影响分析、历史决策、个人偏好。只有影响分析类需要图遍历时再加重图。 **写入层**:自动 proposal 是否降低维护成本?测 unsupported claim rate、duplicate claim rate、wrong supersession rate、citation validity、human edit distance。先重放历史 session,只产出 proposal 不写主库。 **生命周期**:先测 supersession,不急着测遗忘曲线。旧 bug 和旧 ADR 未必该忘——它们是避免重复踩坑的线索。 ## 社区工程评审 - **luancaarvalho**:扩展问题 → index 200-500 文档撑不住,agentmemory 用三路 + RRF,LongMemEval-S 95.2% R@5 - **webmaven**:书籍级 ingestion 瓶颈在 chunking + observation 生成 + 图谱抽取成本 - **gnusupport**:confidence 没定义、auto-crystallization 没算法、hybrid search 没 latency metric、multi-agent 缺 ACL/versioning/provenance → 方向可以借,计划不能照抄 - **ghost**:schema 做好 → ingest 时过滤;numeric confidence 有伪精确风险;主张 supersession 代替 decay、git 做 audit、manual before automated 生态线索:Memex(daily captures → P.A.R.A.)、ctx(skills/agents 知识图谱 → Claude Code 推荐)、ChristopherA(named edges: `derived_from::[Source]`) ## 演进方向 1. **evidence contract**:claim 稳定 id + 来源边 + 替代链接 + 证据链展示 2. **segmentation**:个人偏好/项目事实/团队决策/临时任务/研究材料分 schema,生命周期和权限不同 3. **Agent context operating system**:session start 加载 → tool use 记录 → 任务结束沉淀 → 多 Agent 共享 ## 深度分析 ### 从"编译一次"到"持续维护"的知识系统演进 Karpathy 原版 LLM Wiki 的核心洞察是"RAG 每次重算,Wiki 会累积"——让 LLM 把原始材料编译成结构化 wiki,后续查询直接读 wiki 而非重走 RAG 管线。V2 的贡献在于识别出这个模式的长期衰减问题:知识会过期、链接会断裂、搜索会变慢、自动化会引入噪声。这不是推翻原版,而是为原版的"复利"承诺加上"防烂"机制。 ### 证据链 vs 裸置信度数字的设计权衡 V2 提出 confidence 字段,但社区评审(gnusupport、ghost)指出裸数字(如 0.85)有"伪精确风险"。更好的设计是证据链:每条 claim 关联到具体来源(ADR、commit、session、文章),附带最近确认时间和替代链接。这与 Hermes wiki 已有的 `provenance_state` 和 `` 引用模式不谋而合。 ### 混合检索的"此刻相关"与"结构相关"二分法 BM25 + 向量搜索负责"此刻相关"(当前查询的语义匹配),图遍历负责"结构相关"(影响链、依赖关系)。这个二分法是 V2 检索设计的核心洞察。实践中,大部分查询只需要"此刻相关",只有影响分析类查询需要图遍历。这意味着图检索层可以按需加载,不必每次都跑。 ### 写入门控是知识系统可靠性的关键 V2 的写入门控设计(低风险自动提交、高风险人工审核)解决了知识系统的核心矛盾:自动化带来效率,但也带来污染风险。ghost 的评论指出"event-driven auto-ingest 默认 LLM 可靠,在生产里很危险"。Proposal-first 模式(Agent 生成 diff,人工审核后写入)是平衡效率与安全的工程选择。 ### 评估应围绕决策而非功能覆盖 V2 的评估方法论强调"围绕决策做"而非"功能全覆盖"。BM25、向量、图谱、confidence、decay、hooks、lint 全做一遍,demo 很热闹但真实任务不一定更好。正确的评估方式:先重放历史 session,只产出 proposal 不写主库,通过后再开放低风险自动写。这与软件工程中的"先测试再上线"原则一致。 ## 实践启示 1. **知识系统应从原版开始,按需加 V2 模块**:先证据链 → 再 supersession → 再检索融合 → 再 proposal-first automation。每一步都要能回答"少解释了吗、找得更准了吗、过期答案少了吗" 2. **confidence 应做成证据链而非裸数字**:每条 claim 关联到具体来源,附带最近确认时间和替代链接。避免"伪精确"带来的虚假权威感 3. **图检索按需加载**:大部分查询只需要 BM25 + 向量搜索,只有影响分析类查询需要图遍历。不要为了完整性而每次都跑全量图检索 4. **写入门控比自动化更重要**:低风险 append 可以自动提交,但 contradiction、supersession、批量删除必须人工审核。Proposal-first 是安全与效率的平衡点 5. **评估基准应围绕决策质量**:测 Recall@5、MRR、unsupported claim rate、human edit distance,而非功能覆盖率 ## 相关链接 - → [Karpathy LLM Wiki V2 中文概述](https://github.com/QianJinGuo/wiki/blob/main/entities/karpathy-llm-wiki-v2-2026.md) — 原版入门 - → [LLM Wiki 范式](https://github.com/QianJinGuo/wiki/blob/main/concepts/llm-wiki-paradigm.md) — 概念定义 - → [知识图谱 RAG](https://github.com/QianJinGuo/wiki/blob/main/concepts/knowledge-graph-rag.md) — 图检索方法论 - → [LLM Wiki 架构哲学](https://github.com/QianJinGuo/wiki/blob/main/entities/llm-wiki-architecture.md) - → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/karpathy-llm-wiki-v2-deep-analysis-rohit-ghumare.md) --- ## Ch10.018 MRAgent:记忆是重建的,不是检索的 > 📊 Level ⭐⭐ | 10.8KB | `entities/mragent-memory-reconstructed-not-retrieved-nus-icml2026.md` # MRAgent:记忆是重建的,不是检索的 新加坡国立大学(NUS)在 ICML 2026 提出 MRAgent,核心主张:**记忆访问应该跟着推理一起走**——每发现一条新证据,就改一次下一步要查什么。在 LoCoMo 上整体得分相对最强基线提升 23%,LongMemEval 提升 32%,Token 消耗仅 A-Mem 的 1/5。 → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/mragent-memory-reconstructed-not-retrieved-nus-icml2026.md) ## 范式切换:被动检索 → 主动重建 现有记忆方案两条路,各有死胡同: **相似度检索**(MemoryBank、Mem0):检索方向完全由查询决定,推理过程中无法调整。跨人物、跨时间线的 multi-hop 查询无法处理。 **图结构检索**(A-Mem、Zep):沿预定义 k-hop 扩展,但扩展路径预先固定——无法根据中间证据动态剪枝或转向。 MRAgent 的核心主张:**检索应该跟着推理一起走**——每发现一条新证据,就改一次下一步要查什么。 认知神经科学基础:回忆更像按线索一点点「拼」出来,不是打开仓库把整段记忆原样读走。 ## Cue-Tag-Content 关联记忆图 记忆被建模为异构图 M = (C, V, R): - **Cue(线索)**:细粒度关键词(实体名、属性、时间标记) - **Content(内容)**:具体记忆条目 - **Tag(标签)**:连接 Cue 与 Content 的语义桥梁 三者通过三元组 (c, g, v) ∈ R 相连。Tag 在访问昂贵的 episodic 内容之前,先提供语义导航——避免在大图上做无约束的 k-hop 扩展导致组合爆炸。 先通过 Cue 激活候选 Tag,再基于选定的 Tag 检索 Content——把关联推理和内容检索解耦。 → [Agent 记忆系统框架](https://github.com/QianJinGuo/wiki/blob/main/concepts/agent-memory-systematic-framework.md) ## 多粒度记忆层 | 记忆层 | 存储内容 | 典型用途 | |--------|----------|----------| | Episodic(情景) | 特定时间点的具体事件 | 时间推理、事件回溯 | | Semantic(语义) | 稳定的个人属性、偏好、事实 | 跳过冗长历史直达目标知识 | | Topic(主题) | 跨多个 episode 的抽象模式 | 自顶向下定位相关事件簇 | 情景记忆沿统一时间线组织,支持时间约束;语义记忆通过 aspect-level Tag 锚定到实体线索;主题层提供自顶向下的跳转。 构建阶段保持轻量,复杂关系推理推迟到检索阶段按需执行。 → [Agent Memory 架构](https://github.com/QianJinGuo/wiki/blob/main/entities/agent-memory-architecture.md) ## 主动重建算法 维护显式重建状态: - **Z^(t)(活跃集)**:当前步骤待探索的 Cue、Tag、Content 候选 - **H^(t)(重建上下文)**:前几步累积的证据 **三类遍历动作:** 1. 前向遍历:沿 Cue→Tag→Content 方向扩展 2. 反向遍历:从已检索的 Content 反向激活新的 Cue 和 Tag,根据中间证据调整探索方向 **每轮三步走:** 1. LLM 推理与动作选择 2. 受控图遍历 3. LLM 路由与状态更新(剪枝无关分支) 循环持续直到 LLM 判定证据充分,或进一步探索不太可能带来新信息。 ## 理论保证 **定理:** 主动检索的表达能力严格强于被动检索。主动检索能学到被动检索能学的任何函数,反之则不成立。 这不是空喊口号——论文给出了近似理论角度的形式化证明。 ## 实验结果 ### LoCoMo(Claude 骨干) | 问题类型 | 最强基线 J | MRAgent J | 提升 | |----------|-----------|-----------|------| | Multi-hop | 75.88 (Mem0) | 90.19 | +18.9% | | Temporal | 80.68 (LangMem) | 85.34 | +5.8% | | Open Domain | 56.25 (Mem0) | 71.57 | +27.2% | | Single hop | 83.12 (LangMem) | 91.10 | +9.6% | Gemini 骨干下 Overall 相对提升 23.3%。 ### LongMemEval Overall 相对最强基线提升 32%。Multi-Session 从 56.39 跳到 68.42,Temporal 从 45.71 跳到 68.42。 ### Token 效率 | 方法 | Token 消耗 | 运行时(s) | |------|-----------|-----------| | A-Mem | 632k | 1,122 | | LangMem | 3,268k | 1,210 | | Mem0 | 245k | 533 | | **MRAgent** | **118k** | **586** | MRAgent Token 消耗仅 118k——不到 A-Mem 的 1/5,不到 LangMem 的 1/27。运行时与最快的 Mem0 基本持平。 效率来源:构建阶段保持轻量,复杂推理推迟到检索阶段按需执行;Tag 在访问 episodic 内容前提供语义导航,提前剪枝无关路径。 ## 消融与多轮推理 - 光有 CTC 图结构但关闭主动推理,性能明显回落——图建得再好,不让 LLM 在上面走几步,multi-hop 照样拼不齐 - Multi-hop 查询:迭代探索带来超过 30% 的召回提升 - 增加并行检索预算无法替代更深的重建深度——记忆推理本质是序列依赖的 - LLM 能有效判断何时继续搜索、何时停止,避免冗余探索 ## 局限与问号 - 多轮 LLM 调用在极端低延迟场景能不能扛住? - 构建阶段的 LLM 蒸馏一旦抽错 Tag,下游会不会一路带偏? - LoCoMo 和 LongMemEval 上证据充分,生产环境对话分布更脏更乱 ## 深度分析 ### 从"存储-检索"到"构建-重建"的范式跃迁 MRAgent 的核心贡献不是又一个更好的检索算法,而是对记忆访问范式的重新定义。传统方案(无论向量检索还是图检索)都假设记忆是"存好的等你来取",而 MRAgent 认为记忆是"根据当前推理状态临时拼装的"。这与认知神经科学的发现一致:人类回忆不是从硬盘读文件,而是根据线索一点点重建场景。 ### Tag 中介层解决了图检索的组合爆炸问题 纯向量检索太扁(无法 multi-hop),全量 k-hop 图扩展又太重(组合爆炸)。Cue-Tag-Content 三层结构中,Tag 作为语义桥梁,在访问昂贵的 episodic 内容之前先做粗筛——这相当于给图遍历加了一个"路由层"。Tag 够轻能做快速语义路由,又够结构化能支撑 multi-hop 遍历。 ### Token 效率的结构性来源 MRAgent 的 118k Token vs A-Mem 的 632k,并非来自"更聪明的检索",而是来自架构设计:构建阶段保持轻量(只提取 Cue 和 Tag),复杂关系推理推迟到检索阶段按需执行。这意味着大部分记忆条目永远不会被完整加载——只有被 Tag 路由到的 Content 才会消耗 Token。这种"按需加载"模式对 Agent 记忆系统的工程实现有直接指导意义。 ### 主动重建的理论保证不是空话 论文给出了形式化证明:主动检索的表达能力严格强于被动检索。这不是经验性的"我们跑了个实验还不错",而是从近似理论角度证明了 H_active(T) ⊃ H_passive(T)。这意味着无论被动检索算法怎么优化,都无法达到主动检索的上限——两者的差距是结构性的,不是工程性的。 ### Multi-hop 痛点暴露了现有记忆系统的根本缺陷 Single-hop 涨幅温和(83→91),Multi-hop 跳幅巨大(75→90)。这说明现有记忆系统的真正短板不在"找到一条相关记录",而在"通过推理发现下一步该查什么"。对于 Agent Harness 工程师来说,这意味着记忆系统的设计重心应该从"检索精度"转向"推理-检索联动"。 ## 实践启示 1. **Agent 记忆系统应采用"构建轻量+检索按需"架构**:在记忆写入时只提取 Cue 和 Tag,复杂推理推迟到查询阶段。这能将 Token 消耗降低 5 倍以上 2. **Tag 层是图记忆系统的关键创新点**:设计记忆系统时,不要直接从原始内容跳到检索,中间需要一个语义路由层(Tag)来控制图遍历的组合爆炸 3. **Multi-hop 推理能力应成为记忆系统评测的核心指标**:Single-hop 测试无法暴露记忆系统的真正短板,评测基准应重点考察跨时间线、跨实体的推理能力 4. **多轮 LLM 调用的延迟需要在架构层面权衡**:MRAgent 的精度优势来自多轮推理,但每轮都是一次 LLM 调用。在低延迟场景需要考虑并行探索或缓存策略 5. **关注构建阶段 Tag 提取的鲁棒性**:如果 Tag 提取出错,下游整个重建链路都会被带偏。需要投入 Tag 质量的监控和纠错机制 ## 相关链接 - 论文:https://arxiv.org/abs/2606.06036 - GitHub:https://github.com/Ji-shuo/MRAgent - → [Agent Memory 架构](https://github.com/QianJinGuo/wiki/blob/main/entities/agent-memory-architecture.md) — 记忆系统设计模式 - → [Agent Memory 模块化框架](https://github.com/QianJinGuo/wiki/blob/main/entities/agent-memory-modular-framework.md) — ICLR 2026 评测基准 - → [Mem0:Agent Harness 记忆现状](https://github.com/QianJinGuo/wiki/blob/main/entities/state-of-memory-in-agent-harness-mem0-2026.md) — Mem0 等基线对比 - → [Agent 记忆生命周期](https://github.com/QianJinGuo/wiki/blob/main/concepts/agent-memory-lifecycle-philosophies.md) - → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/mragent-memory-reconstructed-not-retrieved-nus-icml2026.md) --- ## Ch10.019 花费 2 个星期写了 8 篇 OpenClaw 源码拆解文章,我发现90% 的人对龙虾的理解都太表面了,深层次的真相竟然是这个 > 📊 Level ⭐⭐ | 9.0KB | `entities/tcjndrk4frmumngmboih-w.md` AI 时代,有两种行为:
一种,活在别人的评测里,把模型的强当自己的强,痴人说梦;
另一种,活在真实的实战里,用最顶级的 AI,武装自己。
前者在噪音里坐享"技术平权",后者在 疼痛中完成"自我进化"。
## 相关实体 - [Pgpkc04Xff7Ilmdb9Vocnq](https://github.com/QianJinGuo/wiki/blob/main/entities/pgpkc04xff7ilmdb9vocnq.md) - [Google Workspace Updates Small Businesses Can Now Import Use](https://github.com/QianJinGuo/wiki/blob/main/entities/google-workspace-updates-small-businesses-can-now-import-use.md) - [New And Improved Agent Governance Intelligent Workflows Connected App Exp](https://github.com/QianJinGuo/wiki/blob/main/entities/new-and-improved-agent-governance-intelligent-workflows-connected-app-exp.md) - [Skillopt](https://github.com/QianJinGuo/wiki/blob/main/entities/skillopt.md) - [Two Harness Papers Microsoft Google](https://github.com/QianJinGuo/wiki/blob/main/entities/two-harness-papers-microsoft-google.md) → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/tCjNDrk4fRMUmngmbOih-w.md) ## 深度分析 OpenClaw 的 Gateway 架构揭示了一个在 2026 年分布式系统风潮中被严重低估的设计哲学:单进程、有状态的消息枢纽。Gateway 处理 Telegram、微信、飞书、Discord 等 20+ 平台的消息,串行经过 6 阶段流水线(接收 → 排队 → 锁定 → 调模型 → 执行工具 → 回复),出去时已是统一格式 。作者的核心洞察是:产品定位决定架构选择。在一个人人都追求分布式的时代,OpenClaw 证明了单进程架构的合理性——有状态意味着消息不会被并发处理两次,崩溃恢复仅需 JSONL 文件即可完成 。这种设计的权衡(无法水平扩展 vs. 实现简单、可靠性高)对于个人开发者或小团队产品而言,是完全合理的工程选择。这对整个行业关于"AI Native 架构应该如何设计"的讨论提出了重要反驳:架构服务于产品市场定位,而非技术理想。 OpenClaw 的 Agent 人格系统(SOUL.md + AGENTS.md + USER.md + MEMORY.md)是源码分析中最反直觉的发现之一。Agent 的"宪法"是纯 Markdown 文件而非代码,且 Agent 可以修改自己的 SOUL.md,但必须告知用户 。人格外部化为可编辑文件,意味着行为完全可审计、可 git diff、可多人协作——这是企业合规和可解释性需求的一个精妙的技术解法 。作者指出的深层含义是:当 Agent 的"灵魂"可以像代码一样被版本化管理时,AI Agent 的治理才真正成为可能,而这在 system prompt 驱动的架构中是无法实现的。然而,这一设计的反面是:如果攻击者获得修改权限,可以通过改 SOUL.md 实现持久化攻击且对用户完全不可见 。 记忆系统的设计是整篇文章最具原创性的分析贡献。OpenClaw 的记忆不是传统 RAG(向量数据库检索),而是"Memory as Documentation":所有记忆以 Markdown 文件写入,SQLite 只是加速层,存储向量索引和 BM25 倒排索引 。这个设计的关键洞察在于:记忆不是"机器的数据库",而是"人机共享的文档资产",Git 版本化、grep 搜索、人类直接阅读这些特性使得记忆的可维护性和可审计性大幅提升 。混合检索公式 `finalScore = 0.7 × vectorScore + 0.3 × textScore` 用 union 而非 intersection,且嵌入模型有 6 级降级链(本地 GGUF → OpenAI → BM25-only),保证了在模型可用性波动时的鲁棒性 。这一设计对 RAG 架构的实践者提出了重要问题:我们是否过度依赖向量检索,而忽视了文本检索在某些场景下的互补价值? 工具系统(4 个原语 Read/Write/Edit/Bash + 6 层安全策略)和 Skills 系统(SKILL.md 纯文档,无 .js/.py)的设计哲学高度一致:最小化新抽象,最大化利用已有生态。OpenClaw 43 万行 TypeScript 代码中,没有发明任何新的编程语言、协议或框架 。Unix 命令行管道成本约 $0.001,而同等任务的 LLM 推理链成本 $0.15-0.50——这说明工具选择的性价比差异巨大 。然而,这一设计哲学的代价也是巨大的:13.5 万个暴露在公网上的实例,78% 未打补丁,ClawHub 上 26% 的 Skills 含漏洞,这是为一个"本地单用户设计的产品被推到互联网"之后必然付出的安全代价 。 OpenClaw 的多 Agent 编排采用非阻塞子 Agent 生成 + 30 分钟心跳巡检机制:便宜模型(Gemini Flash,~$0.005/天)做日常检查,只在发现问题时触发贵模型 。这将 Agent 从"被动应答"转变为"主动巡检",且将 AI 运营成本压缩到极低水平。更值得关注的是社区对嵌套生成的硬编码禁止:递归 Agent 被视为"失控的开始",这一设计约束对于构建可预测、可审计的 AI 系统具有普遍参考价值 。整体来看,OpenClaw 代表了一种独特的 AI Agent 架构路径:最大化利用现有生态、最小化新抽象、快速验证产品市场契合——而非从一开始就构建一个"完美"的分布式系统。 ## 实践启示 - **Gateway 只做协议归一化,AI 逻辑交给专门框架**:OpenClaw 将消息流处理(Gateway)与 AI 推理(Pi Agent 框架)分离,Gateway 的职责被刻意保持简单(仅做协议翻译),而 AI 能力由专门的 Agent 框架负责。这种关注点分离使得系统的两部分都可以独立演进和优化 。 - **Memory as Documentation 而非 Memory as Database**:在构建 AI Agent 记忆系统时,优先考虑可读性(Markdown)和可审计性(git 版本化),而非一味追求检索速度。将 SQLite/向量数据库降级为"加速层"而非"主存储",可以让记忆系统同时服务于人和机器,降低维护和合规成本 。 - **AI Agent 的运营成本控制需要系统性设计**:OpenClaw 的 30 分钟心跳机制(便宜模型巡检 + 问题触发贵模型)是一个将成本控制内嵌到架构设计的优秀范例。在构建多 Agent 系统时,应从一开始就设计明确的成本分诊机制,而非事后优化 。 - **工具链选型时优先考虑 Unix 生态的性价比**:Bash 管道 $0.001 vs LLM 推理链 $0.15-0.50 的成本差异说明,在构建 AI Agent 时,应当优先识别哪些子任务可以被传统命令行工具处理(低延迟、低成本),哪些必须由 LLM 处理(高推理需求)。这种异构工具链设计是降低 AI 应用运营成本的关键杠杆 。 - **开放互联网部署的 AI 产品必须从第一天设计安全边界**:OpenClaw 的安全漏洞(26% Skills 含漏洞、78% 实例未打补丁)根源于其"个人工具"到"互联网产品"的演进过程中安全模型未同步升级。构建 AI Agent 产品时,必须将沙盒、分层权限和最小权限原则作为架构约束而非事后补丁 。 --- ## Ch10.020 WWW 2026 | RAG黑箱被打开!OpenDecoder把文档质量写进解码 > 📊 Level ⭐⭐ | 8.7KB | `entities/www-2026-rag黑箱被打开opendecoder把文档质量写进解码.md` # WWW 2026 | RAG黑箱被打开!OpenDecoder把文档质量写进解码 ## 摘要 传统 RAG 系统将检索到的文档作为提示词喂给大模型,但大模型的 Attention 机制无法区分文档质量——好文档和垃圾噪音被同等对待。加拿大蒙特利尔大学等机构提出的 OpenDecoder 打破了这一黑箱,在解码(Decoding)阶段利用检索文档的外部质量指标(如相关性得分、重排得分、QPP 查询性能预测得分)主动调整模型的注意力分布。实验在 NQ、TriviaQA、HotpotQA 等五大基准上显著超越 Vanilla RAG 基线,在高噪音环境下展现出鲁棒的噪声容忍度。 ## 核心要点 - **核心洞察**:传统 RAG 将 LLM 视为黑箱,模型无法区分检索文档的相关性和有效性,导致"垃圾塞入,垃圾产出" - **OpenDecoder 的方案**:在解码阶段(而非提示工程阶段)通过外部文档质量信号干预 Attention 概率分布,让模型更关注相关文档、忽略噪音 - **极端保障**:当检索结果全是噪音时,OpenDecoder 引导模型忽略外部上下文,100% 依赖参数化知识(Parametric Knowledge) - **灵活扩展**:未来可接入可信度、权威度、安全性等更多外部指标,不局限于相关性得分 - **计算高效**:离线训练和在线推理的计算复杂度与传统 SFT 完全一致,无需多步 Prompt 过滤 ## 深度分析 ### 1. RAG 的盲区:大模型成了"睁眼瞎" 当前的 RAG 系统普遍有一个强假设:检索器找回来的文档都是有用的。然而,大模型把这些文档塞进 Prompt 后,其 Attention 机制完全是盲目的,根本不知道哪篇含金量高、哪篇是噪音。这导致两个严重问题: 1. **垃圾塞入,垃圾产出(GIGO)**:即使喂了一堆无关文档,LLM 也会硬着头皮"看完"并受到干扰,回答质量暴跌 2. **多步过滤太慢**:使用"LLM-as-a-judge"先过滤再生成虽然能去噪,但多轮调用大模型导致延迟爆炸,无法落地工业级应用 这两个问题的本质在于:**检索质量信号(retriever 的 relevance score、reranker 的排序分数等)在送入 LLM 后就丢失了**,LLM 只能根据内部参数从头判断文档价值——既不可靠,也没有利用已经计算好的外部质量信号。 ### 2. OpenDecoder 的解码层干预 OpenDecoder 的核心创新在于:不依赖提示工程,而是直接在解码(Decoding)阶段动手。 具体来说,OpenDecoder 利用检索到的文档外部质量指标(如检索相关性得分、重排得分、QPP 查询性能预测得分)去主动干预和重塑大模型内部的 Attention 概率分布: - 当 OpenDecoder 发现某个文档的外部得分极低(噪音文档),它会在 token 级别直接调低大模型对该段文字的注意力权重 - 如果检索回来的全是垃圾信息,OpenDecoder 引导大模型忽略外部上下文,转而 100% 信任参数化知识,给出最稳妥的回答 这种"外部信号 → 内部 Attention 分布"的桥接机制,本质上是将检索阶段的质量信息保留到生成阶段,打通了"检索-生成"之间的信息断点。 ### 3. 实验结果:噪声容忍度的显著提升 OpenDecoder 在 NQ、TriviaQA、PopQA(通用问答)以及 HotpotQA、2WikiMultiHopQA(复杂多跳推理问答)五大权威基准上测试: - **常规环境**:显著超越 Vanilla RAG 及各种强基线 - **高噪音环境**:即使故意在检索结果中掺入大量局部相关或完全无关的文档,OpenDecoder 依旧表现出色的噪声容忍度 - **极端失效场景**:检索彻底失败(全是噪音)时,OpenDecoder 仍能保持高准确率,不会因错误上下文而"精神失常" 这表明:**直接介入 LLM 的内部机制比单纯依赖提示工程更鲁棒**——我们无法期望 LLM 的隐式识别(Implicit Identification)在任何情况下都保持准确。 ### 4. 对 RAG 架构范式的启示 OpenDecoder 代表了一种重要的范式转变:从"外部丰富上下文"转向"内部质量感知解码"。传统 RAG 架构的演进路径是: 1. **朴素 RAG**:检索 + 拼接 Prompt → LLM 生成 2. **RAG + 过滤**:检索 → LLM-as-judge 过滤 → 拼接 Prompt → LLM 生成 3. **RAG + OpenDecoder**:检索 → 外部质量评分 → **解码层 Attention 干预** → LLM 生成 第三步的核心优势在于:无需额外的 LLM 调用开销,即可让模型感知文档质量。这种方法不局限于相关性得分——未来可以接入可信度、权威度、安全性、时效性等任何外部指标,将 RAG 从"相关性检索"升级为"质量感知检索"。 ## 实践启示 1. **不把 LLM 当黑箱**:将外部质量信号注入解码阶段比在 Prompt 层面做文章更高效。对于构建生产级 RAG 系统的团队,关注解码层干预比堆砌提示词更值得投入 2. **计算效率是关键考量**:OpenDecoder 的计算复杂度与传统 SFT 一致,无需多步 Prompt 过滤,非常适合延迟敏感的工业级应用 3. **多维度质量信号的潜力**:未来 RAG 系统不应只利用相关性得分,还应整合可信度、权威度(如 PubMed 的认证来源)、时效性(如新闻的发布时间)和安全检测分数等 4. **"参数化知识兜底"很重要**:当检索质量极差时,模型能退回到自己的参数化知识——这一兜底机制在实际部署中至关重要,尤其是在检索覆盖面有限的中文和垂直领域场景 5. **可与现有 RAG pipeline 集成**:OpenDecoder 通过后训练(Post-Training)阶段整合质量指标,可以嵌入到现有的 [AI 友好后端标准](https://github.com/QianJinGuo/wiki/blob/main/entities/backend-ai-friendly-standards-path-alitech.md) 中的 RAG pipeline 内 ## 相关实体 - [生产级 Agent 框架](https://github.com/QianJinGuo/wiki/blob/main/entities/production-grade-agent-framework-yexiaochai.md) - [Mem0 vs WorkBuddy Agent 记忆层](https://github.com/QianJinGuo/wiki/blob/main/entities/mem0-vs-workbuddyagent-记忆层的两条路线谁才是终极答案.md) - [LLM 语义聚类与标签体系](https://github.com/QianJinGuo/wiki/blob/main/entities/llm-semantic-clustering-voc-tag-hierarchy-pipeline.md) - [Agent Harness 钉钉招聘](https://github.com/QianJinGuo/wiki/blob/main/entities/agent-harness-dingtalk-recruitment.md) → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/www-2026-rag黑箱被打开opendecoder把文档质量写进解码.md) --- ## Ch10.021 Instacart 广告检索架构演进:从 BERT 打分到生成式 token-by-token 检索 > 📊 Level ⭐⭐ | 8.2KB | `entities/instacart-ads-retrieval-generative-token-by-token.md` # Instacart 广告检索架构演进:从 BERT 打分到生成式 token-by-token 检索 ## 摘要 Instacart 详细阐述了其广告检索系统从传统 BERT 序列打分模型(Contextual Recommendations, CR)到生成式检索(token-by-token 生成产品 ID)的完整架构重构。这一迁移源于三大瓶颈:词汇表限制、冷启动偏差和结构漂移。新方案受 TIGER(Google DeepMind)启发,将产品 ID 编码为语义 token 序列,模型直接自回归生成相关产品,而非对候选集逐一打分。这是大规模生产系统中 generative retrieval 的真实工程案例,与 Spotify GLIDE/NEO、YouTube PLUM 等业界实践形成对照。 ## 核心要点 ### 旧方案:BERT 打分模型(Contextual Recommendations) Instacart 的 CR 系统将杂货购物视为语言建模任务:原子产品 ID 作为 token,目录子集作为「词汇表」。用户实时会话(浏览、访问商品页、加入购物车)构成产品 token 序列,BERT 类 Transformer 在数百万真实购物会话上训练,预测序列中的下一个 token。这一单层检索同时驱动广告和有机推荐,覆盖所有主要浏览界面。 ### 三大瓶颈 **1. 词汇表瓶颈**(Vocabulary Bottleneck) CR 模型依赖原子产品 ID 作为独立 token,这定义了模型能理解和预测的边界。扩大词汇表虽然增强了上下文理解能力,但同时带来:模型体积和延迟增加、低频商品数据稀疏、目录非平稳性(新产品不断上架导致覆盖缺口持续扩大)。仅靠词汇表扩展无法覆盖目录全貌,特别是专业零售商的特色产品。 **2. 冷启动障碍**(Cold Start Hurdle) 训练数据基于历史购物会话的产品 ID 序列,导致模型倾向于记忆共现关系而非学习基于用户意图的泛化关联。结果是高频商品被过度推荐,而更符合当前上下文的新品牌被忽视。例如用户正在组建烧烤购物车(牛肉饼+汉堡包+生菜),系统倾向于推荐通用杂货(牛奶)而非更符合意图的新品牌调味品(芥末酱)。 **3. 结构漂移**(Structural Drift) 模型通过在整个产品 ID 词汇表上预测概率分布来生成候选集,缺乏内置层级结构来保持推荐聚焦。这导致偶尔出现不协调的商品组合——例如早餐主题购物车(牛奶+鸡蛋+麦片)的推荐中混入洗衣液。如果后续排序模型对这些异常产品校准不当,不协调推荐就会被推送到用户面前。 ### 新方案:生成式检索 受 TIGER(Google DeepMind, NeurIPS 2023)启发,Instacart 转向生成式检索范式:**模型不再对预定义候选集打分,而是直接生成下一个相关产品的语义 token**。这一范式已被 Spotify(GLIDE、NEO)和 YouTube(PLUM)在生产环境中采用。 但 Instacart 的场景有独特挑战: - **意图多样性**:不同于音乐或视频平台的窄意图,Instacart 用户常在单次会话中管理高度多样的购物清单(从生鲜到清洁用品到宠物护理) - **意图漂移**:用户在购物过程中意图会动态变化 - **多零售商**:用户跨多个零售商购物,每个零售商有独立的产品目录 这些挑战要求模型超越历史购买记录,同时考虑活跃购物会话的实时动态。 ## 深度分析 ### 从打分到生成:范式转换的本质 传统检索的「打分范式」本质上是一个判别式问题:给定查询和候选,输出相关性分数。其核心限制在于**候选集的构建先于相关性判断**——你只能从预定义的候选中选择,无法「创造」新的匹配。 生成式检索将问题翻转为生成式问题:给定上下文,直接输出目标产品的 token 序列。这带来了两个根本性变化: 1. **模型参数即索引**:不需要维护独立的向量索引或倒排索引,产品目录的知识编码在模型权重中。更新目录意味着微调模型,而非重建索引。 2. **无候选集限制**:理论上可以检索训练数据中出现过的任何产品,不受 ANN 搜索的近似约束。 ### 权衡与工程挑战 | 维度 | BERT 打分 | 生成式检索 | |------|----------|-----------| | 延迟特性 | 向量索引查找(O(log n) 或 O(1) ANN) | 自回归解码(O(seq_len)) | | 索引更新 | 重建索引 | 模型微调或增量学习 | | 可解释性 | 相对直接(相似度分数) | 需要额外机制 | | 新产品处理 | 添加向量即可 | 需要训练数据覆盖 | | 目录扩展性 | 索引规模线性增长 | 模型容量受限 | ### Instacart 场景的特殊性 杂货购物的独特性在于**意图的宽泛性和动态性**。用户可能同时在为晚餐、早餐和家庭清洁用品购物,且意图随购物车内容动态演变。这要求检索模型具备: - **多意图并行建模**:同时理解用户当前会话中的多个购物子任务 - **实时上下文敏感性**:购物车的每次变化都应影响后续推荐 - **跨零售商泛化**:同一意图在不同零售商目录下应映射到不同产品 这些需求使得简单的序列到序列迁移变得复杂,需要在产品 token 编码、上下文注入和训练策略上做大量定制化工作。 ### 与业界实践的对照 | 平台 | 方案 | 特点 | |------|------|------| | Google DeepMind | TIGER | 开创性工作,证明生成式检索可行性 | | Spotify | GLIDE/NEO | 音乐推荐,意图相对窄 | | YouTube | PLUM | 视频推荐,长序列挑战 | | Instacart | CR → Generative | 杂货购物,多意图+多零售商 | ## 实践启示 1. **架构迁移的触发条件**:当现有方案的三个以上结构性限制同时出现时(词汇表、冷启动、结构漂移),应考虑范式级重构而非渐进优化 2. **生成式检索的适用边界**:在候选集动态变化、意图多样、需要上下文敏感匹配的场景下,生成式检索比传统打分模型更有优势 3. **领域特化的重要性**:直接照搬 TIGER 等通用方案不足以应对杂货购物的独特挑战,需要在 token 编码、训练数据构建和推理策略上做深度领域适配 4. **渐进式迁移策略**:Instacart 保持了与旧系统的兼容性,在生产环境中逐步验证和切换,这种策略对大规模系统重构至关重要 ## 相关实体 - [RAG 与检索技术](https://github.com/QianJinGuo/wiki/blob/main/concepts/retrieval-augmented-generation-rag.md) - [From Silos To Service Topology Why Netflix Built A Real Time](https://github.com/QianJinGuo/wiki/blob/main/entities/from-silos-to-service-topology-why-netflix-built-a-real-time.md) → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/instacart-ads-retrieval-generative-token-by-token.md) --- ## Ch10.022 怎么短平快地把RAG做好:厦门国际银行数创金融杯RAG初赛方案 > 📊 Level ⭐⭐ | 8.0KB | `entities/xiamen-bank-rag-competition-financial-regulation-trustrag.md` ## 摘要 本文解读厦门国际银行第五届数创金融杯大模型应用挑战赛初赛方案:赛题为**金融监管制度智能问答**(经典 RAG),要求基于给定金融文档库,对不定项选择题和问答题生成"准确、合规"的答案;整体工程只能在受限硬件(CPU 8 核 / 32G 内存 / 24G 显存)下推理,以 A/B 榜评估、B 榜定名次。作者以 TrustRAG 框架为脚手架,在两周边际时间内冲刺、约 10 天冲入 top10,给出了一条"短平快"、效果够用的 RAG 落地路径。 → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/xiamen-bank-rag-competition-financial-regulation-trustrag.md) ## 核心要点 - 金融监管问答是高利害领域:答案须"准确、合规",既同幻觉作战,也同术语歧义作战,正确性直接关系合规判断。 - 采用七步经典流水线:文档加载解析 → 文本切块 → 混合检索重排 → 指令数据集构造 → 模型微调 → 推理 → 投票融合。 - 混合检索 BM25(权重 0.3)+ Dense(bge-m3 / bge-large-zh-v1.5,权重 0.7),Top-15 候选再经 BGE-reranker-large 精排;选择题把选项拼进查询辅助定位。 - 句子级切块(SentenceChunker)不割裂完整句子,256 的 chunk_size 在召回率实验中表现最佳,切块与文件元信息分离存储减少冗余。 - 微调补差距:Qwen3-8B/14B + QLoRA/LoRA,实测 8B 与 14B 分数接近、甚至 8B 更优——通用模型金融监管表现不够,需领域数据微调。 - 推理期以 temperature=0.0 贪心解码、max_new_tokens=512、batch_size=1 强化稳定性。 - 结果投票融合:选择题多数投票,问答题取语义相似度最高者。 - 作者结论:RAG 没有标准答案,考验的是面对不同任务灵活变通、基于成熟脚手架快速改造并"发现问题解决问题"的能力。 ## 深度分析 ### 金融监管约束下的 RAG:精确、可追溯、可审计 金融监管制度问答与泛化知识问答最大的分野在于约束强度。题目明确要求"生成准确、合规的答案"——准确意味着答案必须锚定文档原文而非模型记忆,合规意味着表述要符合监管语言与术语体系,两者共同把任务推向"拒绝模糊、拒绝编造"。这类约束沿着整条流水线传导:检索阶段需要高密度小 chunk 以保证命中,生成阶段需要"与文档原文精确对比、逐一验证"的强约束 prompt,数据阶段则需要把文件名、token 长度、是否含表格等元信息以 JSON/映射表结构化保存,使每个答案都可回查到出处——这正是金融场景"可追溯、可审计"诉求在工程上的落地。表格在金融监管文档中的高价值也被显式处理:加载解析阶段即标记含表格文档,避免做 embedding 时丢失结构性关键信息(限额、比例、名单常藏在表格里)。 ### TrustRAG 框架:面向可信 RAG 的可复用脚手架 方案的技术底座是 gomate-community 的 TrustRAG 项目(DocxParser、SentenceChunker 等组件),代码几乎全部复用。这体现了作者"短平快"的核心方法论:不从头造轮子,而是站在可信 RAG 脚手架上做增量改造,把有限时间花在数据、prompt、融合这些真正决定分数的环节。一个值得注意的细节是用与问答模型同款的 Qwen3-8B tokenizer 统计文档 token 长度,以精准设计窗口大小、提高输入长度预算的利用效率——领域 token 数的经验值(大部分文档约 1600 token)让后续切块与上下文组织有据可依。 ### 检索与重排:混合信号与多配置融合 检索层采用混合检索补齐单一方法的短板:BM25 抓关键词的字面匹配,Dense 向量抓语义相关,以 0.3/0.7 加权融合召回 Top-15,再经 BGE-reranker-large 精排。更巧妙的是把"多配置"当作泛化手段:用 2 个 embedding 模型(bge-m3、bge-large-zh-v1.5)× 2 种 chunk_size(256、512)交叉组合,构造出彼此独立、各有偏好的检索-生成样本,为末端的投票融合铺底——不同配置在召回分布上互补,融合后整体稳健性显著提升。作者也坦承困难场景:答案可能跨多个 chunk 分布、相似内容过多导致排序靠后(如"双线报告"类题目)、以及部分问题无需检索即可由模型自身知识回答——识别并分类这些困难,是调优召回与切块的关键输入。 ### 高利害场景下的幻觉控制与推理稳定性 幻觉控制在高利害领域是叠加的、多层的防线,而非单点技术。第一层是检索质量(混合检索+重排+小 chunk 高信息密度),保证模型"有据可依";第二层是 prompt 约束(选择题"精准分析/逐一验证"+严格格式"A,C,D",问答题五步推理链:问题解构→信息检索→内容筛选→答案组织→答案优化,并要求规范金融监管术语);第三层是解码配置(temperature=0.0 贪心解码消除随机性);第四层是推理期投票融合,用多数投票与语义相似度做次级纠错。此外以领域数据微调 QLoRA 补齐通用模型在金融监管上的知识盲区——四个层次层层兜底,共同把高利害场景下"看起来合理但实为编造"的输出空间压到最小。 ## 实践启示 1. 领域 RAG 的性价比起点是"召回密度":句子级切块 + 小 chunk(256)+ 混合检索 + 重排,比追求大模型更立竿见影。 2. 把"可校验"写进 prompt:要求逐项对照原文、严格输出格式,既是工程约束更是廉价幻觉护栏。 3. 用"多配置融合"以廉价换稳健:不同 chunk×embedding 组合投票显著提升效果,且不增加推理期复杂度。 4. 受限硬件下 QLoRA 是务实选择,且 8B 常已够用——不必盲目追逐更大模型,把算力留给融合与迭代。 5. 高利害领域务必在数据层保留结构化元信息(文件名、token 数、表格标记、chunk→file 映射),为可追溯和审计留下后路。 6. 不要从零造轮子:基于成熟可信 RAG 脚手架(如 TrustRAG)快速改造,把时间花在识别困难案例和调试上,是"短平快做好"的关键。 ## 相关实体 - [RAG技术框架的演进方向](https://github.com/QianJinGuo/wiki/blob/main/entities/rag技术框架的演进方向.md) — Classic → Graph → Agentic RAG 演进路线,本文为其经典 RAG 打法提供实证对照 - [AFAC2026 金融 AI Agent 竞赛](https://github.com/QianJinGuo/wiki/blob/main/entities/afac2026-financial-ai-agent-competition-harness.md) — 另一金融 AI 竞赛方案,可对比"RAG 问答"与"Agent 编排"两条路线 - [RAG 分块-嵌入-重排全链路](https://github.com/QianJinGuo/wiki/blob/main/entities/rag-chunk-embedding-rerank-pipeline.md) — 与本文混合检索+重排设计互补的管道细节 - [Stripe 金融合规 AI Agent 实践](https://github.com/QianJinGuo/wiki/blob/main/entities/stripe-financial-compliance-ai-agent-production-lessons.md) — 同为金融合规场景,可从生产侧视角印证本文的可追溯、可审计原则 --- ## Ch10.023 知识库构建方法论 > 📊 Level ⭐⭐ | 7.9KB | `entities/knowledge-base-construction.md` # 知识库构建方法论 ## 摘要 知识库构建方法论是连接"原始采集"与"结构化知识资产"的工程体系,覆盖入库评分、溯源标注、实体综合、交叉链接、质量控制与自动化管线六个环节。其核心命题是:知识库的效果上限不取决于检索算法,而取决于入库质量与知识结构设计。方法论沿 RAG 平铺检索 → LLM Wiki 编译沉淀 → 分层/图谱知识库演进,实践中以混合架构取胜。 ## 核心要点 - **入库评分前置**:以 review_value × review_confidence 的乘积对候选素材打分排序,低分素材不进入知识库,从源头控制质量 - **溯源标注是可信度基石**:每条综合内容携带 source_url、sha256 与 line-range 引用,让知识可回溯、可审计 - **三层结构**:raw 素材层 → entities/concepts 综合层 → schema/index 治理层 - **流水线模式**:Triage → Gate → Store → Evolve 四阶段,把"读-判-存-养"固化为可重复执行的流程 - **交叉链接即知识图谱**:wikilink 密度决定图谱连通性,broken-link 检测与 lint 是持续质量闸门 - **自动化采集**:RSS、newsletter、微信公众号等管道自动入库,人工只保留 Gate 把关权 - **分层优于平铺**:Pyramid KB 证明按抽象层次组织知识可显著降低粒度混乱,混合方案 Hit@3 达 89% - **健康度可度量**:orphan rate、覆盖率、链接密度等指标把维护从凭感觉变成看数据 ## 深度分析 ### 一、入库评分与 Gate:质量在入口而非出口 入库评分(review_value × review_confidence 双维度打分)本质上是把"素材值不值得进库"的决策前置化。RAG 实践中一个反直觉的结论是相当比例的问题出在源文档质量而非检索链路——团队遇到效果不佳时先换 embedding 模型、调 TopK,但真实瓶颈往往是文档从一开始就没处理好,而入库决策具有不可逆性,后续调优无法补偿前序环节的错误。评分机制把质量判断从一次性人工决定变成可比较、可回看的流程:review_confidence 记录判断者的确信程度,低置信度素材即使有潜力也会被标记为待复核,而不是直接污染知识库。Gate 阶段的意义不仅是"过滤",更是"排队"——当采集量超过综合能力时,评分决定 LLM 优先处理哪些素材。该 wiki 自身的运行即是这一方法论的内化:每个实体页都携带 review_value/review_confidence 字段,把质量判断固化为可 lint 的结构化数据。 ### 二、溯源标注:从"AI 生成"到"可审计的知识资产" 知识库区别于普通文档库的核心能力是溯源:source_url 指向原始出处,sha256 保证素材内容未被篡改,line-range 引用把综合后的每个论断锚定到原文的具体位置。溯源的价值体现在三个层面:其一,可信度——内容冲突时可逐层下钻到原始素材裁决,这也是矛盾检测自动运行的前提;其二,维护——素材更新后通过 sha256 变化检测触发下游实体页的重新综合,形成变更驱动的更新链而非日历驱动的例行巡检;其三,审计——企业场景必须回答"这个结论凭什么这么说",line-range 引用让 AI 综合变成带脚注的论证。LLM Wiki 范式把溯源作为 Ingest 内置环节:综合页面必须携带引用标记,未标注来源的推断会被 lint 标记为 inferred,把"诚实标注不确定性"变成工程约束。溯源标注由此成为区分"AI 生成内容"与"可审计知识资产"的分界线。 ### 三、RAG 与结构化知识库:选型不是二选一 RAG 的优势是构建成本低、时效性高(灌一篇搜一篇),结构性缺陷则是无状态(相同问题被重复检索生成、知识无法跨查询累积)、粒度混乱(向量空间不区分抽象层次)、无法全局推理(Top-K 只能找最像的片段)。结构化知识库——LLM Wiki、知识图谱、分层知识库——把知识编译成有状态资产,查询时零边际综合成本,但 Ingest 阶段成本高,且 Schema 设计是高风险决策,出错后修正需要全量重编译。选型的真实维度是知识变更频率、查询量、术语密度与审计需求:高频变更走 RAG,稳定高查询量走 LLM Wiki,术语密集垂直领域需要实体页承载标准化定义。复杂场景则需混合:RAG 负责广覆盖召回,结构化层负责深度沉淀与关联。Pyramid KB 的实测提供了更精细的证据:分层路由 + 向量穿透的混合方案 Hit@3 达 89%,以 0+1 次 API 调用实现,说明"结构化导航 + 语义检索"的组合优于任何单一范式。 ### 四、健康度度量:知识库的可观测性与保鲜 知识库会持续腐烂:接口签名变了文档没更新(静默过期)、架构决策降级为历史背景却仍留在原层(层级漂移)、新服务上线数月但实现层完全没有它(覆盖盲区)。对抗腐烂需要可观测性——orphan rate(孤立页比例)反映交叉链接失效,覆盖率反映知识库对业务域的覆盖完整度,链接密度反映图谱连通性,lint 的 broken-link 检测把"链接坏了"从用户偶然发现变成 CI 阶段的自动发现。修复上审计驱动优于日历驱动:用覆盖率/新鲜度/图谱连通/层级平衡四类审计定位腐烂点,按变更触发局部重编译,使成本只与变化量相关。最终目标是把知识库从"构建时合格"推进到"持续合格"——健康度指标、自动化管道与保鲜机制三者缺一不可,这与阿里云直播数据 LLM Wiki 实践的"增量编译 + 持续 Lint 巡检"结论一致。 ## 实践启示 1. **把入库评分做成硬闸门**:为每个候选素材计算价值 × 置信度乘积,设定明确阈值,低于阈值不进库;低置信度素材单独标记待复核 2. **先治理源头文档,再调检索**:文档格式优先级 Markdown > Word > PDF > 扫描件;清洗水印、URL 等噪音优于更换 embedding 模型 3. **强制溯源标注**:综合页面每条论断锚定 line-range 引用,无法溯源的推断内容显式标记,用 lint 自动检查引用完整性与来源存在性 4. **用自动化管道降低采集成本**:RSS、newsletter、公众号管道负责采集与打分,人工只保留 Gate 决策权,把人的精力集中在判断而非搬运 5. **按知识特征选型而非追逐潮流**:高频变更用 RAG、稳定高查询量用 LLM Wiki、复杂分析用混合;用分层结构(实体/概念/素材三层或 Pyramid 五层)对抗粒度混乱 6. **把健康度变成指标**:定期统计 orphan rate、覆盖率、链接密度,按变更驱动修复,避免知识库"建完即腐烂" ## 相关实体 - [AI 导购在 vivo 官网的落地实践](https://github.com/QianJinGuo/wiki/blob/main/entities/vivo-ai-sales-guide-ecommerce-agent.md) - [Knowledge Base Layer Architecture: From RAG to Agent-native Knowledge Context Layer](https://github.com/QianJinGuo/wiki/blob/main/entities/pyramid-kb-knowledge-context-layer-banya.md) - [RAG vs LLM Wiki 深度对比:企业知识库架构选型指南](https://github.com/QianJinGuo/wiki/blob/main/entities/rag-vs-llm-wiki-enterprise-knowledge-base.md) - [AWS Bedrock AgentCore Equipment Repair Assistant — 农业机械 AI 诊断助手实战](https://github.com/QianJinGuo/wiki/blob/main/entities/aws-bedrock-agentcore-equipment-repair-assistant.md) - [RAG Chunk Embedding Rerank Pipeline](https://github.com/QianJinGuo/wiki/blob/main/entities/rag-chunk-embedding-rerank-pipeline.md) - [Karpathy LLM Wiki V2](https://github.com/QianJinGuo/wiki/blob/main/concepts/karpathy-llm-wiki-v2.md) — LLM Wiki 范式的方法论源头 - [Hermes Skills LLM Wiki 自进化知识系统](https://github.com/QianJinGuo/wiki/blob/main/entities/hermes-skills-llm-wiki-self-improving-knowledge-system.md) — 本 wiki 自身的流水线实现 - [向量库·知识图谱·本体论:RAG 知识系统演进](https://github.com/QianJinGuo/wiki/blob/main/entities/rag-vector-knowledge-graph-ontology.md) — 知识表示层的演进对照 - [RAG 知识检索 MOC](https://github.com/QianJinGuo/wiki/blob/main/moc/rag-knowledge-retrieval.md) — 主题地图导航 --- ## Ch10.024 Fragnesia: Linux Kernel Local Privilege Escalation via ESP-in-TCP > 📊 Level ⭐⭐ | 7.9KB | `entities/fragnesia-linux-kernel-local-privilege-escalation-via-esp-in-tcp.md` ## 漏洞概述 Fragnesia 由安全研究员 Hyunwoo Kim(DirtyFrag 原始发现者)披露,是 DirtyFrag 漏洞修补过程中的一个意外副作用。该漏洞影响 Linux 内核的 XFRM ESP-in-TCP 实现,允许非特权本地攻击者通过确定性页缓存污染原语修改内核页缓存中只读文件的内容,最终获取 root 权限。 ## 技术分析 ### 攻击向量与根本原因 漏洞根源在于 Linux XFRM ESP-in-TCP 实现中 **skb(socket buffer)合并时共享页片段处理不当**。具体攻击路径如下: 1. **阶段一:页片段植入**:攻击者先将文件支持页(file-backed pages)splice 到 TCP 接收队列,此时 socket 尚未切换到 `espintcp` ULP(Upper Layer Protocol)模式 2. **阶段二:模式切换与就地解密**:当 ESP 处理启用后,内核在原位(in-place)解密队列中的数据,利用 AES-GCM 密文流特性实现对底层页缓存的受控污染 3. **阶段三:单字节覆写**:攻击者通过精心构造的 ESP 安全关联(Security Association),反复触发对缓存文件页的单字节可控写入 ### exploit 利用链路 研究者演示的完整利用链包括: 1. 利用 user namespace 和 network namespace 在隔离命名空间内获取 `CAP_NET_ADMIN` 权限 2. 通过 `NETLINK_XFRM` 安装精心构造的 ESP 安全关联 3. 反复触发受控单字节写入,覆盖 `/usr/bin/su` 的开头字节,替换为调用 `setresuid(0,0,0)` 并执行 `/bin/sh` 的小型 ELF payload 4. 攻击仅修改页缓存内存中的二进制文件,不改变磁盘上的实际文件 ### 与 DirtyFrag 的关键差异 | 维度 | DirtyFrag | Fragnesia | |------|-----------|-----------| | 前置要求 | 需要 host 级特权 | 无 host 级特权要求 | | 命名空间 | 通常需要用户命名空间 | 通过 namespace 获取 `CAP_NET_ADMIN` 即可 | | 影响范围 | 更多的内核模块 | 主要影响 XFRM ESP-in-TCP | ### 缓解因素 - **AppArmor 限制**:Ubuntu 等发行版默认对非特权用户命名空间启用 AppArmor 限制,需要额外绕过才能成功利用 - **模块加载**:如果 `esp4`、`esp6`、`rxrpc` 模块未加载则不受影响 ## 深度分析 ### DirtyFrag 修补反模式:过度特化导致新漏洞 Fragnesia 的本质是 DirtyFrag 补丁的「修补反模式」——安全补丁在修复原始漏洞时引入了新的攻击面。原始 DirtyFrag 通过修改 `pipe_buf_get()` 引用计数逻辑堵住了漏洞,但这个修补策略在 ESP-in-TCP 的 skb 合并路径中产生了遗漏:AES-GCM 的密文流特性使得 in-place 解密操作天然地具有对底层页缓存的可控写入能力,而 DirtyFrag 的补丁没有考虑到这个特殊的解密路径。 ### 页缓存污染 vs 直接覆写:攻击原语的质量差异 Fragnesia 与传统内核提权漏洞的关键区别在于其攻击原语的特性:页缓存污染(而非直接磁盘覆写)具有两个独特的性质——**持久性条件**(攻击效果仅在内存中存在,重启后消失)和**范围限定性**(只影响已缓存的页帧)。这个特性反而成为攻击优势:攻击者可以「定向修改」内存中的 su 二进制文件,而不触发磁盘文件的完整性检测,同时通过后续利用管道或其他方式维持 root shell 的持续运行。 ### Namespace 隔离的边界:边界检查的局部有效性问题 Fragnesia 利用链的第一步依赖 user namespace 隔离来获取 `CAP_NET_ADMIN`,这揭示了一个 Linux namespace 安全模型的深层假设:边界检查在各自独立的 namespace 内部有效,但 namespace 之间的资源交互(特别是内核全局状态如页缓存)并不受 namespace 边界的保护。换言之,CAP_NET_ADMIN 在 isolated namespace 内部可以被用来执行影响 host 级页缓存的操作,这是 namespace 隔离模型的一个已知但常被忽视的安全边界。 ### IMA/EVM 作为最终防线:完整性测量的局限性 内核完整性子系统 IMA(Integrity Measurement Architecture)和 EVM(Extended Verification Module)提供了针对页缓存篡改的检测能力,但其有效性受到两个限制:测量的是文件系统层行为而非内存页缓存行为(攻击在页缓存层面发生,晚于 IMA 的测量点);在云环境和容器化部署中启用 IMA/EVM 的性能开销通常难以接受。这说明内核安全是一个多层纵深防御问题,不存在单一银弹解决方案。 ## 实践启示 ### 立即行动项 1. **模块禁用(临时缓解)**:如无需 ESP 功能,禁用相关内核模块: rmmod esp4 esp6 rxrpc
printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/fragnesia.conf
2. **用户命名空间限制**:在不影响业务的前提下,限制或禁用非特权用户命名空间 3. **补丁管理**:关注各 Linux 发行版提供的内核安全更新,及时应用 vendor 补丁 ### 检测与响应 - **监控指标**:可疑的 namespace 创建、XFRM 操作异常、AF_ALG 滥用 - **事件响应**:如怀疑已被利用,需重启系统或清除页缓存以移除内存中被篡改的二进制文件: echo 1 | tee /proc/sys/vm/drop_caches
### 纵深防御建议 - 内核安全模块(AppArmor/SELinux)应启用并配置最小权限原则 - 定期审计非特权用户是否具备 `CAP_NET_ADMIN` 能力 - 考虑使用内核完整性保护机制(如 IMA/EVM)检测页缓存篡改 ## 相关实体 - [Drinking Llms](https://github.com/QianJinGuo/wiki/blob/main/entities/drinking-llms.md) - [Agent Harness Architecture Design Production Guide](https://github.com/QianJinGuo/wiki/blob/main/entities/agent-harness-architecture-design-production-guide.md) - [Weve Been Here Before Ai Vulnerability Research](https://github.com/QianJinGuo/wiki/blob/main/entities/weve-been-here-before-ai-vulnerability-research.md) - [Microsoft Zero Days Researcher Disgruntled](https://github.com/QianJinGuo/wiki/blob/main/entities/microsoft-zero-days-researcher-disgruntled.md) - [5235705](https://github.com/QianJinGuo/wiki/blob/main/entities/5235705.md) --- ## Ch10.025 【实践教程】真实AI客服落地全流程:意图识别、混合检索到数据飞轮 > 📊 Level ⭐⭐ | 7.6KB | `entities/实践教程真实ai客服落地全流程意图识别混合检索到数据飞轮.md` # 【实践教程】真实AI客服落地全流程:意图识别、混合检索到数据飞轮 > AI训练营 ** 9期 ** , ** 今日 ** 开班,欢迎咨询 书接上文: [ 《实践:AI客服实战方法论》 ]() 之前我们详细介绍了 ** 空气小猪 AI 客服 ** 是如何一步步做出来的,但后续无论学员还是粉丝都依旧有很多的问题,所以最近几天我们在连续做 RAG 的课题。 今天的话,我们会上点更硬的货,会结合空气小猪这个案例,讲清楚我们如何从 0 到 1 搭建一套 AI 客服,包括: ## 相关实体 - [Rag技术框架的演进方向](https://github.com/QianJinGuo/wiki/blob/main/entities/rag技术框架的演进方向.md) - [Skill Rag Tsinghua Sra](https://github.com/QianJinGuo/wiki/blob/main/entities/skill-rag-tsinghua-sra.md) - [Harness Engineering Framework](https://github.com/QianJinGuo/wiki/blob/main/entities/harness-engineering-framework.md) - [Anthropic Claude Code Large Codebase Best Practices 50002A089323](https://github.com/QianJinGuo/wiki/blob/main/entities/anthropic-claude-code-large-codebase-best-practices-50002a089323.md) - [Aws Sagemaker Ai Agent Guided Workflows Finetuning](https://github.com/QianJinGuo/wiki/blob/main/entities/aws-sagemaker-ai-agent-guided-workflows-finetuning.md) → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/实践教程真实ai客服落地全流程意图识别混合检索到数据飞轮.md) ## 深度分析 **AI客服的本质是可控性优先的Workflow,而非自由发挥的Agent。** 文章明确指出"第一版采用更稳妥的Workflow方式",这个决策背后有深刻的工程考量:客服回答需要稳定、可解释、可复盘,不能让模型自由发挥。这与当前Agent狂热形成了有价值的对比——当行业都在追逐Agent autonomy时,这个案例表明在强一致性要求的业务场景下,显式控制的Workflow反而是更优解。Workflow牺牲了部分Agent的自主性,但换来了更强的确定性和更低的生产风险,这种"先追求稳定可控、再谈自主"的思路值得多数AI应用借鉴。 **意图识别是整个链路的守门人,分类粒度决定系统边界。** 从最初只分成"产品咨询"和"闲聊"两类,到最终扩展为三个一级意图(产品咨询、用户反馈、闲聊)并附带详细二级分类,这个迭代过程揭示了一个重要原则:用户问题是无限发散的,但系统必须有边界,边界由意图分类定义。二级意图的缺失是意图识别不准确的主要原因——标签太粗导致模型无法准确判断"这是什么类型的问题",进而导致后续检索和回答的全面失误。三级意图体系(带判断标准和示例)为每一类问题预设了处理路径,这是AI客服能够稳定交付的基础。 **混合检索+多路改写+Reranker的组合是客服场景的工程最优解。** 向量检索擅长语义相近但表达不同的问题,BM25擅长关键词明确命中,两者组合覆盖了用户问法的两个主要维度。多路问题改写进一步扩展了召回范围,RRF融合保证了不同检索方式结果的可比性,Reranker则基于相关度重新评分而非原始相似度——这套组合拳的核心洞见是:没有哪种单一检索能覆盖所有问法,但通过融合和重排可以让各类检索的结果都能发挥作用。最终的`useful`字段则是生成侧的守门人:即使召回通过,模型仍需判断知识是否真的能回答问题,这种"宁可少答也不乱答"的原则是客服场景的风控底线。 **全链路可观测性是AI客服运维的基础设施,而非可选项。** 传统系统报错是明确的:状态码、异常堆栈、数据库错误。AI客服的问题形态完全不同:意图识别错误、问题改写偏离、召回不足、知识不相关、提示词不生效——这些问题如果只看最终回答根本无法定位。全链路10个关键节点的日志记录(从用户原始消息到最终回答和耗时成本),使得"用户说回答不准"时可以精确定位是哪个环节出了问题。没有这套可观测性基础设施,AI客服的持续优化就只剩下猜测。 **数据飞轮是AI客服从"初始版本"到"持续进化"的关键闭环机制。** 低置信度问题池解决了"知识库永远不完整"的现实问题,但更重要的是审核机制防止了知识库污染:不是所有低置信度问题都应该入库,情绪输入、无意义内容、低频问题、强时效问题都需要过滤。问题标准化+相似度合并+人工审核的三层过滤,保证了进入知识库的都是真正需要沉淀的高价值内容。这个飞轮一旦运转起来,AI客服的能力会随着真实用户交互而持续提升——这是从"一次性项目"到"持续运营系统"的关键转变。 ## 实践启示 - **AI客服的首要原则是"宁可不答,也不要错答",这条原则应嵌入系统设计的每个层面。** 从意图识别的粒度控制,到`useful`字段的生成判断,再到知识库的边界定义,"不乱答"比"多答"更重要。一旦客服开始一本正经地胡说八道,直接损害用户对产品的信任——这种伤害远大于"我暂时无法回答这个问题"。 - **混合检索(向量+BM25)是客服场景的工程基准线,单一向量检索不足以支撑生产级客服。** 用户在客服场景的提问往往包含明确的产品名称、功能术语,这些关键词向量检索无法精确命中。BM25弥补了这一差距,而Reranker和RRF则在多路召回后保证了最终结果的相关性排序。 - **意图识别的分类体系需要同时从产品视角和用户视角进行梳理,缺一不可。** 产品视角决定系统能提供什么,用户视角决定用户真正关心什么——两者融合才能形成既完整又准确的分类体系。初次上线后应持续根据真实用户问法迭代二级分类,这是AI客服效果调优的主要工作之一。 - **全链路可观测性必须在系统设计阶段就纳入架构,而不是事后补充。** 10个关键节点的日志记录不仅是调试工具,也是持续优化迭代的数据基础。当系统出现问题时,如果无法快速定位是意图识别、问题改写、知识召回还是生成判断出了问题,优化工作就只能靠猜——这对AI客服这类复杂链路系统是致命的。 - **数据飞轮是AI客服的持续竞争力,但必须建立严格的知识入库审核标准防止污染。** 低置信度问题池只是起点,问题标准化去除了口语和情绪,相似度合并识别了高频共性问题,人工审核确保了只有真正需要沉淀的知识才进入知识库。这个飞轮转动得越久,AI客服覆盖的用户问题就越全面——这是AI客服相对于人工客服的长期成本优势来源。 --- ## Ch10.026 Notes on Amazon v. Perplexity > 📊 Level ⭐⭐ | 7.3KB | `entities/amazon-perplexity-legal-analysis.md` # Notes on Amazon v. Perplexity > **来源**: [https://educatedguesswork.org/posts/notes-amazon-perplexity/](https://educatedguesswork.org/posts/notes-amazon-perplexity/) ## 摘要 Amazon 起诉 Perplexity 的 Comet AI 浏览器案是 agentic browsing 领域最具标志性的法律冲突之一。本案涉及三大核心问题:Comet 的安全隐患(特别是 prompt injection 攻击向量)、AI 代理对电商用户体验的颠覆、以及 User-Agent 欺骗的合法性。更深层次上,本案折射出 Web 站点控制权与用户代理权之间的根本张力——这一张力自 Web 诞生以来就存在,而 AI 代理将其推向了临界点。 ## 核心要点 ### Agentic Browser 架构 Agentic browser 在传统浏览器基础上增加了 agent harness 层(参见 [Harness Engineering](https://github.com/QianJinGuo/wiki/blob/main/concepts/harness-engineering-framework.md)),通过 tool calling 接口与浏览器引擎连接。用户通过 chat 界面发出指令,harness 将指令发送到远程模型进行推理,模型返回 tool call 指令由浏览器执行。关键的安全边界在于 agent 是否与用户共享 browsing context(密码、cookies、IndexedDB 数据)——如果共享,agent 就等同于用户本人,具备完整的代操作能力。 ### Amazon 的三大指控 1. **安全隐患**:Comet 存在网络犯罪分子可利用的漏洞,可能危及 Amazon 客户的个人数据(段落 6) 2. **体验降级**:Comet 破坏了 Amazon 花费数十年打造的个性化购物体验(段落 7) 3. **伪装身份**:Comet 将自己的 User-Agent 伪装为 Google Chrome,而非诚实标识自身(段落 5) ### Prompt Injection 攻击向量 Prompt injection 是本案最核心的技术风险。在 agentic browsing 场景中,攻击面显著扩大: - **恶意网站攻击**:酒店预订网站可在页面中注入指令,诱导 agent 选择更贵的房间。通过视觉 prompt injection(如在图片中嵌入不可见指令),攻击可以更加隐蔽 - **第三方内容攻击**:在 Expedia、Airbnb 等平台上,恶意房东可在房源图片中注入 prompt,操纵 agent 优先推荐其房源 - **跨站攻击**:Brave 已演示了从 Reddit 页面的 prompt injection 出发,最终接管用户 Perplexity 账户并从 Gmail 窃取邮件的攻击链。最坏情况等同于 universal XSS 当前对 prompt injection 的防御研究(如 Google 的 CaMeL 方案)尚不成熟,缺乏可靠的通用解决方案。 ### User-Agent 欺骗的上下文 Comet 使用 Chrome 的 UA 字符串并非孤例——Vivaldi、Brave 等 Chromium 系浏览器都有类似做法。根本原因是 Web 站点普遍使用 UA sniffing 来歧视非主流浏览器,而 MDN 明确反对这种做法。UA 字符串本身就是一段"考古记录":Chrome 的 UA 同时声称自己是 Mozilla、Safari 和 Chrome。Amazon 将此定性为"伪装人类用户",但从技术历史看这更多是 Web 兼容性博弈的延续。 ## 深度分析 ### 谁在"访问" Amazon?——CFAA 责任归属 Amazon 指控 Perplexity 违反了《计算机欺诈与滥用法》(CFAA) 第 1030(a)(2) 和 1030(a)(4) 条。第九巡回法院的口头辩论中,核心争议在于:是 Perplexity 还是用户在"访问" Amazon 的计算机? Amazon 的论证逻辑:如果切断 Perplexity 服务器连接,agent 立即停止工作——因此不是用户独自主导的访问。但从技术角度,这只是实现层面的选择:Perplexity 本可以在本地运行(较弱的)模型,此时 agent 仍可在无远程连接下工作。推理发生在何处(本地 vs 远程)在法律上可能是重要区分,但在技术上并不决定"谁负责"。 ### 用户代理权 vs 站点控制权 本案更深层的张力在于 Web 的基本哲学分歧: - **站点立场**:浏览器应忠实渲染站点提供的内容,包括广告、推荐算法等 - **用户立场**:浏览器是用户的"代理"(user agent),应服务于用户利益——拦截广告、翻译内容、自定义体验 W3C 的 "Priority of Constituencies" 原则明确将用户需求置于首位,IAB 的 RFC 8890 也声明"互联网为最终用户服务"。Mozilla Web Vision 更进一步:Web 的独特价值在于用户可以解读和重新组合语义化信息,而不仅仅是消费不透明的音视频流。 Agentic browsing 正是这种用户代理权的最新表达——它让用户无需站点配合(发布 API)即可获得定制化体验。Amazon 的 API 明确禁止"模拟 Amazon 购物应用功能"的第三方应用,这与开放 Web 的精神形成了直接冲突。 ### 判决的溢出效应 本案判决的影响远超 agentic browsing。如果法院支持 Amazon 的逻辑,站点可以通过 Terms of Service 限制任何客户端软件的行为——包括广告拦截器(如 Brave 内置的 ad blocker)、屏幕阅读器、甚至自定义 CSS。Axel Springer 已在德国以版权为由起诉 Eyeo(AdBlock Plus 开发者)。这实质上是在争夺"谁有权控制用户端的渲染"这一根本问题。 ## 实践启示 - **对 AI 浏览器开发者**:必须在 agent 隔离(不共享 browsing context)和功能完整性(需要用户身份执行交易)之间做出明确的架构权衡;prompt injection 防御应作为核心安全需求而非事后补丁 - **对 Web 站点运营者**:过度依赖 UA sniffing 和 ToS 限制可能适得其反,应考虑通过 API 提供受控的第三方接入路径 - **对法律从业者**:CFAA 的"授权访问"概念在 AI 代理场景下需要重新审视——传统"谁发起连接"的框架已不足以判断责任归属 - **对开源社区**:参见 [ATH Agent Trust Handshake Protocol](https://github.com/QianJinGuo/wiki/blob/main/entities/ath-agent-trust-handshake-protocol.md) 中关于 agent 身份验证的探索,这可能是解决信任问题的技术路径 ## 相关实体 - [ATH Agent Trust Handshake Protocol](https://github.com/QianJinGuo/wiki/blob/main/entities/ath-agent-trust-handshake-protocol.md) — Agent 身份与信任握手协议 - Prompt Injection — Prompt injection 攻击原理与防御 - [Harness Engineering](https://github.com/QianJinGuo/wiki/blob/main/concepts/harness-engineering-framework.md) — Agent harness 工程框架 - [Agentic Overlays: REST to A2A](https://github.com/QianJinGuo/wiki/blob/main/entities/agentic-overlays-rest-to-a2a-enterprise.md) — 企业 agentic 架构转型 → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/amazon-perplexity-legal-analysis.md) --- ## Ch10.027 【实践教程】真实AI客服落地全流程:意图识别、混合检索到数据飞轮 > 📊 Level ⭐⭐ | 6.8KB | `entities/实践教程真实ai客服落地全流程意图识别混合检索到数据飞轮-v2.md` # 【实践教程】真实AI客服落地全流程:意图识别、混合检索到数据飞轮 > AI训练营 ** 9期 ** , ** 今日 ** 开班,欢迎咨询 ## 相关实体 - [Rag技术框架的演进方向](https://github.com/QianJinGuo/wiki/blob/main/entities/rag技术框架的演进方向.md) - [Skill Rag Tsinghua Sra](https://github.com/QianJinGuo/wiki/blob/main/entities/skill-rag-tsinghua-sra.md) - [Harness Engineering Framework](https://github.com/QianJinGuo/wiki/blob/main/entities/harness-engineering-framework.md) - [Anthropic Claude Code Large Codebase Best Practices 50002A089323](https://github.com/QianJinGuo/wiki/blob/main/entities/anthropic-claude-code-large-codebase-best-practices-50002a089323.md) - [Aws Sagemaker Ai Agent Guided Workflows Finetuning](https://github.com/QianJinGuo/wiki/blob/main/entities/aws-sagemaker-ai-agent-guided-workflows-finetuning.md) → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/实践教程真实ai客服落地全流程意图识别混合检索到数据飞轮-v2.md) ## 深度分析 ### 1. 数据飞轮是AI客服持续运营的核心驱动力 这篇文章最核心的洞察不是技术方案本身,而是**数据飞轮机制**的设计。初始知识库一定不完整,真实用户会持续问出覆盖不到的问题。解决方案不是一次性把所有知识补充完整,而是从第一版就设计好低置信度问题池,把 `useful=false` 和召回分数低于阈值的问题自动归集,再通过问题标准化、高频合并、人工审核、知识入库的闭环持续迭代知识库 。这个设计让系统越用越准,而不是上线即巅峰。 ### 2. 混合检索(向量 + BM25 + Reranker)是客服RAG的标准范式 单一向量检索在客服场景有明显局限:用户问题中包含大量明确关键词("Memo词卡"、"播客模式"、"小猪伴聊"),向量相似度高的内容不一定与用户真实需求匹配。文章采用了三阶段检索:先用多路问题改写扩展召回面,再分别用向量检索和 BM25 检索各自召回答选,然后用 Reranker 重排,最后用 RRF 融合各类结果 。这套范式已成为客服RAG的标准工程实践。 ### 3. 意图识别是整个链路的守门员——宁可少答,不能乱答 文章强调"AI 客服最致命的就是一本正经的胡说八道",这个原则直接决定了意图识别的设计:不仅分一级意图(产品咨询、用户反馈、闲聊),还要给每个一级意图补充二级分类和判断标准 。标签太粗模型容易误判,判断标准越细,分类越准确。同时,产品咨询类问题有 `useful` 字段约束——模型必须判断召回知识是否真的能回答问题,不能基于弱相关内容硬编 。 ### 4. 工程化方案优于无代码平台——但AI Coding是关键变量 作者最终选择工程化方案而非 Dify/Coze,核心原因不是排斥无代码平台,而是对检索排序逻辑、上下文拼接、日志链路、数据飞轮的全链路可控要求 。值得注意的是,文章指出了一个重要背景:**AI Coding 大大降低了工程化实现的难度和成本**——在 AI Coding 加持下,自己写代码做 AI 客服没有想象的那么复杂。这个判断对于当前的AI应用开发范式有重要参考价值。 ### 5. 全链路可观测是不可妥协的基础设施 AI 客服出问题不是传统意义的报错,而是意图识别错、问题改写偏、知识召回不足、模型不按知识回答等形态 。如果只看最终回答,根本不知道问题出在哪。系统需要记录全链路10个关键节点的输入输出,包括:原始消息、指代消解结果、意图识别结果、问题改写、向量召回列表和分数、BM25 召回列表、Reranker 结果、最终使用知识、生成回答和 `useful` 判断、每次模型调用耗时和成本。这种级别的日志是后续优化的前提。 ## 实践启示 1. **先有人工客服,再有AI客服**:产品初期一定要创始人/核心人员做客服,沉淀高质量真实对话数据。没有真实语料,不要上AI客服。适合AI客服的场景特征是:问题重复度高、历史语料质量高、产品理念需要反复解释、用户反馈对迭代重要 。 2. **意图分类要给二级分类和判断标准**:不要只给模型三个粗粒度标签。需要梳理出二级分类体系,并且每个分类附带判断标准,让模型知道什么情况下归到哪个意图。判断标准要同时从产品视角和用户视角出发进行融合 。 3. **知识整理比工程化更重要**:RAG项目的灵魂是知识质量。知识来源应包括人工整理的产品知识(系统化)和历史客服记录(贴近真实用户表达)两部分。知识用 Markdown 整理,标题层级天然适合后续按标题切分 。历史客服记录数据量大,用 AI 分批整理(每10个会话一批),结果写入飞书多维表格,再去重合并人工校验 。 4. **上下文记忆要分层**:AI客服是多轮对话,但不能无限制携带历史消息。文章采用短期记忆(最近N条原始消息,保持原样)和长期记忆(更早对话压缩成摘要,按需携带)的分层策略,在成本和上下文完整性之间取得平衡 。 5. **数据飞轮要设置入库门槛**:不是所有低置信度问题都应该进知识库。用户情绪输入、无意义输入、极低频问题、强时效问题都不适合沉淀。问题入库前先做标准化(去掉情绪、口语,保留真实意图),再判断是否与已有问题重复、是否高频,再经人工审核判断是否为正常业务问题 。 → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/实践教程真实ai客服落地全流程意图识别混合检索到数据飞轮-v2.md) --- ## Ch10.028 美团搜索3.0:LLM 语义表征在排序模型的应用 > 📊 Level ⭐⭐ | 6.3KB | `entities/meituan-search-3-llm-semantic-embedding-ranking-2026.md` # 美团搜索3.0:LLM 语义表征在排序模型的应用 美团服务零售搜索排序团队在 2025 Q4 至 2026 Q2 用三期迭代把 LLM 语义表征系统性引入精排模型,用 cosine 相似度特征弥补传统文本匹配在长尾语义场景的不足,累计 3 个 Launch Review 全量上线并带来显著订单增量。 ## 一期:验证可行性(64 维余弦特征) 一期用轻量开源基座 + 全参数微调,在词表新增 `<|query|>`、`<|item|>`、`<|qi|>` 三个特殊 Token 作为聚合锚点(平均初始化参考 vocab-expansion),通过三次独立 Forward Pass + Attention Mask 保证 Query/item 表征自包含。取最后一层特殊 Token 位置 hidden state 经两层 MLP 降至 64 维,全量推理 Query/POI Embedding 存 Hive,算 cosine 相似度按 10 个分桶边界([-0.40, -0.30, -0.18, -0.12, 0.00, 0.10, 0.16, 0.22, 0.30])离散化,每个分桶配可学习 12 维 Embedding 拼入精排特征。 线上(20% 流量 14 天)搜索支付订单 +0.20%、服务零售订单 +0.27%,长尾 NDCG@5 +2.21pp、长尾 BadCase@1 -2.96pp。一期同时暴露四个短板:缺商品侧语义、全参微调成本高、点击率目标对排序不全面、三次 Forward Pass 效率低。 ## 二期:Query-POI-Deal 三元表征体系 二期系统性重构表征生产全流程,核心矛盾从「是否匹配」分类转向「哪个更匹配」排序。五个关键升级:①训练数据扩为五元组(Query/Deal 正/POI 正/Deal 难负/POI 难负),难负样本取「同请求同商家曝光未点击」,2766 万条;②Prompt 做减法——精简信息陈述+总结引导优于复杂指令(反直觉,Embedding 的 Prompt 是引导聚合语义而非指令遵循);③LoRA(r=8/α=32,q_proj+v_proj)取代全参微调;④表征提取改为 nn.Parameter 可学习向量覆写序列末位 + 单次 Forward 五路并行(Last Special Token Embedding 优于 Mean Pooling);⑤损失从 BCE 改为三组 InfoNCE(Q↔POI/Q↔Deal/POI↔Deal)+ 两组 Triplet(欧氏距离 margin=0.5)共五个损失加权。降维从 MLP 换成 MRL-E(嵌套维度 [1024,512,256,128],推理截前 128 维)以获得多尺度灵活性。 二期表征应用升级为双组相似度分桶(Query-POI 与 Query-Deal 各自分桶)+ 零向量缺失边界,底层拼接 + 顶层 LHUC 双融合。工程上改「离线训练样本化 + 线上 KV 读取」,模型体积不增反降。线上(20% 流量 7 天)大盘 UV +0.07%、有效点击 QV +0.13%、QV_CTR +0.10pp;关键洞察是语义表征优化「曝光质量」而非「曝光数量」——某事业部 QV 下降但 QV_CTR 提升 0.24pp。 ## 三期:下挂精排迁移 + 全域交叉统计特征 三期把成熟商家表征迁移到下挂精排(对商家下挂商品排序),遇到的最大工程挑战是**覆盖率而非模型适配**:直接复用二期时 Query 覆盖率仅 81.24%、双覆盖率仅 73.61%(商家精排 Query 偏商家意图词如「SPA」,下挂偏商品意图词如「双人 XX 套餐」),重新按下挂样本分布圈选后升至 98.92%/89.81%。这条「覆盖率验证必须是跨模块迁移第一步」成为标准 checklist。 三期在表征耦合方式上对比 4 种方案,PEPNet 门控最优(+25bp,vs 底层拼接 +18bp、输出塔前 +8bp):把 cosine 相似度当门控信号调制其他特征权重,高匹配放大、低匹配抑制,比固定位置拼接更灵活。同时补充四类全域交叉统计特征(user×deal / POI cate3 / user×POI cate3 / query×deal)弥补「个性化×商品」和「Query 意图×商品」建模空白;覆盖率<0.1% 的订单特征被消融移除。线上(10% 流量 7 天)服务零售订单 +0.32%、搜索大盘支付订单 +0.35%,且语义+统计特征叠加效应强于各自单独验证——两者互补而非替代。 ## 独立创新点与业内定位 本工作处于「LLM 文本表征」与「搜索排序特征工程」交叉地带。相对业内(TIGER 生成式检索、ANCE 全局 ANN 难负样本、UNGER 模态平衡、Meta/Apple Music/小红书难负策略)有三点独立创新:①cosine 相似度作为直接排序特征 + 底层/顶层双融合(兼顾特征交叉与信号保真,比推荐场景底层拼接更具可解释性);②「同请求同商家曝光未点击」难负样本天然绑定搜索上下文(引入后 Q2I-Order-AUC +11.02pp vs Click-AUC +4.85pp);③「搜索词→商家→商品」三元匹配结构 + 三组 InfoNCE Loss 覆盖所有两两关系,公开文献中较少见。 后续方向:负例质量(false-negative mask / focal 重加权 / 难度阈值)、离散 Semantic ID、专项下挂表征训练、表征-排序闭环(relevance 蒸馏回灌)。 ## 相关实体 - → [美团图灵评测方法论](https://github.com/QianJinGuo/wiki/blob/main/entities/agent-evaluation-turing-meituan-2026.md)(同美团技术团队评测方法论,互补) - → [淘宝闪购爆品团精排](https://github.com/QianJinGuo/wiki/blob/main/entities/taobao-flash-sale-ranking-scaling-up-2026.md)(电商精排 scaling 实践对照) - → [eBay 生成式检索 Semantic ID](https://github.com/QianJinGuo/wiki/blob/main/entities/ebay-generative-retrieval-rq-vae-semantic-id-2026-06-30.md)(离散语义 ID 方向) - → [抖音多模态 Embedding 检索](https://github.com/QianJinGuo/wiki/blob/main/entities/douyin-dme-multimodal-embedding-multimodal-retrieval.md)(Embedding 检索侧对照) - → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/meituan-search-3-llm-semantic-embedding-ranking-2026.md) --- ## Ch10.029 捅破个人AI天花板!YC总裁开源GBrain:8层架构打造AI第二大脑 > 📊 Level ⭐⭐ | 6.2KB | `entities/gbrain-8layer-51cto.md` YC总裁Garry Tan开源的AI第二大脑,8层架构从"找得到"到"真正记住并进化"。 传统RAG只有4层(分块→嵌入→索引→查询),检索完就结束了。GBrain扩展到8层: 1. 分块(Chunking):v4分块器,处理Markdown结构、代码块、前置元数据 2. 嵌入(Embedding):测试3家嵌入服务供应商,找出最能适配语料库语义特征的方案 3. 索引(Indexing):处理37.5万文本块,O(log n)复杂度,2ms vs 2s 4. 查询理解(Query Understanding):tokenmax模式查询扩展+意图检测(人物/概念/时间线) 5. 重排序(Reranking):ZE zerank-2模型重新打分,92%的第一名结果在这一步发生变动 6. 认识论层(Epistemology Layer):严格记录每个事实的来源、时间戳、置信度 7. 实体知识图谱(Entity Knowledge Graph):超过14万条带类型关联边,打通人物→公司→会议→概念关系网络 8. 梦境循环(Synthesis Cycles):系统闲时自主触发,合并同类项、提炼长期认知、修补逻辑断层 ## 相关实体 - [Rag技术框架的演进方向](https://github.com/QianJinGuo/wiki/blob/main/entities/rag技术框架的演进方向.md) - [Skill Rag Tsinghua Sra](https://github.com/QianJinGuo/wiki/blob/main/entities/skill-rag-tsinghua-sra.md) - [Harness Engineering Framework](https://github.com/QianJinGuo/wiki/blob/main/entities/harness-engineering-framework.md) - [Anthropic Claude Code Large Codebase Best Practices 50002A089323](https://github.com/QianJinGuo/wiki/blob/main/entities/anthropic-claude-code-large-codebase-best-practices-50002a089323.md) - [Aws Sagemaker Ai Agent Guided Workflows Finetuning](https://github.com/QianJinGuo/wiki/blob/main/entities/aws-sagemaker-ai-agent-guided-workflows-finetuning.md) → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/gbrain-8layer-51cto.md) ## 深度分析 传统RAG系统的四层架构(分块→嵌入→索引→查询)本质上是"一次检索、一次回答"的简单范式,它在信息检索层面做了优化,但在知识认知层面是盲的——检索结果的好坏直接决定回答质量,没有任何自我修正或深层理解能力。GBrain将架构扩展到8层,核心变革在于引入了"记忆与认知进化引擎"(第5-8层),这意味着系统不再把问答当作终点,而是把每次问答当作知识网络生长的一次迭代。 第6层认识论层(Epistemology Layer)是整个架构真正的护城河。它严格记录每个事实的来源、时间戳和置信度,这不仅是元数据管理,更是一种"可追溯的信念体系"——当系统回答一个问题时,它知道自己对每个事实的确信程度有多高,这在高风险决策场景(如医疗、法律、金融)中具有不可替代的价值。传统RAG无法区分"我检索到的"和"我确认知道的",而认识论层让系统具备了元认知能力。 第7层实体知识图谱带来的性能收益从数字上可以得到验证:关闭图谱功能后P@5下降31.4pp。这意味着实体关系网络不仅仅是"锦上添花",而是直接参与了检索的核心过程。超过14万条带类型关联边形成的人物→公司→会议→概念关系网络,让系统能够进行跨维度的关联推理——当用户查询"与Garry Tan相关的所有投资案例"时,图谱可以沿着关系边展开而不是简单做关键词匹配。 梦境循环(第8层)代表了一种"闲时计算"的哲学——在系统负载低的时候自主运行,执行合并同类项、提炼长期认知、修补逻辑断层的任务。这类似于人类睡眠时的记忆巩固过程:白天积累的碎片化信息,在休息时被重新组织和内化。这个设计的深层含义是,AI系统应该具备"自我优化"的能力,而不是每次都从零开始处理所有历史数据。 从性能基准来看,P@5 49.1%、R@5 97.9%是一组有意思的数字:高召回率(97.9%)说明系统几乎不会漏掉相关内容,但精确率(49.1%)意味着近一半的第一页结果是不相关的。这不是架构的缺陷,而是图谱+重排序配合使用的预期结果——系统优先保证不遗漏,再通过后续层做精排。 ## 实践启示 1. **为个人AI助手选择8层架构思路**:构建个人AI第二大脑时,不要只关注检索速度,要同时考虑记忆的来源追踪和自我进化能力。至少应在RAG Pipeline中加入认识论层(记录来源和置信度),这是区分"搜索引擎"和"知识助手"的关键。 2. **嵌入测试是落地第一步**:GBrain在嵌入层测试了3家供应商才确定最优方案,这提示我们在构建知识库时不能迷信某一家的嵌入模型。不同语料库的语义分布差异很大,建议用实际查询集做A/B测试,找出召回率和精确率综合最优的方案,而不是默认使用OpenAI的ada-002。 3. **图谱建设要趁早、持续积累**:14万条关系边不是一天建成的,GBrain在12天内处理了17,888页内容。这意味着图谱建设应该是一个持续迭代的过程——每次新的知识摄入都是图谱扩展的机会,而不是一次性建完就结束。 4. **梦境循环机制值得借鉴**:即使是没有GBrain完整架构的个人用户,也可以设计自己的"知识复盘"机制:每周抽出固定时间,让AI助手总结本周积累的碎片信息,提炼出需要长期记住的核心观点,识别逻辑断层或信息矛盾点。 5. ** ZE zerank-2重排序模型值得关注**:92%的第一名结果在重排序阶段发生变动,这个数字说明重排序层是整个检索质量的关键杠杆。对于需要高质量回答的场景(如研究报告生成),应该在重排序模型上投入更多资源测试。 --- ## Ch10.030 SkillCorpus: 大规模社区 Skill 生态的筛选、评测与边界分析 > 📊 Level ⭐⭐ | 4.8KB | `entities/skillcorpus-consolidating-open-skill-ecosystem.md` # SkillCorpus: 大规模社区 Skill 生态的筛选、评测与边界分析 > 首个端到端框架:聚合开源 SKILL.md 生态,提纯为 96,401 标准化技能,在真实 Agent 任务上评测社区技能的实际价值并界定其边界。 ## 概览 SkillCorpus 是由 EverMind、盛大集团与北京大学联合提出的框架,将松散的开源 SKILL.md 生态(~821,000 原始文件)经多层流水线提纯为 96,401 份合规、高质量、可商用的标准化技能,并配套微调检索排序堆栈,在真实 Agent 任务上评测了社区技能的实际增益与边界条件。 ## 六阶段提纯流水线 1. **结构/格式检查**:标准 SKILL.md 格式 + 合理长度过滤 2. **两阶去重**:精确指纹去重(169,465 合并)+ 语义嵌入去重(cosine 0.90 阈值,LLM 裁决 66,751 边界对)→ 合计去除 64% 3. **三维质量打分**:LLM-as-judge 从 Utility(实用性)、Robustness(鲁棒性)、Safety(安全性)三维度输出 0-10 分 - 综合分 = 0.85·content_q + 0.15·prior_src(安全薄弱时衰减) 4. **安全硬门禁 + 许可证过滤**:5 条硬规则(prompt_injection/cmd_injection/unsafe_exec/auth_bypass/csam_risk)→ 分数归零;仅保留 OSI 兼容许可证(去除 3,795 条) 5. **归类入库**:16 类分类法(Dev 22.4%, Data 14.1%, Writing 8.2%, DevOps-Infra 7.8%...),1024 维检索嵌入 ## 三级检索排序堆栈 - **粗召**:Qwen3-Emb-0.6B(在去重后语料上微调),3000 字符检索字段 - **精排**:Qwen3-Rank-0.6B 微调排序模型 - **LLM 选择门**:阅读完整 Skill 正文,返回 0-2 条注入 - **可选查询改写**:领域术语规范化 ## 评测结果 ### 主实验(407 任务,24 配置 × 3 轮 = 74 次端到端运行) | 框架 × 模型 | SkillsBench | GDPVal | QwenClawBench | 均值 | |---|---|---|---|---| | OpenClaw × Qwen-27B | +4.2 | +1.9 | +1.5 | +2.5 | | OpenClaw × Qwen-397B | +5.8 | +1.8 | +1.3 | +3.0 | | Raven × Qwen-27B | +6.5 | +1.2 | +3.9 | +3.9 | | Raven × Qwen-397B | **+13.4** | +1.2 | +4.4 | **+6.3** | | Claude Opus 4.7 | +8.0 | — | — | — | 全部配置正向增益,无净负均值(no-harm attachment)。最强单元(Raven × Q-397B)在 SkillsBench 上从失败中救回 19 个任务、损害 2 个(McNemar 检验 p<0.001)。 ### 两个边界条件 **Harness 边界**:Raven 执行完整「推理→运行脚本→校验→修正」闭环,提升远超 OpenClaw(写代码后即终止、不校验)。Harness 执行逻辑直接影响 Skill 的落地效果。 **覆盖度边界**:高检索匹配 → 平均 +25.1%;中匹配 → +6.2%;低匹配 → +2.2%。Skill 库覆盖度直接调节增益幅度。 ### 关键洞察 - **流程适配度 > 质量分数**:单任务成败取决于 Skill 流程与任务结构的匹配度,而非综合质量分 - **Skill 可能帮倒忙**:PPT 内嵌 Excel 修改任务中,通用 Skill("打开 .xlsx")无法处理 OLE 内嵌对象,反而比无 Skill 基线更差 - **高基线任务天花板**:写作等任务模型本身能力强,Skill 提升空间有限(GDPVal 仅 +1.2-1.9pp) - **上下文隔离 > 并行**:规划器-执行者拆分的主要扩展优势来自上下文隔离,而非并行执行 ## 局限与未来方向 - 质量评分依赖 LLM 文本判断,无沙箱执行验证 - 仅英文评测,中文场景尚未覆盖 - 静态快照(2026 Q2),无动态更新机制 - 高基线任务受限天花板效应 ## 相关实体 - [SkillOS: Learning Skill Curation for Self-Evolving Agents](https://github.com/QianJinGuo/wiki/blob/main/entities/skill-os-learning-skill-curation-self-evolving-agents.md) - [SkillComposer: 生成式技能组合](https://github.com/QianJinGuo/wiki/blob/main/entities/skillcomposer-generative-skill-composition-agent.md) → [论文原文](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/skillcorpus-arxiv-2607-15557.md) | [中文解读](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/skillcorpus-skill-screening-framework-mozhi-2026.md) | [PDF](assets/skillcorpus-arxiv-2607-15557.pdf) --- ## Ch10.031 How we built SmithDB’s inverted index for full-text search > 📊 Level ⭐⭐ | 4.8KB | `entities/how-we-built-smithdb-s-inverted-index-for-full-text-search.md` # How we built SmithDB’s inverted index for full-text search > Source: [How we built SmithDB’s inverted index for full-text search](https://www.langchain.com/blog/full-text-search-in-smithdb-constructing-and-querying-our-inverted-index-pt-2) | Score: v*c=81 ## Overview Markdown Content: ## Full Text Search in SmithDB: Constructing and Querying our Inverted Index (Pt. 2)  ## Overview In our [earlier blog post](https://www.langchain.com/blog/full-text-search-in-smithdb-designing-an-inverted-index-for-object-storage) on supporting full text search in SmithDB, we went over how we designed our object-storage backed inverted index implementation. In this blog post, we will cover how we construct, compact, and query this index in SmithDB. ## Inverted index construction and merging Index construction happens inline during ingestion. New runs become searchable within seconds, and because the freshest data is still resident on the node that wrote it, leading-edge queries read both the indexes and core data files directly from local storage instead of paying a round trip through object storage. On compaction, we merge indexes associated with different data files. ### Payload parsing Recall that SmithDB indexes the large `inputs` and `outputs` fields (among a few others) present in run payloads. For deeply nested and large payloads, JSON parsing dominates construction time. We only need flattened key paths and leaf values, so we built a JSON tape adapted from Apache Arrow's `arrow-json` crate, which is itself inspired by [simdjson's tape format](https://github.com/simdjson/simdjson/blob/master/doc/tape.md). Our implementation consists of a flat sequential array of tokens with all string bytes in one contiguous buffer: no per-field allocation, no numeric conversion. A single-pass iterator then flattens each document into `(path, leaf_value)` pairs: nested objects become dotted paths, array elements collapse onto their parent key: `{"agent": "deep agents", "tags": ["langchain", "engine"]}` yields `(agent, "deep agents")`, `(tags, "langchain")`, `(tags, "engine")`. See below for another example.  ### Tokenization Before a value becomes an index term, it is tokenized: split on non-alphanumeric boundaries, lowercased, dropped of stop words, and capped at 256 characters. ### Sorting and interning Recall that [we use finite state transducers (FSTs)](https://www.langchain.com/blog/full-text-search-in-smithdb-designing-an-inverted-index-for-object-storage#our-journey-to-develop-smithdbs-inverted-index) for our term layout in our inverted index implementation. The flat postings table must be sorted by term before it can feed the FST writer. Across agent traces, the same JSON paths and token values repeat in virtually every document for a particular tenant and tracing project. When implemented naively, this sort is dominated by string comparisons. To get around this, we leverage [string interning](https://en.wikipedia.org/wiki/String_interning): a technique that maps each unique term to a com → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/how-we-built-smithdb-s-inverted-index-for-full-text-search.md) --- ## 关联 - 相关概念: [Harness Engineering](https://github.com/QianJinGuo/wiki/blob/main/concepts/harness-engineering-framework.md) --- ## Ch10.032 为OpenClaw配置网盘空间的最佳实践 > 📊 Level ⭐⭐ | 4.7KB | `entities/openclaw-cloud-storage-config-guide-wechat.md` ## 深度分析 **1. PDS 网盘作为 OpenClaw 的云端工作空间层** PDS 为 OpenClaw 提供的核心价值不是存储本身,而是一个可挂载的工作空间抽象层。用户和 Agent 可以像访问本地文件一样访问云端文件,这消除了传统 RAG 场景下文件上传下载的手动环节。网盘的多端同步(Web、PC、手机)配合 OpenClaw 的多模态理解能力,使得"上传一个视频让 AI 总结"这类自然语言指令成为端到端自动化的闭环。 **2. 权限架构:domain_id + 超级管理员绑定** PDS 的权限模型以 `domain_id` 为隔离边界。超级管理员通过手机号验证后将 OpenClaw 绑定为最高权限身份,这与操作系统级的 sudo 机制类似。如果不希望 OpenClaw 拥有全局权限,官方推荐做法是新建一个权限受限的网盘子账户(仅预览/上传/下载),再将其绑定给 OpenClaw。这种"最小权限子账户"模式是在生产环境中安全集成 AI Agent 的关键参考。 **3. 自然语言 → 文件操作管道的设计范式** 五步配置流程(安装插件 → `openclaw pds login` → 浏览器认证 → 使用 Skills)完整展示了如何将一个外部云服务封装为 Agent 可调用的 Skill。核心设计原则是:命令式安装与声明式对话使用并存,用户既可以通过 CLI 手动配置,也可以让 OpenClaw 通过自然语言引导完成配置。这两种接口的并存降低了入门门槛,同时保留了进阶用户的灵活性。 **4. 客户端安装的补充价值:文件级可见性与同步备份** 可选的网盘客户端引入了挂载盘(将云端映射为本地驱动器)和同步备份功能。这意味着 OpenClaw 的工作成果可以无缝进入用户已有的桌面工作流,而不是形成一个新的"AI 隔离区"。客户端支持文件秒传、多任务并发上传和带宽限制控制,是在大规模文件进出场景下保持体验一致性的必要组件。 ## 实践启示 1. **配置前先创建受限子账户**:不要用网盘超级管理员身份直接授权 OpenClaw。在 PDS 控制台创建一个仅拥有基础权限的新用户,将其绑定给 OpenClaw,可以在享受 AI 便利的同时实现权限最小化。 2. **domain_id 必须在 PDS 控制台确认**:登录命令 `openclaw pds login ` 中的 domain_id 不是域名,而是 PDS 实例的唯一标识符,需要在控制台获取后再使用,错误的 domain_id 将导致认证失败。 3. **文件查询类任务优先使用网盘 Skills**:当任务涉及网盘中的视频、文档、图片时,直接用自然语言描述需求("帮我总结这个视频"),比先下载再处理效率更高,也避免了本地磁盘与云端的双重管理开销。 4. **通过 OpenClaw 对话完成插件卸载和升级**:使用 `openclaw plugins uninstall pds --force` 卸载前,建议先通过对话让 OpenClaw 确认当前网盘状态,避免误删导致工作文件丢失。升级流程同样支持对话触发,适用于不需要 SSH 登录的远程管理场景。 5. **在 OpenClaw 中构建定期调研简报 Skill**:利用网盘的多模态检索能力(图片语义搜索、音视频内容理解),将"定期调研竞品功能并汇总报告"封装为一个可复用的 Skill,定期检索网盘内相关目录并自动生成更新报告。 ## 相关实体 - [Pgpkc04Xff7Ilmdb9Vocnq](https://github.com/QianJinGuo/wiki/blob/main/entities/pgpkc04xff7ilmdb9vocnq.md) - [Identity Behavior Context Itdr Solution](https://github.com/QianJinGuo/wiki/blob/main/entities/identity-behavior-context-itdr-solution.md) - [Oz Multi Harness Cloud Agent Orchestration](https://github.com/QianJinGuo/wiki/blob/main/entities/oz-multi-harness-cloud-agent-orchestration.md) - Senators Query Credit Bureaus On Bnpl 1 - [看 Agentrun 如何玩转记忆存储最佳实践来了](https://github.com/QianJinGuo/wiki/blob/main/entities/看-agentrun-如何玩转记忆存储最佳实践来了.md) → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/openclaw-cloud-storage-config-guide-wechat.md) --- ## Ch10.033 Common Crawl - Blog - Host- and Domain-Level Web Graphs April, May, and June 2026 > 📊 Level ⭐⭐ | 4.5KB | `entities/common-crawl-blog-host-and-domain-level-web-graphs-april-may.md` # Common Crawl - Blog - Host- and Domain-Level Web Graphs April, May, and June 2026 > Source: [Common Crawl - Blog - Host- and Domain-Level Web Graphs April, May, and June 2026](https://commoncrawl.org/blog/host--and-domain-level-web-graphs-april-may-and-june-2026) | Score: v*c=63 ## Overview Markdown Content: We are pleased to announce a new release of host-level and domain-level web graphs based on the crawls of April, May, and June 2026. The crawls used to generate the graphs were [CC-MAIN-2026-17](https://data.commoncrawl.org/crawl-data/CC-MAIN-2026-17/index.html), [CC-MAIN-2026-21](https://data.commoncrawl.org/crawl-data/CC-MAIN-2026-21/index.html), and [CC-MAIN-2026-25](https://data.commoncrawl.org/crawl-data/CC-MAIN-2026-25/index.html). Additional information about the data formats, the processing pipeline, our objectives, and credits can be found in the announcements of prior [Web Graph Releases](https://commoncrawl.org/search?query=webgraph). You may also visit the projects [cc-webgraph](https://github.com/commoncrawl/cc-webgraph) and [cc-pyspark](https://github.com/commoncrawl/cc-pyspark) which include all scripts and tools required to construct the graphs. Instructions to explore the graphs in the webgraph format are given in our collection of [Web Graph Notebooks](https://github.com/commoncrawl/cc-notebooks/tree/master/cc-webgraph-statistics). You may also wish to explore our [Web Graph Statistics](https://commoncrawl.github.io/cc-webgraph-statistics/) page for more information on ranking. ## Host-level Graph The host-level graph consists of 247.3 million nodes and 6.3 billion edges. There are 184.2 million dangling nodes (74.48%) and the largest [strongly connected component](https://en.wikipedia.org/wiki/Strongly_connected_component) contains 36.3 million (14.66%) nodes. Dangling nodes stem from: * Hosts that have not been crawled, yet are pointed to from a link on a crawled page * Hosts without any links pointing to a different host name * Hosts which did only return an error page (eg. `HTTP 404`). Host names in the graph are in [reverse domain name notation](https://en.wikipedia.org/wiki/Reverse_domain_name_notation) such that: `www.example.com` becomes `com.example.www`. You can download the graph and the ranks of all 247.3 million hosts from AWS S3 on the path `s3://commoncrawl/projects/hyperlinkgraph/cc-main-2026-apr-may-jun/host/` (this requires an account on AWS). Alternatively, you can use `https://data.commoncrawl.org/projects/hyperlinkgraph/cc-main-2026-apr-may-jun/host/` as prefix to access the files from everywhere. Please note that the text representation of the host-level graph is shipped in 240 `gzip`-compressed files listed in two path listings - one for the nodes (vertices), one for the edges (arcs). First, download the paths listing and decompress it using `gzip -d` or `gunzip`. By adding the prefix `s3://commoncrawl/` or `https://data.commoncrawl.org/` to each line in the path listing you get the list of URLs to download the entire graph. ## Download files of the Common Crawl April, May, and June 2026 host-level Web Graph | Size | File | Description | | --- | --- | --- | | 1.8 GiB | [cc-main-2026-apr-may-jun-host-vertices.paths.gz](https://data.commoncrawl.org/projects/hyperlinkgraph/cc → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/common-crawl-blog-host-and-domain-level-web-graphs-april-may.md) --- ## 关联 - 相关概念: [Harness Engineering](https://github.com/QianJinGuo/wiki/blob/main/concepts/harness-engineering-framework.md) --- ## Ch10.034 Guardoc Health 医疗文档AI处理 — Amazon Nova 多模态 RAG 管线 > 📊 Level ⭐⭐ | 4.3KB | `entities/guardoc-health-medical-document-processing-amazon-nova.md` # Guardoc Health 医疗文档AI处理 — Amazon Nova 多模态 RAG 管线 > **Background**: Guardoc Health 使用 Amazon Nova 系列模型在 Amazon Bedrock 上构建多阶段医疗文档处理管线,涵盖 RAG 医疗条件分类、混合 OCR 药物提取等功能。本文是 AWS ML Blog 发布的官方案例研究。 ## 管线架构 Guardoc 的核心管线是**成本分层多阶段流水线**,每阶段使用最适合该任务的组件: 1. **Amazon Textract**(OCR 层):从 PDF/扫描件提取文本、结构元数据和布局信息——低成本高通量 2. **文档分块**:沿临床语义边界切分(药物列表、诊断节、医生笔记),非任意字符分块 3. **Amazon Titan Text Embeddings V2**(嵌入层):每个块向量化后存入 **Amazon DynamoDB**(按患者分区,避免跨患者检索) 4. **自定义预过滤器**:按文档类型、时效性、患者上下文信号缩小候选集——降低下游检索成本 5. **k-NN 搜索**:内存内检索最相关的块,返回页面引用(非完整内容) 6. **Amazon Nova 2 Lite**(粗筛):轻量文本模型快速排除明显不匹配的页面 7. **Amazon Nova Pro**(多模态推理):接收 PDF 原始字节,推理布局、笔迹、签名、印章等视觉上下文,输出最终分类 每个分类结果都追溯到原始 PDF 的特定源页面——这在临床场景中是不可妥协的设计约束。 ## 关键技术挑战与方案 ### 医疗条件 RAG 分类 使用 **Retrieval Augmented Generation (RAG)** 从患者文档中识别医疗条件。管线先检索患者自身文档中的相关证据,再跨证据推理产生最终分类。与传统的"先 OCR 全文再 LLM 分类"不同,Guardoc 的分级架构让 Textract 负责低价 OCR、Nova Pro 仅在最后一步做昂贵的多模态推理——实现了 **成本-精度权衡**。 ### 混合 OCR 药物提取 药物信息(药名、剂量、用法、频率)从多种格式中提取: - **结构化表格** → Amazon Textract 处理 - **非结构化医生笔记 / 手写增改 / 传真扫描** → Amazon Nova Pro 补充推理 这种混合架构各取所长:Textract 处理高容量结构化提取,Nova 系列模型处理复杂边缘案例(表格跨列、手写增加、非常规格式)。 ## 业务影响 Guardoc 的部署效果量化案例: | 指标 | 改进 | |------|------| | 文档错误率 | 下降 46% | | 审计罚款 | 减少 70% | | 单设施年度 ROI | 超 $400K | | 单季度(200 患者,2 设施) | 847 文档修正,74% 住院转送减少 | 这些结果说明:在真实生产环境中,**AI 文档处理的 ROI 不只是操作效率的提升,更是临床风险与合规成本的直接降低**。 ## 与现有知识的关系 - [RAG 分块/嵌入/重排管线](https://github.com/QianJinGuo/wiki/blob/main/entities/rag-chunk-embedding-rerank-pipeline.md) — Guardoc 的 k-NN + 分级筛序方案是对标准 RAG 的医疗场景适配 - [文档 RAG 处理](https://github.com/QianJinGuo/wiki/blob/main/entities/rag-for-documents.md) — Guardoc 处理的是医疗文档这一极复杂文档类型 - [Amazon Bedrock](https://github.com/QianJinGuo/wiki/blob/main/entities/amazon-bedrock.md) — Guardoc 的 AI 基础设施底座 - [Amazon Nova Forge](https://github.com/QianJinGuo/wiki/blob/main/entities/amazon-nova-forge-hyperparameter-tuning-art-science.md) — Nova 模型系列的调优平台 - [RAG(检索增强生成)](https://github.com/QianJinGuo/wiki/blob/main/concepts/rag-retrieval-augmented-generation.md) — 分类管线的基础范式 - [医疗 AI 应用](https://github.com/QianJinGuo/wiki/blob/main/concepts/medical-ai-applications.md) — Guardoc 是 AI 在医疗文档处理中的典型案例 - [Agentic RAG 模式](https://github.com/QianJinGuo/wiki/blob/main/concepts/agentic-rag-patterns.md) — Guardoc 的端到端多阶段检索架构 → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/how-guardoc-transforms-medical-document-processing-with-amazon-nova-models.md) --- ## Ch10.035 Task-Aware Knowledge Compression (TAKC) > 📊 Level ⭐⭐ | 4.1KB | `entities/task-aware-knowledge-compression-takc.md` # Task-Aware Knowledge Compression (TAKC) > **Task-Aware Knowledge Compression (TAKC)** 是一种将知识库离线预压缩为任务特定表示的技术方案,由 AWS 在 2026 年 7 月提出并在 AWS 上实现开源参考架构。TAKC 解决了 RAG 在跨文档推理和大规模知识库全面覆盖上的固有局限。 ## 核心思路 TAKC 的核心洞察是:**同一文档在不同任务下需要保留不同信息**。一张年报的财务分析视图需要收入/利润率/现金流数据,而合规审查视图需要监管引文/违规历史。通用摘要试图覆盖所有内容反而稀释了信息密度。 TAKC 通过任务感知提示(task-aware prompt)对文档进行离线压缩,每个任务类型对同一源文档产生不同的压缩输出。压缩后系统用 Redis 缓存存储多速率压缩结果,查询时直接检索压缩表示而非原始文档。 ## 多速率压缩(Multi-rate Compression) TAKC 维护四个压缩层级 —— 不同查询需要不同 fidelity: | 层級 | 压缩比 | 上下文保留 | 适用场景 | |------|--------|-----------|---------| | Light | 8× | ~12.5% | 多步推理、跨文档综合 | | Medium | 16× | ~6.25% | 中等复杂度分析查询 | | High | 32× | ~3.1% | 事实查找、定义明确的问题 | | Ultra | 64× | ~1.6% | 分类任务、关键词查找 | 查询复杂度分析器根据查询长度、问题类型、分析性语言等信号自动路由到适-当层级。大多数企业查询可从高压缩层级低成本响应,只有少数复杂查询消耗更大上下文预算。 ## 与 RAG 的对比 | 维度 | TAKC 更适合 | RAG 更适合 | |------|------------|-----------| | 查询类型 | 跨文档推理、综合 | 窄域事实查找 | | 知识库稳定性 | 每日变化或更少 | 每小时变化或更多 | | 任务可预测性 | 任务类型明确 | 查询模式不可预测 | | 覆盖需求 | 必须考虑全量语料 | 仅需少量相关文档 | | 来源追溯 | 不需要 | 需要(用户需看原文) | | Token 预算 | 紧张 | 灵活 | 实践中两者互补:RAG 做快速查找,TAKC 处理分析性查询。查询复杂度分析器可在两者之间路由。 ## AWS 架构实现 TAKC 在 AWS 上部署为两个解耦的无服务器流程: - **Ingestion Pipeline**:文档落地 S3 → S3 事件通知触发 Lambda 分块(256-token 块,50-token 重叠)→ 异步调用压缩 Lambda → Amazon Bedrock(Claude 3 Haiku / Sonnet)按四层压缩 → 存入 ElastiCache Serverless + S3 备份 - **Query Pipeline**:Cognito JWT 认证 → API Gateway → WAF 防护 → Lambda 查询复杂度分析 → ElastiCache 获取压缩缓存 → Bedrock 推理响应 参考实现开源在 [aws-samples/sample-bedrock-takc-compression](https://github.com/aws-samples/sample-bedrock-takc-compression),单命令 CDK 部署。 ## 适用条件 TAKC 适用于知识库变化不频繁、查询模式可预测、需要跨文档推理的场景(如金融尽调、合规审查)。对于每小时变化的知识库,RAG 的按查询检索模型更实用。 → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/beyond-rag-task-aware-knowledge-compression-for-enterprise-a.md) --- ## Ch10.036 向量库是RAG的前菜,知识图谱是答案,本体论是灵魂 > 📊 Level ⭐⭐ | 4.0KB | `entities/向量库是rag的前菜知识图谱是答案本体论是灵魂-v2.md` # 向量库是RAG的前菜,知识图谱是答案,本体论是灵魂 → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/向量库是rag的前菜知识图谱是答案本体论是灵魂-v2.md) ## 深度分析 向量库是RAG的前菜,知识图谱是答案,本体论是灵魂 涉及agent领域的核心技术议题。 ### 核心观点 1. 应该说向量库是一个理论上很美好的名词,他是一类用于存储和检索向量的数据系统,这里有两点要注意: 1. 2. ** 向量(embedding) ** ,可以将一段文本、图片、音频等内容,通过embedding模型编码成一个高维数组; 2. 3. ** 检索 ** ,现在拿着一个查询向量,理想情况下向量库可以快速找到 ** 最相似的Top-K ** 条类目,这里可以带上原文片段等信息; 所以, ` 向量库找的是语义相近,而不是关键词查询。 4. ` 比如你去搜苹果,系统不可能给到你iPhone手机的,当向量库可以将他搜出来,于是大家就开始兴奋了。 5. 这似乎意味着: ` 我们从关键词查询进入了语义查询了! ### 内容结构 - 向量库是RAG的前菜,知识图谱是答案,本体论是灵魂 - unset unset 传统RAG unset unset - unset unset 知识图谱 unset unset - unset unset 知识图谱 → CDSS unset unset - CDSS的核心原理 - 第一,知识库不全 - 第二,泛化能力不足 - unset unset 图谱 VS 知识库 unset unset ### 技术要点 - **agent架构**: 本文在agent方向提出的设计理念与实现路径 - **工程挑战**: 实际落地中面临的关键问题与应对策略 - **code趋势**: 相关技术演进方向与新兴范式 ### 关联实体 - [Karpathy 最新访谈从 Vibe Coding 到 Agentic Engineering](https://github.com/QianJinGuo/wiki/blob/main/entities/karpathy-最新访谈从-vibe-coding-到-agentic-engineering.md) - [Karpathy Vibe Coding Agentic Engineering](https://github.com/QianJinGuo/wiki/blob/main/entities/karpathy-vibe-coding-agentic-engineering.md) - [Openclaw 完全指南这可能是全网最新最全的系统化教程了32W字建议收藏](https://github.com/QianJinGuo/wiki/blob/main/entities/openclaw-完全指南这可能是全网最新最全的系统化教程了32w字建议收藏.md) - [Agentops Operationalize Agentic Ai At Scale With Amazon Bedr](https://github.com/QianJinGuo/wiki/blob/main/entities/agentops-operationalize-agentic-ai-at-scale-with-amazon-bedr.md) - [存之有序治之有矩Agent 记忆系统的工程实践与演进](https://github.com/QianJinGuo/wiki/blob/main/entities/存之有序治之有矩agent-记忆系统的工程实践与演进.md) - [你不知道的 Agent原理架构与工程实践 V2](https://github.com/QianJinGuo/wiki/blob/main/entities/你不知道的-agent原理架构与工程实践-v2.md) ## 实践启示 1. **工程落地**: agent领域方案需关注可观测性、可维护性和成本效率 2. **技术选型**: 根据场景选择合适的技术栈,避免过度设计或盲目追新 3. **持续迭代**: 建立数据驱动的反馈闭环,持续优化系统表现 4. **风险管控**: 引入新技术需评估对现有系统稳定性的影响,做好降级预案 --- ## Ch10.037 3 倍于 VectorDBBench 榜首,火山 Milvus 如何把向量检索拉到新高度 > 📊 Level ⭐⭐ | 3.2KB | `entities/3-倍于-vectordbbench-榜首火山-milvus-如何把向量检索拉到新高度.md` # 3 倍于 VectorDBBench 榜首,火山 Milvus 如何把向量检索拉到新高度 # 3 倍于 VectorDBBench 榜首,火山 Milvus 如何把向量检索拉到新高度 --- source: wechat source_url: https://mp.weixin.qq.com/s/e7sMz_eCK4IuCTbMyPM2Tg ingested: 2026-07-08 source_published: 2026年7月8日 17:00 --- # 3 倍于 VectorDBBench 榜首,火山 Milvus 如何把向量检索拉到新高度 大模型持续推高内存存储需求与硬件成本,硬件成本正成为制约向量检索规模化的最大瓶颈之一;海量向量场景下,如何在固定预算内平衡**“吞吐、延迟、召回率与数据导入效率”** 等各项性能指标成为业务扩张核心难题。 火山 Milvus 上线之初即集成业界先进的 DiskANN + RaBitQ 算法。依托该能力,其性能版较开源版本性能提升 30%以上,磁盘版性能更是领先开源版本 5 倍以上,详情可参考[ 5 倍性能优于开源版,火山 Milvus 集成 DiskANN + RaBitQ]()。 本次,火山 Milvus 通过进一步优化向量检索算法与在线查询链路,再次刷新了性能上限:**在固定成本下,延续上次相比开源 Milvus 实现超过 5 倍性能提升外,本次更是达到了 VectorDBBench 榜首近 3 倍,让向量数据库在真实在线场景中的性价比持续领先。** **超越 VectorDBBench 榜首的高性能** 作为向量数据库、 → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/3-倍于-vectordbbench-榜首火山-milvus-如何把向量检索拉到新高度.md) ## 第 2 Source — 字节跳动技术团队 > From WeChat MP 字节跳动技术团队, supplemental coverage of the same topic. -> [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/3-倍于-vectordbbench-榜首火山-milvus-如何把向量检索拉到新高度-2026-07-08.md) --- ## 关联 - 相关概念: [Harness Engineering](https://github.com/QianJinGuo/wiki/blob/main/concepts/harness-engineering-framework.md) --- ## Ch10.038 GraphRAG 实测:朴素 RAG 调优可胜复杂图谱方案 > 📊 Level ⭐⭐ | 3.1KB | `entities/graphrag-needed-aws-9-rag-comparison-2026.md` # GraphRAG 实测:朴素 RAG 调优可胜复杂图谱方案 AWS 生成式 AI 创新中心与 Cisco 联合研究,在 STaRK-Prime 数据集上统一评测 9 种 RAG 方案,发现简单方案调优后可胜过复杂 GraphRAG/Agentic RAG。 ## 9 种方案三大类 | 类别 | 场景 | 核心思路 | |------|------|----------| | Regular RAG | 1-2 | 纯文档检索 / 文档+1-hop 关系 | | GraphRAG | 3-5 | 纯图谱 / 自动建图 / 混合遍历 | | Modular & Agentic | 6-9 | 固定流水线 / 多工具智能体 / 最少工具智能体 | ## 三个反直觉结果 **1. 文档+1-hop 干翻复杂 GraphRAG**:场景 2 Hit@1=0.6972 > 场景 5(混合 GraphRAG)≈0.6514。原因:按类型分组 vs 冗长三元组导致 lost-in-the-middle。 **2. 纯图谱搜索几乎废了**:场景 3 Hit@1=0.1376。光有结构没有语义不行。自动建图(场景 4)质量不稳定。 **3. 工具最少的智能体最强**:场景 8(仅一个检索工具)Hit@1=0.6881, MRR=0.7549,全场最高。加图谱工具反而变差。 ## 上下文工程(省 token 关键) - **关系分组的图表示**:entity1-(rel1 rel2 rel3)-entity2,token O(n)→O(1) - **图检索+文档去重**:统一子图,亚线性增长 - **Hybrid ReAct-ReWOO**:批量子问题打包一次检索 场景 5 省 53% token;场景 9 省 24% token + 指标反而提升。 ## 最核心洞察:检索-生成鸿沟 检索覆盖率 83.5%,模型实际利用率仅 47.9%——资料捞到了模型却"视而不见"。 三个原因: 1. **位置注意力衰减**:前 10% 命中率 85.5%,30-40% 暴跌到 26.3%,70%+ 归零 2. **模型偏爱标准答案**:21 个正确答案只挑 4 个 3. **问题措辞暗示数量**:单数问法让模型只吐一个答案 **启示**:Hit@k/MRR 等检索指标高估了高级策略的真实收益,应分开评测检索覆盖率和生成利用率。 ## 与现有知识库的关联 - [RAG 全链路](https://github.com/QianJinGuo/wiki/blob/main/entities/rag-full-pipeline-taobao.md):淘宝 RAG 实践侧重工程落地,本文侧重方案对比和评测方法论 - [上下文工程](https://github.com/QianJinGuo/wiki/blob/main/concepts/context-engineering.md):本文的 token 去重和 Hybrid ReAct-ReWOO 是上下文工程的具体实现 - [DREAM 检索器](https://github.com/QianJinGuo/wiki/blob/main/entities/dream-dense-retrieval-autoregressive-modeling-challengehub-2026.md):DREAM 改进检索质量,本文揭示检索后还有生成鸿沟 - [Lost in the Middle](https://github.com/QianJinGuo/wiki/blob/main/concepts/lost-in-the-middle.md):本文用实证量化了位置衰减对 RAG 生成的影响 → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/graphrag-needed-aws-9-rag-comparison-2026.md) --- ## Ch10.039 Query-Aware Compression: RAG 成本优化的后检索过滤模式 > 📊 Level ⭐⭐ | 2.4KB | `entities/query-aware-rag-cost-compression-pattern.md` # Query-Aware Compression: RAG 成本优化的后检索过滤模式 ## 核心洞察:小模型过滤检索块 RAG 检索通常调高召回率,返回大量潜在相关块(top-k 常见 5-20),导致每次调用输入 token 数高达数千,成为规模化 RAG 的主要成本。**Query-aware compression** 的核心模式:在检索之后、最终回答调用之前,插入一个**更小、更便宜的模型**,让它读取检索块 + 用户查询,输出仅与问题相关的**逐字 span**(verbatim spans);主模型(更大的昂贵模型)随后只接收过滤后的上下文生成答案。 ## 经济性原理 收益取决于两个因素:小/主模型的**单价比**(price ratio)和压缩比 `c`。对单次 RAG 查询,输入 token `R`、压缩比 `c>1`、输出 `A` token,通过减小送入主模型的输入 token 数实现成本节省。**次要收益**:移除无关上下文缩小幻觉表面。 ## 架构与叠加 小模型(Claude Haiku)做压缩调用、主模型(Claude Sonnet)做回答调用,两者在同一个 AWS Lambda 中运行;检索器(Amazon Bedrock Knowledge Bases,OpenSearch Serverless 支撑)嵌入查询并返回 top-k 块。该模式可叠加在既有能力上实现复合节省:prompt caching、智能提示路由(Intelligent Prompt Routing)、Rerank API。 ## 与既有 RAG 优化体系的关系 这是 [RAG 高级优化](https://github.com/QianJinGuo/wiki/blob/main/concepts/retrieval-augmented-generation-advanced.md) 家族中"后检索处理"(post-retrieval processing)的具体实例,与 [分块/向量化/召回/重排](https://github.com/QianJinGuo/wiki/blob/main/entities/rag-chunking-vectorization-rerank-distillation.md) 互补:后者优化检索质量,本文优化检索后的 token 成本。它与 [上下文管理](https://github.com/QianJinGuo/wiki/blob/main/concepts/context-management-agent-systems.md) 主题共享"在昂贵模型前精炼输入"的思想。 → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/reduce-rag-costs-on-amazon-bedrock-with-query-aware-compress.md) --- ## Ch10.040 WWW 2026 | 强化学习重塑GraphRAG,多跳推理F1提升83.81% > 📊 Level ⭐⭐ | 2.4KB | `entities/www-2026-强化学习重塑graphrag多跳推理f1提升8381.md` # WWW 2026 | 强化学习重塑GraphRAG,多跳推理F1提升83.81% > WeChat-PaperWeekly | 发布于 2026-08-10 | 评分入库 v×c≥49 ## 核心内容 原创 让你更懂AI的 2026-08-10 18:09 北京 给RAG装上自主检索能力 检索增强生成(RAG)可以让大语言模型通过外挂知识库博览群书。然而,RAG 遇到需要“拐几个弯”才能回答的复杂问题仍然容易翻车。检索工具擅长匹配相似的信息,却不擅长捕捉解决问题所需要的底层推理逻辑。 来自南开大学、北航、港科大(广州)、华为等机构的研究者提出 GraphRAG-R1,通过创新的“过程约束强化学习"机制,让大模型学会在知识图谱上自主推理、按需检索。 方法在多个复杂推理数据集上取得 SOTA 成绩,F1 分数最高提升 83.81%,并能即插即用地适配各类 RAG 系统,带来平均 20%+ 的稳定性能增益。 该工作已被万维网顶级会议 WWW 2026 接收为 Oral(317 / 3370,录用比前 10%)。 论文标题: GraphRAG-R1: Graph Retrieval-Augmented Generation with Process-Constrained Reinforcement Learning 论文地址: 📊 Level ⭐⭐ | 1.1KB | `entities/rarg-relevance-aware-ripgrep-search-agent-tencent-2026.md` > -> [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/rarg-relevance-aware-ripgrep-search-agent-tencent-2026.md) 很多检索 Agent 的瓶颈,在于找到相关文档之后,能否尽快定位并组合真正有用的证据。传统 retrieval agent 依赖 top-k 文档召回,效率高,但复杂问题里的关键证据常常藏得更深;直接用 grep 式工具搜索原始语料虽然更细,但如果缺少相关性引导,线索往往来得太晚,搜索也更容易发散。 ## 来源 - 原文: [腾讯新研究:让Agent在语料中搜得更快、更准](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/rarg-relevance-aware-ripgrep-search-agent-tencent-2026.md) - 原始链接: : "https://www.xiaohongshu.com/discovery/item/6a6b20ab000000002402cf58 --- ## Ch10.042 RAG for Documents > 📊 Level ⭐⭐ | 0.6KB | `entities/rag-for-documents.md` # RAG for Documents > -> [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/nvidia-nemotron-3-agents-rag-voice-safety.md) ## 概述 ## 来源 - [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/nvidia-nemotron-3-agents-rag-voice-safety.md) - 原始链接: https://developer.nvidia.com/blog/building-nvidia-nemotron-3-agents-for-reasoning-multimodal-rag-voice-and-safety/ --- ## Ch10.043 Ettin Reranker Family > 📊 Level ⭐⭐⭐ | 15.1KB | `entities/ettin-reranker-family.md` ## 模型概览 该系列包含六个尺寸变体,均采用相同的模块化架构,仅在 backbone 规模上有所区别 : | 模型 | Backbone | Hidden size | Layers | 参数量 | |------|----------|-------------|--------|--------| | [`cross-encoder/ettin-reranker-17m-v1`](https://huggingface.co/cross-encoder/ettin-reranker-17m-v1) | [`jhu-clsp/ettin-encoder-17m`](https://huggingface.co/jhu-clsp/ettin-encoder-17m) | 256 | 7 | 17.6M | | [`cross-encoder/ettin-reranker-32m-v1`](https://huggingface.co/cross-encoder/ettin-reranker-32m-v1) | [`jhu-clsp/ettin-encoder-32m`](https://huggingface.co/jhu-clsp/ettin-encoder-32m) | 384 | 10 | 32.8M | | [`cross-encoder/ettin-reranker-68m-v1`](https://huggingface.co/cross-encoder/ettin-reranker-68m-v1) | [`jhu-clsp/ettin-encoder-68m`](https://huggingface.co/jhu-clsp/ettin-encoder-68m) | 512 | 19 | 68.6M | | [`cross-encoder/ettin-reranker-150m-v1`](https://huggingface.co/cross-encoder/ettin-reranker-150m-v1) | [`jhu-clsp/ettin-encoder-150m`](https://huggingface.co/jhu-clsp/ettin-encoder-150m) | 768 | 22 | 150.9M | | [`cross-encoder/ettin-reranker-400m-v1`](https://huggingface.co/cross-encoder/ettin-reranker-400m-v1) | [`jhu-clsp/ettin-encoder-400m`](https://huggingface.co/jhu-clsp/ettin-encoder-400m) | 1024 | 28 | 401.6M | | [`cross-encoder/ettin-reranker-1b-v1`](https://huggingface.co/cross-encoder/ettin-reranker-1b-v1) | [`jhu-clsp/ettin-encoder-1b`](https://huggingface.co/jhu-clsp/ettin-encoder-1b) | 1792 | 28 | 1.00B | 所有模型均支持最高 **8192 tokens** 的上下文长度,这得益于 ModernBERT 的 long-context 预训练设计 。 ## 核心设计 ### Architecture 每个 reranker 的分类头包含 4 个模块 : 1. Transformer(FA2) # 基础 Transformer,使用 Flash Attention 2
2. Pooling(cls) # CLS pooling 策略(实验证明优于 mean pooling)
3. Dense(H, H, bias=False, GELU) # 中间非线性层
4. LayerNorm(H) # 层归一化
5. Dense(H, 1, scores) # 输出单标量 relevance score
与标准的 `AutoModelForSequenceClassification` 不同,该架构使用 `AutoModel` 加载 Transformer(即 "headless" Transformer),这一设计允许 **sequence unpadding** 以适配 Flash Attention 2,在中等文档长度下可获得 **1.7x-8.3x** 的速度提升 。 ### 训练方法:Pointwise MSE Distillation Ettin Reranker 采用 **pointwise MSE 蒸馏** 而非传统的对比学习或 pairwise loss : - **Teacher**: [`mixedbread-ai/mxbai-rerank-large-v2`](https://huggingface.co/mixedbread-ai/mxbai-rerank-large-v2)(1.54B 参数量) - **Loss**: [`MSELoss`](https://sbert.net/docs/package_reference/cross_encoder/losses.html#mseloss),直接拟合教师模型的原始 logits(范围约 [-12, 22]) - **Training data**: ~143M `(query, document, teacher_score)` 三元组 作者选择蒸馏而非传统对比学习的原因在于:人工标注的正样本成本高且规模受限,而 MSE 蒸馏可以直接利用教师模型的细粒度相关性分数进行学习 。 ### 训练数据 数据集 [`cross-encoder/ettin-reranker-v1-data`](https://huggingface.co/datasets/cross-encoder/ettin-reranker-v1-data) 包含约 143M 三元组,来源于两个部分 : 1. **LightOn 预训练数据**([`lightonai/embeddings-pre-training`](https://huggingface.co/datasets/lightonai/embeddings-pre-training)):32 个 broad-domain 细分,涵盖 MTP、FW-EDU、Reddit、PAQ、S2ORC、Amazon、Wikipedia、MS MARCO 等领域,约 110M 三元组 2. **重排序的检索数据**([`lightonai/embeddings-fine-tuning`](https://huggingface.co/datasets/lightonai/embeddings-fine-tuning)):7 个细分(msmarco、hotpotqa、trivia、nq、squadv2、fiqa、fever),每个 query 有 2048 个候选文档,用教师模型重排序后按 quantile-anchor 方法采样 64 个 ## 性能表现 ### MTEB(eng, v2) Retrieval Benchmark 在 [MTEB](https://github.com/embeddings-benchmark/mteb) 英文检索基准上,Ettin Reranker 家族在各自参数量级上均达到 **state-of-the-art** : | Reranker | 参数量 | MTEB NDCG@10 | |----------|--------|--------------| | [`Qwen/Qwen3-Reranker-4B`](https://huggingface.co/Qwen/Qwen3-Reranker-4B) | 4.02B | 0.6367 | | [`mixedbread-ai/mxbai-rerank-large-v2`](https://huggingface.co/mixedbread-ai/mxbai-rerank-large-v2)(教师) | 1.54B | 0.6115 | | **[`cross-encoder/ettin-reranker-1b-v1`](https://huggingface.co/cross-encoder/ettin-reranker-1b-v1)** | **1.00B** | **0.6114** | | **[`cross-encoder/ettin-reranker-400m-v1`](https://huggingface.co/cross-encoder/ettin-reranker-400m-v1)** | **401M** | **0.6091** | | **[`cross-encoder/ettin-reranker-150m-v1`](https://huggingface.co/cross-encoder/ettin-reranker-150m-v1)** | **151M** | **0.5994** | | **[`cross-encoder/ettin-reranker-68m-v1`](https://huggingface.co/cross-encoder/ettin-reranker-68m-v1)** | **68.6M** | **0.5915** | | **[`cross-encoder/ettin-reranker-32m-v1`](https://huggingface.co/cross-encoder/ettin-reranker-32m-v1)** | **32.8M** | **0.5779** | | **[`cross-encoder/ettin-reranker-17m-v1`](https://huggingface.co/cross-encoder/ettin-reranker-17m-v1)** | **17.6M** | **0.5576** | 值得注意的是,1B 模型与教师模型的差距仅 **0.0001**,400M 与教师的差距也只有 0.0024 。 ### 速度基准 在 H100 GPU(bf16 + FA2 + unpadding)上的吞吐量对比 : | 模型 | 参数量 | pairs/second | |------|--------|--------------| | [`cross-encoder/ettin-reranker-17m-v1`](https://huggingface.co/cross-encoder/ettin-reranker-17m-v1) | 17M | 7517 | | [`cross-encoder/ettin-reranker-32m-v1`](https://huggingface.co/cross-encoder/ettin-reranker-32m-v1) | 32M | 6602 | | [`cross-encoder/ettin-reranker-68m-v1`](https://huggingface.co/cross-encoder/ettin-reranker-68m-v1) | 68M | 4913 | | [`cross-encoder/ettin-reranker-150m-v1`](https://huggingface.co/cross-encoder/ettin-reranker-150m-v1) | 150M | 3237 | | [`cross-encoder/ettin-reranker-400m-v1`](https://huggingface.co/cross-encoder/ettin-reranker-400m-v1) | 400M | 1738 | | [`cross-encoder/ettin-reranker-1b-v1`](https://huggingface.co/cross-encoder/ettin-reranker-1b-v1) | 1B | 928 | 相比同尺寸的 `ms-marco-MiniLM-L*-v2` 系列,Ettin Reranker 在质量和速度上均有显著优势 。 ## 使用方法 ### 基本调用 from sentence_transformers import CrossEncoder
model = CrossEncoder("cross-encoder/ettin-reranker-32m-v1")
scores = model.predict([
("Where was Apple founded?", "Apple Inc. was founded in Cupertino, California in 1976 by Steve Jobs, Steve Wozniak, and Ronald Wayne."),
("Where was Apple founded?", "The Fuji apple is an apple cultivar developed in the late 1930s."),
])
# [11.393298 2.968891] <- larger means more relevant
### 推荐配置(最高吞吐量) from sentence_transformers import CrossEncoder
model = CrossEncoder(
"cross-encoder/ettin-reranker-32m-v1",
model_kwargs={
"dtype": "bfloat16",
"attn_implementation": "flash_attention_2",
},
)
需要安装 `kernels` 包以获得 Flash Attention 2 支持 。 ### Retrieve-then-Rerank 流水线 典型生产部署采用两阶段架构 : from sentence_transformers import SentenceTransformer, CrossEncoder
# 阶段1:快速 embedding 检索(亚毫秒级)
embedder = SentenceTransformer("sentence-transformers/static-retrieval-mrl-en-v1")
reranker = CrossEncoder("cross-encoder/ettin-reranker-68m-v1")
# 编码 + 检索 top-100
query_emb = embedder.encode_query(query, convert_to_tensor=True)
corpus_emb = embedder.encode_document(corpus, convert_to_tensor=True)
scores = embedder.similarity(query_emb, corpus_emb)[0]
top_k_idx = scores.topk(min(100, len(corpus))).indices.tolist()
# 阶段2:精排序
top_k_docs = [corpus[i] for i in top_k_idx]
ranked = reranker.rank(query, top_k_docs, top_k=5, return_documents=True)
## 与其他模型的关系 - **Ettin encoders**:Ettin Reranker 的 backbone,来源于 JHU CLSP 的 [Ettin](https://huggingface.co/collections/jhu-clsp/encoders-vs-decoders-the-ettin-suite) 项目,是 ModernBERT 风格的编码器 - **mxbai-rerank-large-v2**:蒸馏的教师模型,Ettin Reranker 1B 与其差距仅 0.0001 - **ms-marco-MiniLM-L*-v2**:传统的 reranker 基线,Ettin Reranker 在所有尺寸上均显著优于该系列 ## 技术亮点总结 1. **蒸馏优先**:选择 MSE 蒸馏而非对比学习,避免了 hard negative 标注成本高、false negative 多的缺点 2. **模块化架构**:使用 headless Transformer + Flash Attention 2 + unpadding 实现高效注意力,相比 AutoModelForSequenceClassification 有显著速度优势 3. **超大规模预训练数据**:143M 三元组覆盖 broad-domain 和检索特定任务,single-stage 训练即可在不同尺寸间迁移 4. **全尺寸 SoTA**:17M 到 1B 每个尺寸级别均达 state-of-the-art,1B 模型几乎追平教师 ## 深度分析 **蒸馏策略的工程价值**:Ettin Reranker 选择 MSE 蒸馏而非对比学习是务实且高效的决策。传统对比学习依赖人工标注的 hard negatives,成本高且规模受限,而蒸馏直接利用教师模型的细粒度相关性分数(logits range ~[-12, 22]),可以从未标注的大规模语料中学习。1B 模型与教师的差距仅 0.0001(NDCG@10),说明蒸馏在 54% 参数缩减情况下几乎完全继承了教师的判断能力 。 **Sequence unpadding 是 FA2 性能释放的关键**:实验数据揭示了一个反直觉的结论:仅开启 FA2 但保持 padded 输入反而比 bf16+SDPA 更慢(Table 2, line 388)。Ettin Reranker 通过 `AutoModel` 加载 headless Transformer,将 unpadding 机制穿透到每一层,使 FA2 的 kernel 免于处理无意义的 padding token。这是 150M 模型比两个同类 ModernBERT reranker(gte-reranker、granite-reranker)快 2.3 倍的直接原因 。 **生产选型的"甜蜜点"洞察**:68M 模型 landing at 0.5915 NDCG@10 与 Qwen3-Reranker-0.6B(596M)的 0.5940 几乎持平,而体积差距达 9 倍。这说明 reranker 的质量收益存在边际递减——在特定 embedding model 搭配下,中小尺寸模型已能捕获绝大部分排序能力。对于资源受限场景,68M 是性价比最优选;对于需要替换教师模型的大规模部署,1B 以 2.4x 吞吐量优势成为首选 。 **训练效率与规模迁移的工程意义**:每个尺寸仅需调整学习率,其余超参数完全一致,且 LR 可从子集实验干净迁移到全量数据。这得益于 143M 超大规模训练集——模型在单 epoch 内充分学习,不需要多轮迭代。这意味着新尺寸的模型从立项到发布周期极短,为持续扩展模型家族奠定了工程基础 。 **RTX 3090 消费者场景的特殊观察**:17M 在 RTX 3090 上的吞吐量(9008 pairs/s)居然高于 H100(7517 pairs/s),这提示在极小尺寸下计算不再是瓶颈,GPU 架构差异不贡献优势。但随着模型增大,H100 的优势迅速显现,1B 在 H100 上是 3090 的 4.9 倍。这一观察对边缘部署和低成本实验场景有直接参考价值 。 ## 实践启示 **1. 立即替换 MiniLM 基线**:对于仍在使用 `ms-marco-MiniLM-L*-v2` 系列的生产系统,17M 和 32M 是零风险的 drop-in 替换。17M 比 MiniLM-L12-v2 快 2.3 倍且 NDCG@10 高 +0.051;32M 比 568M 的 BAAI/bge-reranker-v2-m3 快 17 倍且更准确。只需修改模型名称,所有现有调用代码无需改动 。 **2. 生产部署务必启用 bf16+FA2 组合**:标准配置应为 `model_kwargs={"dtype": "bfloat16", "attn_implementation": "flash_attention_2"}`,并通过 `pip install kernels` 安装预编译 FA2 kernels。bf16 对大模型的加速贡献最大(1B 模型:bf16+SDPA 比 fp32+SDPA 快 5.6 倍),FA2 unpadding 再叠加 1.78x-2.45x。小模型(17M/32M)尤其推荐开启,32M 在该配置下达到 6602 pairs/s 。 **3. 高 QPS 场景优先考虑 68M 而非 150M**:68M 在 4913 pairs/s 速度下提供 0.5915 NDCG@10,与 150M 的 0.5994 仅差 0.008,但速度快 1.5 倍。在 retrieve-then-rerank 流水线中,reranker 的作用是对 top-100 做精排,NDCG@10 的微小差距在 top-5 结果中几乎不可感知,而吞吐量差异直接影响单实例支持的并发量 。 **4. 使用 NanoBEIR 作为快速实验评估集**:NanoBEIR(13 个数据集子集,50 queries/dataset)比完整 MTEB(10 个任务)评估速度快数倍,但与完整 MTEB 的 checkpoint 选择高度一致(20 次/训练-run 的 eval 可行)。在进行模型尺寸选择、LR 超参搜索或架构消融时,先在 NanoBEIR 上快速迭代,最终用完整 MTEB 验证,可显著缩短实验周期 。 **5. 关注 embedding model + reranker 配对效应**:单独比较 reranker 质量不够——6 个 embedding model 搭配 Ettin Reranker 家族产生 36 种组合。固定 reranker 切换 embedder,或固定 embedder 切换 reranker,组合效果差异可能超过单个组件的升级收益。生产选型时应以端到端 pipeline(NDCG@10)为评估指标,而非孤立的模型 benchmark 。 ## 相关实体 - [Introducing The Ettin Reranker Family](https://github.com/QianJinGuo/wiki/blob/main/entities/introducing-the-ettin-reranker-family.md) - [Claude Code Openclaw Usage Ettin](https://github.com/QianJinGuo/wiki/blob/main/entities/claude-code-openclaw-usage-ettin.md) - [Gemma 4 Multi Token Prediction Drafters](https://github.com/QianJinGuo/wiki/blob/main/entities/gemma-4-multi-token-prediction-drafters.md) - [Continuousasync](https://github.com/QianJinGuo/wiki/blob/main/entities/continuousasync.md) - [Continuous Async](https://github.com/QianJinGuo/wiki/blob/main/entities/continuous-async.md) → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/ettin-reranker-family.md) - [the next generation of speculative decoding: dflash and spec](https://github.com/QianJinGuo/wiki/blob/main/entities/lmsys-dflash-speculative-decoding-2026-06.md) ## 参考文献 - [Ettin Reranker Blog Post](https://huggingface.co/blog/ettin-reranker)(Tom Aarsen, 2026-05-19) - [cross-encoder/ettin-reranker-v1-data](https://huggingface.co/datasets/cross-encoder/ettin-reranker-v1-data)(训练数据集) - [Ettin Encoders Collection](https://huggingface.co/collections/jhu-clsp/encoders-vs-decoders-the-ettin-suite) --- ## Ch10.044 Multi-Vector (Late Interaction) Embedding Models with Sentence Transformers > 📊 Level ⭐⭐⭐ | 3.0KB | `entities/multi-vector-late-interaction-embedding-models-with-sentence.md` # Multi-Vector (Late Interaction) Embedding Models with Sentence Transformers ## 核心思想:把「压缩损失」留到打分阶段 普通 dense embedding 把一段文本压成一个定长向量,罕见实体、精确 ID、长段落里的关键从句都要挤进同一个向量里竞争空间;多条件查询(如"绿色沙发+木腿+圆坐垫")也会被折成一个点。多向量模型(late-interaction / ColBERT 家族)避开这层压缩:同样跑 transformer,但把每个 token embedding 投影到小维度(经典 128)并全部保留,一篇 9-token 文档变成 9×128 矩阵,而非 1×128 向量。 cross-encoder 交互最早(query 与 doc 一起过模型,最准但 doc 无法离线预计算);bi-encoder 交互最少(一个点积,可离线索引、查询快);late-interaction 介于两者之间——文档仍独立编码、可离线建索引,但打分时让每个 query token 与每个 document token 交互,保留 token 级匹配信息。 ## MaxSim 算子 打分用 MaxSim:对每个 query token 取它与任一 document token 的最高相似度,再对 query 求和。token embedding 经 L2 归一化,每个点积都是 [-1,1] 的余弦相似度,总和落在 [-num_query_tokens, num_query_tokens]。它把单向量模型必须平均掉的 token 级匹配信息保留下来,通常换来更强的召回,代价是更大的索引。 ## 多向量模型的形态与 SOTA 场景 多向量模型是**视觉文档检索**的当前 SOTA:文本 query 直接与页面图像匹配、无需中间 OCR 步骤。同一套 `sentence-transformers`(`pip install -U sentence-transformers`)即可加载各类 checkpoint、编码打分、接入检索栈、在页面图像上运行并控制索引成本;也覆盖音频与视频检索、token pooling、推理加速与评估。 ## 互补定位 - 与 [InstEmB](https://github.com/QianJinGuo/wiki/blob/main/entities/instemb-instruction-following-embeddings-2026.md)、[Douyin DME](https://github.com/QianJinGuo/wiki/blob/main/entities/douyin-dme-multimodal-embedding-multimodal-retrieval.md) 等单向量/多模态 embedding 不同,本文聚焦 late-interaction 的工程使用(加载、编码、MaxSim 打分、视觉无 OCR 检索、索引降本)。 - 适用:RAG 检索、视觉文档检索、需要 token 级精确匹配的场景;代价是索引体积随 token 数线性增长。 → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/multi-vector-late-interaction-embedding-models-with-sentence.md) --- ## Ch10.045 文件上传即可检索:实时多模态向量链路落地实践(字节跳动) > 📊 Level ⭐⭐⭐ | 1.7KB | `entities/file-upload-multimodal-vector-pipeline-real-time-2026-08-04.md` # 文件上传即可检索:实时多模态向量链路落地实践 ## 核心内容 字节跳动技术团队分享的实时多模态向量链路:用户上传文件(文档/图片/音视频)后,系统自动完成多模态解析、向量化、索引,实现"上传即可检索"的 RAG 能力。覆盖从数据接入、模态解析、embedding 到向量检索的完整链路设计。 ## 链路要点 - **多模态解析**:统一接入文档/图片/音频/视频,分模态走对应解析管线 - **实时索引**:上传 → 解析 → 向量化 → 入库的端到端低延迟链路 - **向量检索**:与既有业务查询共用检索层,支持语义检索 - **落地实践**:包含具体技术组件选型与工程细节 ## 与既有实体的关系 与 [Gemini Embedding 2 多模态统一向量](https://github.com/QianJinGuo/wiki/blob/main/entities/gemini-embedding-2-multimodal-unified-vector-hyman.md) 互补——前者是模型侧多模态 embedding 能力,本文是工程侧多模态向量链路落地。可参考 [火山 Milvus 向量检索](https://github.com/QianJinGuo/wiki/blob/main/entities/3-倍于-vectordbbench-榜首火山-milvus-如何把向量检索拉到新高度.md) 的性能基准作为选型参照。 ## 引用来源 → [原文存档](https://github.com/QianJinGuo/wiki-book/tree/main/docs/raw/articles/file-upload-multimodal-vector-pipeline-real-time-2026-08-04.md) ---