先理解
刚接触这个知识点
补齐先备概念,读原理与反例,再用自己的话解释为什么。
从核心原理开始 →理解 → 实现 → 排错 → 取舍
考察文档结构、检索单位、上下文补全和可复核的切块实验。
知识内容核对 2026-10-03 · 原题来源核对 2026-10-02
建议先理解:
提示、结构化输出与迭代验收 →上下文与生成预算 →工具调用的结构、授权与业务契约 →按当前基础选择起点,也可以依次深入。遇到不熟悉的概念,先回到核心原理;完成后用知识练习检查理解。
LEARN · PRACTICE · REFLECT
先沿着原理、问答和迁移案例阅读。需要检查理解时,再切换巩固练习或展开个人记录。
核心知识 · 切块中的语义完整性与证据定位
先备概念:文档解析、Token 预算、来源与权限元数据
切块是在召回粒度和证据完整性之间取舍。一个块必须保留理解它所需的条件与关系;缺失的关系不会因为向量相似度高而自动恢复。
固定长度切块适合建立便宜基线,但会把“规则”和下一段“除外情况”分开,或把表格数字与单位分开。检索到“500”并不能知道它是元、万元、毫秒还是版本号。切块目标不是把文本均匀切碎,而是让用户问题能够召回可解释、可引用的证据。
合同优先保留条款编号、层级和被引用的定义;表格需要列名、单位、行标识及跨页关系;代码需要符号名、文件版本、必要依赖和调用边界。结构解析错误发生在切块之前,靠重叠不能恢复不存在的表头。将来源页码、段落范围和版本保存为元数据,才能从回答跳回原文核对。
小块更容易对准局部问题,大块能提供上下文。可先召回子块,再按需求扩展父段或相邻块。反例是命中一个公开段落后把含秘密附件的父文档全部送入模型;扩展也必须检查权限。另一个反例是十个命中都展开同一父段,Token 被重复占满。
为“主规则”“例外”“表格交叉行”“跨函数行为”分别标注必要证据,比较不同切块策略的候选覆盖、最终完整性和引用精度。重叠是为边缘连续性付出的成本,增大它会增加索引体积和重复候选,却不保证关键关系保留。选择能支持主要问题分布的策略,保留异常结构的单独处理路径。
切块要围绕实际问题和文档结构设计。合同保留条款层级与例外,表格保留表头、单位和行关系,代码保留符号和依赖上下文。可用较小块召回,再扩展到父段或相邻片段,但要控制重复和预算。固定长度可以作为基线,最终用带证据标注的问题集检验召回、回答完整性和引用位置。
问“违约金是多少”需要金额、触发条件与例外条款;问表格趋势需要表头、单位和时间列。纯字符切分可能把否定词或单位切到另一块。每块至少保留 document_id、版本、章节路径、页码或行范围,正文中的数字才能回到原文核对。解析失败要可见,不能把空文本当成功入库。
先利用标题、段落、表格和函数边界建立候选块,超过预算时再递归拆分。表格分批时重复必要表头并标明是否还有续行;代码保留函数签名、文件路径及相关类型引用。重叠只用于减少边界丢失,过大重叠会把多个近似块挤进前几名,降低证据多样性。
精确小块适合匹配问题,回答可能需要上下文,可在召回后读取父段或邻接块。扩展必须在同一文档版本和当前权限下进行,并再次计算预算。不能因为父文档可见就默认所有关联文档都可见。回答引用仍定位到支持结论的具体片段,不能只给一个整本手册的链接。
准备包含跨段例外、表格单位、代码调用关系的问题集,为每题标出必要证据。固定检索器与生成配置,只改变切块策略,比较必要证据覆盖、最终答案正确性、重复率和费用。切块更大可能提高召回却降低回答聚焦性,因此不能只用平均相似度选最佳方案。
沿着问题的前提和约束继续向下读。先理解参考解答,再尝试收起答案,用自己的话解释因果和取舍。
第 1 层表格跨页时如何保留表头?
把结构完整性落实到最容易丢上下文的表格。
先在解析阶段识别连续表格,将跨页表头与列映射保存成结构化信息;每个行块附上表名、列名、单位和原页坐标。重复表头不是业务数据,不应算成额外行。若无法可靠合并,保留两页并标记待核对,不能让模型凭视觉猜列对应关系。
沿着这个回答继续深入
第 2 层跨页后列顺序变化了,能继续复用第一页表头吗?
父问保留表头后,进一步改变列结构,检验继承是否仍成立。
不能仅因表名相同就复用。比较列名、单位与位置,处理合并单元格和新增列,建立页级列映射。只有确定关系后才能拼接;否则保留原页结构并要求人工核对或使用更可靠解析器。错误的自动拼接会生成看似整齐但语义错位的数据。
沿着这个回答继续深入
第 3 层OCR 已把两列混成一段,之后的切块还能补救吗?
结构映射不可知时,问题从切块转为信息源损坏,必须回到原始资料。
切块无法可靠恢复已经丢失的关系。返回原图或原 PDF 页重新解析,检查坐标、行列与单位;无法验证时将该材料标记为不可用于精确计算。模型可提出候选解释帮助核对,不能把猜出的表格当作已验证证据。
第 1 层重叠越大一定越好吗?
对一种常见修复手段追问其代价与边界。
不一定。重叠能缓解句子或代码被截断,但过大会制造几乎相同的候选、增加费用并挤占上下文。先识别需要跨边界的关系,再用较小重叠或结构化父子引用保留它。评价时看必要证据覆盖和重复比例,不能只看相似度升高。
第 1 层父块展开会不会绕过权限?
完整上下文需求与数据权限产生冲突时如何取舍。
会,若系统把子块的权限错误地当作整个父块权限。展开前验证父块及新增段落的实际 ACL,且只发送当前可读部分。若缺少完整条件导致无法回答,应说明证据不完整,不能为了保持语义而放宽授权。
先找出改变的条件,再判断原方案中哪些前提仍成立。下面的案例是教学推演,便于将原理迁移到新问题。
改变的条件:证据涉及函数及外部调用
延伸问题:函数超过长度预算,切成几块就足够了吗?
先保留符号、签名、控制流片段和文件版本,再为依赖建立可导航引用。用户问超时处理时按需读取相关异常分支与被调用函数;不要为了单块完整把整个仓库塞入。代码解释要标明哪些行为取决于外部配置,跨文件必要证据单独检索。
保持不变的原理:保留问题所需的语义关系,不能用文本长度替代行为边界。
改变的条件:答案依赖非相邻段落
延伸问题:只展开相邻块能避免漏掉免责条件吗?
不能。按条款引用和定义关系构建链接,召回主条款时检查它引用的附录、例外和适用版本。对必要但无权读取的附录保留证据缺口,拒绝给完整结论。标注集中加入此类非相邻证据问题,验证展开策略。
保持不变的原理:上下文完整性由依赖关系决定,物理邻近只是一个线索。
依据公开技术资料设计;参考资料支持技术机制,场景与评分标准为本站设计,不代表某公司面试原题。 新增问答与迁移案例用于原理讲解,来源核查与案例运行验证分别记录。
读完后可以对照这些标准解释原理、边界和取舍。掌握程度由你自评;需要进一步验证时,再完成下方小任务。
把检索前过滤的思想迁移到记忆版本与恢复。观察撤销后已有草稿怎样失效。
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验证本地作用域、版本与撤销阻断;旧检查点仍保留,不提供日志、备份和检查点的彻底删除。
给一段含主条款、例外和表格的文档设计块结构与引用字段。