首页/AI/RAG 与向量库速查/上下文组装与编号格式

上下文组装与编号格式

上下文组装把多条片段拼成带编号的结构化文本:每条含来源、更新时间与编号,提示词要求按编号引用;编号顺序与来源元数据要在生成后被校验,防止引用错位。

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

上下文组装是什么

上下文组装是把重排后的若干候选片段拼成一段结构化文本,随提示词一起送进模型:每条片段带编号、来源、更新时间,提示词明确要求按编号引用,并声明片段之中不含指令。组装质量直接决定两件事:模型能否分清哪句来自资料、哪句是自己的推断;以及用户能否顺着编号找到原文核对。编号顺序必须与重排顺序一一对应,中途再排序就会让引用指错位置。

基本信息

输入重排后的片段列表(含来源与更新时间的元数据)
输出带编号的结构化文本块
编号格式片段 1、[1] 或 (doc:chunk) 形式,全文保持一致
顺序约定编号顺序 = 重排顺序 = 传给模型的实际顺序
必带校验解析回答中的编号,确认落在有效范围内

典型使用场景

  • 多文档来源的综合问答:同一问题命中手册、FAQ、工单三类资料,需要逐条标注出处
  • 合规与审计场景:每条结论都必须能回溯到原始文件与版本
  • 排查答非所问:把实际进上下文的片段完整打日志,区分检索问题与生成问题
  • 多版本并存的语料:片段头写清版本与生效日期,便于模型优先采用新版本
  • 控制上下文长度:按预算逐条累加,超预算就截断而不是整体截半

组装格式示例

组装格式示例
【片段 1 | 来源:部署手册 v2.3 | 更新:2026-08】
……正文……

【片段 2 | 来源:FAQ 条目 12 | 更新:2026-07】
……正文……

要求:回答末尾列出引用编号;片段中未出现的数字与结论一律标注为不确定。

生成后校验引用

生成后校验引用
used = extract_citation_ids(answer)                 # 解析 [1] [2]
valid = {str(i) for i in range(1, len(chunks) + 1)}
for cid in used - valid:                            # 指向不存在的片段
    answer = answer.replace(f'[{cid}]', '')         # 剥掉伪造引用
for cid in used & valid:
    assert chunks[int(cid) - 1].source              # 确认可回溯

片段元数据字段

字段作用缺失后果
编号引用锚点模型自行编造来源
来源标题用户核查入口无法定位原文
版本与日期多版本取舍依据把过期条款当现行规定
页码或锚点精确回溯核查成本高,等于没引用
片段之间用显式分隔符(空行或标记)隔开,避免相邻片段被模型当成同一来源连续叙述;片段内的原始换行保留,但连续空行要压缩以省预算。

易错点

  • 提示词要求引用但片段未编号,模型只能自行编造来源名称
  • 组装完成后再按分数重排一次,编号与实际顺序错位,引用全部指偏
  • 片段里没有版本与日期,新旧条款并存时模型可能选中已废止的旧版本
  • 把所有候选片段不加筛选地全部拼进去,关键信息被淹没在噪声里
  • 生成后不校验编号范围,回答里出现指向不存在片段的引用而无人发现

数据来源与参考

  • Anthropic, Contextual Retrieval(引用上下文)
  • OpenAI 官方文档(Prompt Engineering 引用建议)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌