Agent 应用开发会员账号
知识目录选择核心方向与细分内容
知识单元 19进阶实现约 12 分钟

理解 → 实现 → 排错 → 取舍

切块中的语义完整性与证据定位

考察文档结构、检索单位、上下文补全和可复核的切块实验。

Chunking文档解析证据

知识内容核对 2026-10-03 · 原题来源核对 2026-10-02

这个知识点,你想学到哪一步?

按当前基础选择起点,也可以依次深入。遇到不熟悉的概念,先回到核心原理;完成后用知识练习检查理解。

先理解

刚接触这个知识点

补齐先备概念,读原理与反例,再用自己的话解释为什么。

从核心原理开始 →

再实现

准备把原理写进代码

理解实现步骤与边界,完成小任务,对照验收要求检查结果。

阅读实现与取舍 →

会排错

需要处理故障与条件变化

沿连续追问定位失效前提,再比较迁移案例,说明方案应如何调整。

沿问题继续深入 →

能取舍

需要设计或评审方案

结合工程推演与资深自评标准,解释方案的适用条件、代价和替代选择。

分析工程场景 →
知识单元目录

LEARN · PRACTICE · REFLECT

知识学习与个人记录

我的笔记与复习 ↗

先沿着原理、问答和迁移案例阅读。需要检查理解时,再切换巩固练习或展开个人记录。

作答与个人记录

每次修改后的提交会保留为独立历史。掌握程度由你对照标准自评。

核心知识 · 切块中的语义完整性与证据定位

先理解核心原理

先备概念:文档解析、Token 预算、来源与权限元数据

切块是在召回粒度和证据完整性之间取舍。一个块必须保留理解它所需的条件与关系;缺失的关系不会因为向量相似度高而自动恢复。

字数边界不等于知识边界

固定长度切块适合建立便宜基线,但会把“规则”和下一段“除外情况”分开,或把表格数字与单位分开。检索到“500”并不能知道它是元、万元、毫秒还是版本号。切块目标不是把文本均匀切碎,而是让用户问题能够召回可解释、可引用的证据。

合同优先保留条款编号、层级和被引用的定义;表格需要列名、单位、行标识及跨页关系;代码需要符号名、文件版本、必要依赖和调用边界。结构解析错误发生在切块之前,靠重叠不能恢复不存在的表头。将来源页码、段落范围和版本保存为元数据,才能从回答跳回原文核对。

小块召回,大块理解有条件

小块更容易对准局部问题,大块能提供上下文。可先召回子块,再按需求扩展父段或相邻块。反例是命中一个公开段落后把含秘密附件的父文档全部送入模型;扩展也必须检查权限。另一个反例是十个命中都展开同一父段,Token 被重复占满。

用题目检验边界,而不是找通用字数

为“主规则”“例外”“表格交叉行”“跨函数行为”分别标注必要证据,比较不同切块策略的候选覆盖、最终完整性和引用精度。重叠是为边缘连续性付出的成本,增大它会增加索引体积和重复候选,却不保证关键关系保留。选择能支持主要问题分布的策略,保留异常结构的单独处理路径。

用一个问题检查理解

合同、表格和代码应该怎样切块?固定 500 字有什么问题?

切块要围绕实际问题和文档结构设计。合同保留条款层级与例外,表格保留表头、单位和行关系,代码保留符号和依赖上下文。可用较小块召回,再扩展到父段或相邻片段,但要控制重复和预算。固定长度可以作为基线,最终用带证据标注的问题集检验召回、回答完整性和引用位置。

实现与取舍

先定义问题与证据单位

问“违约金是多少”需要金额、触发条件与例外条款;问表格趋势需要表头、单位和时间列。纯字符切分可能把否定词或单位切到另一块。每块至少保留 document_id、版本、章节路径、页码或行范围,正文中的数字才能回到原文核对。解析失败要可见,不能把空文本当成功入库。

按结构切分,再控制长度

先利用标题、段落、表格和函数边界建立候选块,超过预算时再递归拆分。表格分批时重复必要表头并标明是否还有续行;代码保留函数签名、文件路径及相关类型引用。重叠只用于减少边界丢失,过大重叠会把多个近似块挤进前几名,降低证据多样性。

小块检索与父块展开

精确小块适合匹配问题,回答可能需要上下文,可在召回后读取父段或邻接块。扩展必须在同一文档版本和当前权限下进行,并再次计算预算。不能因为父文档可见就默认所有关联文档都可见。回答引用仍定位到支持结论的具体片段,不能只给一个整本手册的链接。

通过实验选参数

准备包含跨段例外、表格单位、代码调用关系的问题集,为每题标出必要证据。固定检索器与生成配置,只改变切块策略,比较必要证据覆盖、最终答案正确性、重复率和费用。切块更大可能提高召回却降低回答聚焦性,因此不能只用平均相似度选最佳方案。

工程推演

场景
面试假设:合同回答只引用主条款,遗漏下一段的适用例外。
设计决策
保留章节关系,小块召回后补读相邻例外。
验证目标
答案能说明条件与例外,并定位到对应版本原文。
适用边界
切块长度是实验参数,不存在适合所有文档的固定值。

连续追问与解答

沿着问题的前提和约束继续向下读。先理解参考解答,再尝试收起答案,用自己的话解释因果和取舍。

举一反三:条件变了,怎样推导?

先找出改变的条件,再判断原方案中哪些前提仍成立。下面的案例是教学推演,便于将原理迁移到新问题。

代码库而非普通文章

改变的条件:证据涉及函数及外部调用

延伸问题:函数超过长度预算,切成几块就足够了吗?

推导与参考解答

先保留符号、签名、控制流片段和文件版本,再为依赖建立可导航引用。用户问超时处理时按需读取相关异常分支与被调用函数;不要为了单块完整把整个仓库塞入。代码解释要标明哪些行为取决于外部配置,跨文件必要证据单独检索。

保持不变的原理:保留问题所需的语义关系,不能用文本长度替代行为边界。

合同主条款与附录例外

改变的条件:答案依赖非相邻段落

延伸问题:只展开相邻块能避免漏掉免责条件吗?

推导与参考解答

不能。按条款引用和定义关系构建链接,召回主条款时检查它引用的附录、例外和适用版本。对必要但无权读取的附录保留证据缺口,拒绝给完整结论。标注集中加入此类非相邻证据问题,验证展开策略。

保持不变的原理:上下文完整性由依赖关系决定,物理邻近只是一个线索。

易错点

  • 所有文档同一字符长度
  • 只有正文没有位置和版本
  • 用相似度替代最终正确性

参考资料

依据公开技术资料设计;参考资料支持技术机制,场景与评分标准为本站设计,不代表某公司面试原题。 新增问答与迁移案例用于原理讲解,来源核查与案例运行验证分别记录。

检查自己理解到哪一步

读完后可以对照这些标准解释原理、边界和取舍。掌握程度由你自评;需要进一步验证时,再完成下方小任务。

基础达标
能指出合同、表格和代码的切分差异。
中高级信号
提出父子块、去重与必要证据标注。
资深信号
能隔离变量评测并处理跨版本、权限和解析失败。

继续做进阶研究实验

政策变化后,旧上下文为什么不能继续用?

把检索前过滤的思想迁移到记忆版本与恢复。观察撤销后已有草稿怎样失效。

阅读全文与故障分析 → · 下载可靠性实验 v3 ↓

python3 cli.py memory-put --db memory.sqlite
python3 cli.py submit --db memory.sqlite
python3 cli.py run --db memory.sqlite --lease-seconds 2 --fault after_draft
python3 cli.py memory-forget --db memory.sqlite
# 等待至少 2 秒后分别执行
python3 cli.py run --db memory.sqlite
python3 cli.py inspect --db memory.sqlite

保留证据,逐条核对

  • 首次退出后 draft 检查点已存在。
  • memory-forget 后恢复得到 failed 与 memory_changed_or_expired。
  • 没有 publish 检查点;解释失效阻断与彻底删除的区别。

验证本地作用域、版本与撤销阻断;旧检查点仍保留,不提供日志、备份和检查点的彻底删除。

动手验证 按需完成 · 建议 15 分钟

给一段含主条款、例外和表格的文档设计块结构与引用字段。

展开验收要求与检查点
  • 例外不与主条款失联
  • 表格单位保留
  • 每块可定位原文

重点检查

  • 按文档结构保留语义边界
  • 证据定位包含版本与范围
  • 用必要证据覆盖评估切块