## 相关实体 - [Tcjndrk4Frmumngmboih W](https://github.com/QianJinGuo/wiki/blob/main/entities/tCjNDrk4fRMUmngmbOih-w.md) - [Google Workspace Updates Small Businesses Can Now Import Use](../ch01-749-google-workspace-updates-small-businesses-can-now-seamlessl) - [Identity Behavior Context Itdr Solution](../ch01-101-identity-behavior-context-itdr-solution-teleport) - [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](../ch01-036-microsoft-is-quietly-shopping-for-an-openai-replacement) → [原文存档](https://raw.githubusercontent.com/QianJinGuo/wiki/main/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](../ch01-101-identity-behavior-context-itdr-solution-teleport) - [Harness Engineering Framework](../ch05-041-harness-engineering-概念框架) - [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](../ch01-585-微软-agent-framework-全栈指南-从-hello-agent-到生产托管-python) → [原文存档](https://raw.githubusercontent.com/QianJinGuo/wiki/main/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 向量库是RAG的前菜,知识图谱是答案,本体论是灵魂 > 📊 Level ⭐⭐ | 49.6KB | `entities/向量库是rag的前菜知识图谱是答案本体论是灵魂.md` [向量库是Rag的前菜知识图谱是答案本体论是灵魂](https://raw.githubusercontent.com/QianJinGuo/wiki/main/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](../ch01-297-google-agentic-rag-sufficient-context-agent-framesqa-90) - [Architecture Data Foundations For Ai Powered Search](../ch01-653-architecture-data-foundations-for-ai-powered-search) - [Rag技术框架的演进方向](../ch01-193-rag技术框架的演进方向) - [Skill Rag Tsinghua Sra](../ch04-430-skill-retrieval-augmentation-for-agentic-ai-清华-skill-rag) - [Harness Engineering Framework](../ch05-041-harness-engineering-概念框架) → [原文存档](https://raw.githubusercontent.com/QianJinGuo/wiki/main/raw/articles/向量库是rag的前菜知识图谱是答案本体论是灵魂-v2.md) --- ## Ch10.004 rag-vector-knowledge-graph-ontology > 📊 Level ⭐⭐ | 26.0KB | `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](../ch04-318-一文看懂三种-rag-架构-classic-rag-graph-rag-与-agentic-rag) - [Nvidia Multimodal Rag Knowledge Systems](../ch01-272-multimodal) - [Rag技术框架的演进方向](../ch01-193-rag技术框架的演进方向) - [Skill Rag Tsinghua Sra](../ch04-430-skill-retrieval-augmentation-for-agentic-ai-清华-skill-rag) - [Harness Engineering Framework](../ch05-041-harness-engineering-概念框架) → [原文存档](https://raw.githubusercontent.com/QianJinGuo/wiki/main/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://raw.githubusercontent.com/QianJinGuo/wiki/main/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://raw.githubusercontent.com/QianJinGuo/wiki/main/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://raw.githubusercontent.com/QianJinGuo/wiki/main/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://raw.githubusercontent.com/QianJinGuo/wiki/main/raw/articles/sag-knowledge-engine-sql-rag-vibecoder-vibe-2026-06-17.md) --- ## Ch10.005 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](../ch04-043-nvidia-nemotron-3-agents-rag-voice-safety) - [Nvidia Extreme Co Design Agentic Systems](../ch04-040-nvidia-extreme-co-design-agentic-systems) - [Nvidia Agentic Ai Subsurface Engineering](../ch04-313-nvidia-agentic-ai-subsurface-engineering) - [Nvidia Secure Local Agent Nemoclaw Openclaw](../ch04-339-nvidia-secure-local-agent-nemoclaw-openclaw) - [Nvidia Telco Reasoning Models Nemo](../ch01-178-nvidia-telco-reasoning-models-nemo) - [MOC](https://github.com/QianJinGuo/wiki/blob/main/moc/nvidia-gpu-acceleration.md) → [原文存档](https://raw.githubusercontent.com/QianJinGuo/wiki/main/raw/articles/nvidia-multimodal-rag-knowledge-systems.md) --- ## Ch10.006 RAG 分块优化 2025:策略选择与工程实践 > 📊 Level ⭐⭐ | 17.9KB | `entities/rag-chunking-optimization-2025.md` ## 相关实体 - [elasticpp重塑elasticsearch查询性能的c内核引擎](https://github.com/QianJinGuo/wiki/blob/main/entities/elasticpp重塑elasticsearch查询性能的c内核引擎.md) → [原文存档:分块向量化召回重排](https://raw.githubusercontent.com/QianJinGuo/wiki/main/raw/articles/rag-chunking-vectorization-rerank-distillation.md) → [原文存档:全链路技术详解](https://raw.githubusercontent.com/QianJinGuo/wiki/main/raw/articles/rag-full-pipeline-taobao.md) → [原文存档:流水线](https://raw.githubusercontent.com/QianJinGuo/wiki/main/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 深度解析:分块向量化召回重排](../ch01-327-rag-深度解析-分块向量化召回重排才是蒸馏同事-skill-的关键) - [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 记忆系统工作原理](../ch04-145-how-ai-agent-memory-works) ## 深度分析 **入库质量决定 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.007 Manufacturing Intelligence with Amazon Nova Multimodal Embeddings > 📊 Level ⭐⭐ | 16.5KB | `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 微调](../ch11-054-amazon-nova-lite-fine-tuning-高性价比的视觉检测模型微调案例与实践-亚马逊aws官方博) 的关系 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://raw.githubusercontent.com/QianJinGuo/wiki/main/raw/articles/amazon-nova-manufacturing-intelligence.md) → [Amazon Bedrock 模型推理无服务器架构案例](../ch11-067-amazon-bedrock-model-inference-serverless-architecture-case) → [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 内容审核提示工程](../ch01-387-prompting-amazon-nova-2-for-content-moderation) → [Amazon Bedrock AgentCore 运行时深度解析](../ch11-068-快时尚电商行业智能体设计思路与应用实践-七-amazon-bedrock-agentcore-runtime-深度解析和) ## 相关实体 - [MOC](https://github.com/QianJinGuo/wiki/blob/main/moc/amazon-aws-ai.md) --- ## Ch10.008 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](../ch04-139-ai-agent-工程师能力地图) - [Aws Sagemaker Ai Agent Guided Workflows Finetuning](../ch04-345-aws-sagemaker-ai-agent-guided-workflows-finetuning) - [Claude Code Search Architecture Tencent 2026](../ch01-537-原始文章存档) → [原文存档](https://raw.githubusercontent.com/QianJinGuo/wiki/main/raw/articles/rag-chunk-embedding-rerank-pipeline.md) RAG(Retrieval-Augmented Generation)流水线是 RAG 知识库从文档入库到答案生成的全链路工程实践,涵盖**离线阶段**(文档解析→清洗→分块→向量化→建索引)和**在线阶段**(查询改写→知识库路由→召回→重排→TopK/Score过滤→上下文拼接→大模型生成)。 - [prosemirror @文档 mention:知识库 agent 输入框的工程化实现](../ch04-225-prosemirror-文档-mention-知识库-agent-输入框的工程化实现) - [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://raw.githubusercontent.com/QianJinGuo/wiki/main/raw/articles/rag-chunk-embedding-rerank-pipeline.md) --- ## Ch10.009 RAG 全链路技术详解:从文档加载到 Ragas 评估 > 📊 Level ⭐⭐ | 12.7KB | `entities/rag-full-pipeline-taobao.md` → [原文存档](https://raw.githubusercontent.com/QianJinGuo/wiki/main/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](../ch05-036-harness-engineering-systematic-explainer) - [Agent 原理、架构与工程实践](../ch04-435-agent-engineering-principles-architecture-practice) - [AI Agent 工程师能力地图](../ch04-139-ai-agent-工程师能力地图) --- ## Ch10.010 花费 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](../ch01-749-google-workspace-updates-small-businesses-can-now-seamlessl) - [New And Improved Agent Governance Intelligent Workflows Connected App Exp](../ch04-459-new-and-improved-agent-governance-intelligent-workflows) - [Skillopt](../ch07-025-skillopt-微软训练-skill-文档的方法论) - [Two Harness Papers Microsoft Google](../ch01-567-两篇harness论文-微软m-记忆进化-谷歌autoharness动作约束) → [原文存档](https://raw.githubusercontent.com/QianJinGuo/wiki/main/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.011 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](../ch01-574-getting-llms-drunk-to-find-remote-linux-kernel-oob-writes-a) - [Agent Harness Architecture Design Production Guide](../ch04-021-agent-harness-架构设计与实现-生产级-agent-系统落地指南) - [Weve Been Here Before Ai Vulnerability Research](../ch01-457-weve-been-here-before-ai-vulnerability-research) - [Microsoft Zero Days Researcher Disgruntled](../ch12-089-mystery-microsoft-bug-leaker-keeps-the-zero-days-coming) - [5235705](../ch12-057-meta-u-turns-on-encryption-push-for-instagram-as-dms-go-plai) --- ## Ch10.012 【实践教程】真实AI客服落地全流程:意图识别、混合检索到数据飞轮 > 📊 Level ⭐⭐ | 7.6KB | `entities/实践教程真实ai客服落地全流程意图识别混合检索到数据飞轮.md` # 【实践教程】真实AI客服落地全流程:意图识别、混合检索到数据飞轮 > AI训练营 ** 9期 ** , ** 今日 ** 开班,欢迎咨询 书接上文: [ 《实践:AI客服实战方法论》 ](../ch10-) 之前我们详细介绍了 ** 空气小猪 AI 客服 ** 是如何一步步做出来的,但后续无论学员还是粉丝都依旧有很多的问题,所以最近几天我们在连续做 RAG 的课题。 今天的话,我们会上点更硬的货,会结合空气小猪这个案例,讲清楚我们如何从 0 到 1 搭建一套 AI 客服,包括: ## 相关实体 - [Rag技术框架的演进方向](../ch01-193-rag技术框架的演进方向) - [Skill Rag Tsinghua Sra](../ch04-430-skill-retrieval-augmentation-for-agentic-ai-清华-skill-rag) - [Harness Engineering Framework](../ch05-041-harness-engineering-概念框架) - [Anthropic Claude Code Large Codebase Best Practices 50002A089323](../ch01-677-anthropic) - [Aws Sagemaker Ai Agent Guided Workflows Finetuning](../ch04-345-aws-sagemaker-ai-agent-guided-workflows-finetuning) → [原文存档](https://raw.githubusercontent.com/QianJinGuo/wiki/main/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.013 Instacart 广告检索架构演进:从 BERT 打分到生成式 token-by-token 检索 > 📊 Level ⭐⭐ | 7.6KB | `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](../ch11-138-from-silos-to-service-topology-why-netflix-built-a-real-tim) → [原文存档](https://raw.githubusercontent.com/QianJinGuo/wiki/main/raw/articles/instacart-ads-retrieval-generative-token-by-token.md) --- ## Ch10.014 Notes on Amazon v. Perplexity > 📊 Level ⭐⭐ | 7.1KB | `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](../ch04-500-为了让agent更安全的工作-有多少人操碎了心) 中关于 agent 身份验证的探索,这可能是解决信任问题的技术路径 ## 相关实体 - [ATH Agent Trust Handshake Protocol](../ch04-500-为了让agent更安全的工作-有多少人操碎了心) — 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](../ch04-503-agentic-overlays-retrofit-legacy-rest-services-into-a2a-a) — 企业 agentic 架构转型 → [原文存档](https://raw.githubusercontent.com/QianJinGuo/wiki/main/raw/articles/amazon-perplexity-legal-analysis.md) --- ## Ch10.015 【实践教程】真实AI客服落地全流程:意图识别、混合检索到数据飞轮 > 📊 Level ⭐⭐ | 6.8KB | `entities/实践教程真实ai客服落地全流程意图识别混合检索到数据飞轮-v2.md` # 【实践教程】真实AI客服落地全流程:意图识别、混合检索到数据飞轮 > AI训练营 ** 9期 ** , ** 今日 ** 开班,欢迎咨询 ## 相关实体 - [Rag技术框架的演进方向](../ch01-193-rag技术框架的演进方向) - [Skill Rag Tsinghua Sra](../ch04-430-skill-retrieval-augmentation-for-agentic-ai-清华-skill-rag) - [Harness Engineering Framework](../ch05-041-harness-engineering-概念框架) - [Anthropic Claude Code Large Codebase Best Practices 50002A089323](../ch01-677-anthropic) - [Aws Sagemaker Ai Agent Guided Workflows Finetuning](../ch04-345-aws-sagemaker-ai-agent-guided-workflows-finetuning) → [原文存档](https://raw.githubusercontent.com/QianJinGuo/wiki/main/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://raw.githubusercontent.com/QianJinGuo/wiki/main/raw/articles/实践教程真实ai客服落地全流程意图识别混合检索到数据飞轮-v2.md) --- ## Ch10.016 Karpathy LLM Wiki V2:记忆生命周期 + 知识图谱 + 混合检索 + 落地路线图 > 📊 Level ⭐⭐ | 6.6KB | `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 中文概述](../ch01-271-karpathy-llm-wiki-v2-2026) 互补——原 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 V2 中文概述](../ch01-271-karpathy-llm-wiki-v2-2026) — 原版入门 - → [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://raw.githubusercontent.com/QianJinGuo/wiki/main/raw/articles/karpathy-llm-wiki-v2-deep-analysis-rohit-ghumare.md) --- ## Ch10.017 捅破个人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技术框架的演进方向](../ch01-193-rag技术框架的演进方向) - [Skill Rag Tsinghua Sra](../ch04-430-skill-retrieval-augmentation-for-agentic-ai-清华-skill-rag) - [Harness Engineering Framework](../ch05-041-harness-engineering-概念框架) - [Anthropic Claude Code Large Codebase Best Practices 50002A089323](../ch01-677-anthropic) - [Aws Sagemaker Ai Agent Guided Workflows Finetuning](../ch04-345-aws-sagemaker-ai-agent-guided-workflows-finetuning) → [原文存档](https://raw.githubusercontent.com/QianJinGuo/wiki/main/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.018 为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](../ch01-101-identity-behavior-context-itdr-solution-teleport) - [Oz Multi Harness Cloud Agent Orchestration](../ch04-409-agent-orchestration) - [看 Agentrun 如何玩转记忆存储最佳实践来了](../ch04-003-agentrun) → [原文存档](https://raw.githubusercontent.com/QianJinGuo/wiki/main/raw/articles/openclaw-cloud-storage-config-guide-wechat.md) --- ## Ch10.019 向量库是RAG的前菜,知识图谱是答案,本体论是灵魂 > 📊 Level ⭐⭐ | 3.9KB | `entities/向量库是rag的前菜知识图谱是答案本体论是灵魂-v2.md` # 向量库是RAG的前菜,知识图谱是答案,本体论是灵魂 → [原文存档](https://raw.githubusercontent.com/QianJinGuo/wiki/main/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](../ch04-125-karpathy-最新访谈-从-vibe-coding-到-agentic-engineering) - [Karpathy Vibe Coding Agentic Engineering](../ch04-070-从氛围编程到智能体工程) - [Openclaw 完全指南这可能是全网最新最全的系统化教程了32W字建议收藏](../ch04-199-openclaw-完全指南) - [Agentops Operationalize Agentic Ai At Scale With Amazon Bedr](../ch04-268-agentops-operationalize-agentic-ai-at-scale-with-amazon-bed) - [存之有序治之有矩Agent 记忆系统的工程实践与演进](../ch01-707-存之有序-治之有矩-agent-记忆系统的工程实践与演进) - [你不知道的 Agent原理架构与工程实践 V2](../ch04-455-你不知道的-agent-原理-架构与工程实践) ## 实践启示 1. **工程落地**: agent领域方案需关注可观测性、可维护性和成本效率 2. **技术选型**: 根据场景选择合适的技术栈,避免过度设计或盲目追新 3. **持续迭代**: 建立数据驱动的反馈闭环,持续优化系统表现 4. **风险管控**: 引入新技术需评估对现有系统稳定性的影响,做好降级预案 --- ## Ch10.020 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](../ch01-361-introducing-the-ettin-reranker-family) - [Claude Code Openclaw Usage Ettin](../ch09-028-claude-code-openclaw-usage-ettin) - [Gemma 4 Multi Token Prediction Drafters](../ch01-214-gemma-4-multi-token-prediction-drafters) - [Continuousasync](../ch03-083-unlocking-asynchronicity-in-continuous-batching) - [Continuous Async](https://github.com/QianJinGuo/wiki/blob/main/entities/continuous-async.md) → [原文存档](https://raw.githubusercontent.com/QianJinGuo/wiki/main/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) ---