首页/AI/RAG 与向量库速查/切片保留引文定位信息

切片保留引文定位信息

切片入库时记录页码、章节、字符偏移等定位信息,生成回答时才能标注“出自哪一页/哪一节”,并支持点击回原文核对。

RAG 与向量库速查AI更新于 2026-10-13

定位信息为什么必需

切片入库时把页码、章节、字符偏移等定位信息一起写进元数据,生成回答时才能标注「出自哪一页、哪一节」,也才能点击回原文核对。定位信息是引用的唯一可靠来源:如果让模型自己写出页码或链接,等于让它猜,编造几乎必然发生。

基本信息

定位字段doc_id、page、section、offset 与 chunk_id
chunk_id 设计可由文档标识与位置派生,重建时保持稳定
生成侧职责模型只输出引用编号,编号到原文的映射由代码完成
上线校验引用编号越界、指向不存在的切片都要拦截并降级

典型使用场景

  • 法规与合规问答:答案必须可追溯到具体条款,否则不能交付
  • 客服知识库:坐席看到引用编号后要能一键打开原文核对
  • 手册类问答:用户按页码回查操作步骤,定位必须准确
  • 答案审核:抽检回答时按引用回溯,判断是检索错还是生成错
  • 文档更新后复核:按 offset 比对差异,确认引用是否仍然有效

生成带定位的切片

生成带定位的切片
def make_chunk(doc_id, text, page, section, start):
    # chunk_id 由文档标识与位置派生,同一内容重复生成结果一致
    return {
        "chunk_id": f"{doc_id}#p{page}-s{start}",
        "text": text,
        "meta": {"doc_id": doc_id, "page": page,
                 "section": section, "offset": start},
    }

c = make_chunk("manual", "配置超时时间…", 12, "3.1 超时设置", 4021)
print(c["chunk_id"], c["meta"])   # 引用编号与页码都由这份元数据决定

定位字段的作用

字段作用缺失后果
chunk_id引用的锚点编号无法映射回原文
page标注页码并支持跳转用户核对要翻遍全文
section展示所属章节脱离文档结构,难以判断是否适用
offset字符级偏移内容微调后引用与正文对不上
引用编号到元数据的映射由代码完成,不要让模型自行编造页码或链接;模型只负责在句末标注编号,映射与渲染都在后处理里做。
分段结构比页码更稳:页码会随排版调整漂移,章节号与字符偏移在多数更新场景下仍可复用。

易错点

  • 只存整篇文档定位不存切片偏移,文档更新后页码漂移引用对不上
  • 让模型直接输出 URL 或页码而不做映射核验,容易编造
  • 压缩或重排后丢失切片顺序与 id,引用无法回溯到原文
  • 切片被替换后旧引用编号未失效,用户点开看到的是不同内容

数据来源与参考

  • Gao et al., RAG for LLMs: A Survey(引用与溯源)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌