楼主: CDA网校
176 0

RAG 上下文工程:每一次模型回答背后的四类标准化输入 [推广有奖]

管理员

已卖:189份资源

泰斗

12%

还不是VIP/贵宾

-

威望
3 级
论坛币
155168 个
通用积分
18822.2686
学术水平
308 点
热心指数
320 点
信用等级
283 点
经验
243426 点
帖子
7865
精华
19
在线时间
4562 小时
注册时间
2019-9-13
最后登录
2026-9-28

初级热心勋章

楼主
CDA网校 学生认证  发表于 2026-7-15 15:56:25 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

2025年,托比·拉特克与安德烈·卡帕西正式提出并定义了**上下文工程(Context Engineering)**这一概念。针对单文档场景,四大模块会输出标准化结构化片段,最终汇聚为单次大模型调用的完整上下文;而语料库、多轮对话、工具调用等拓展场景,将在后续文章展开讲解。

本文是《企业文档智能》系列独立配套文章。本系列的核心观点为:企业级RAG是赋能专家,而非替代专家。整套架构依托四大核心模块构建:文档解析、问题解析、检索、生成。各模块均输出标准化结构化数据,最终汇总完成单次大模型调用,这一整套标准化实践,正是行业如今定义的「上下文工程」。本文聚焦单文档RAG场景,多文档语料、多轮对话、工具调用的进阶拓展方案,将在后续更新中详解。

系列文章定位:第7bis期(上下文工程),是对四大模块架构的重新梳理与定义
系列文章定位:第7bis期(上下文工程),是对四大模块架构的重新梳理与定义

📓 可运行代码笔记已开源至 GitHub:doc-intel/notebooks-vol1

单文档RAG四大模块的架构流程已完全定型:解析模块输出结构化关系数据表;问题解析模块输出标准化结构化解析问题对象;检索模块输出筛选后的文本行数据及检索审计日志;生成模块输出带溯源证据、基于Pydantic结构化校验的答案。整套流程收敛为单次大模型调用,搭配固定系统提示词,结合上游各模块输出组装用户输入内容。

这套成熟流水线如今拥有了专属行业定义。2025年6月,托比·拉特克在社交平台提出:「提示工程(Prompt Engineering)是错误的认知框架,应替换为上下文工程」,并将其定义为:为大模型补齐全部所需上下文,让任务可被合理求解的工程方法。一周后,安德烈·卡帕西对此表示认可,将其诠释为:精准填充上下文窗口、为模型下一步推理匹配最优信息的精细工程科学。短短数月后,该概念登上奥莱利(O’Reilly)技术图书封面,LangChain 也为其搭建了完整的技术分类体系。

本文将基于这一全新视角,重构解读单文档RAG流水线:各模块输出标准化结构化上下文,统一汇总组装后送入大模型;同时固定系统提示词,适配缓存优化。概念的更新并未改动原有架构,但统一了行业表述——让团队能够向审计人员清晰解释系统运行逻辑,也标志着该架构已成为2025年工业界落地的标准化RAG方案。

一、核心概念:定义与覆盖范围

传统提示工程的内涵局限于两点:微调单条提示词的措辞以优化模型效果、编写示例样本让模型对齐输出规范。二者均聚焦单次调用的文本内容本身,边界极窄。

而上下文工程覆盖了单次大模型调用、送入上下文窗口的全部信息,包含:

  • 系统提示词(角色定位、运行规则、示例模板)

  • 检索召回的文档、数据行

  • 多轮对话历史(如有)

  • 工具定义与工具返回结果

  • 记忆数据、临时计算缓存、智能体状态信息

  • 文档、语料库、项目的结构化元数据

  • 用户原始输入指令

在动辄数十次模型调用的长链路智能体场景中,提示词仅为上下文八大组成部分之一,其余全部来自上游模块:检索器、工具、记忆存储、用户画像查询等。工程核心也从「如何撰写提示词」,转变为如何组装上下文、明确各信息来源、保障多次调用的上下文稳定性。

这是真正的标准化软件工程:包含结构化对象定义、组件交互契约、可审计日志、缓存优化机制。2025年诞生的这一概念,只是对工业界早已落地的成熟实践做了标准化命名,拉特克与卡帕西精准总结了一线工程师的通用落地经验。

本系列文章从开篇起,便逐模块落地这套实践。下文将详解单文档RAG中各模块的上下文输出、最终汇聚为模型调用的四类标准化结构,以及对应的落地代码。文末将简要介绍本文未覆盖的拓展场景:多语料库、多轮对话、工具调用,并标注系列后续更新的对应章节。

七大结构化上下文输入模块(按来源分类:问题、文档、工程底座)
七大结构化上下文输入模块(按来源分类:问题、文档、工程底座)

二、所有模块均输出标准化结构化上下文

四大核心模块独立输出结构化上下文数据流,最终统一汇入组装层,结合固定系统提示词、用户模板完成大模型调用
四大核心模块独立输出结构化上下文数据流,最终统一汇入组装层,结合固定系统提示词、用户模板完成大模型调用

上图为本系列架构的核心总结:每个模块都是结构化上下文输出单元,图中模块名称均为代码中真实的 Pydantic 类、数据表字段名,完全对齐工程落地。

1. 文档解析模块

输出结构化关系数据表与全局汇总字典:

  • line_df:逐行存储文档内容,附带坐标边界信息(bbox)

  • page_df:逐页存储文档信息,包含页面类型、列数

  • toc_df:目录结构数据,记录章节起始页、层级深度

  • image_df:文档内嵌图片数据,包含感知哈希值与元信息

  • parsing_summary:文档级全局汇总,包含文档类型、总页数、通用字段、内容摘要及解析状态参数

其中,检索模块逐行读取数据表数据,问题解析模块通过文档上下文(DocContext)调用解析摘要的语义信息。

2. 问题解析模块

输出标准化 ParsedQuestion(解析问题对象),所有字段均为固定结构化定义,无自由文本:

  • keywords:检索专用核心名词短语短列表

  • intent:固定枚举值的用户意图标签,决定生成阶段的输出结构分发逻辑

  • structural_hints.pages_hint:用户指定的固定页面定位(如“第三页”)

  • answer_shape:预期输出格式(文本、数值、日期、列表、表格、地址等),用于匹配生成模型的结构化范式

各字段分别对应下游不同模块的调用逻辑,全程不直接以原始字符串送入大模型。本功能由三篇系列文章完整拆解:

  • 6A 期(问题解析原理):先解析、后检索的核心逻辑,检索摘要与生成摘要的拆分依据

  • 6B 期(问题解析提取):从用户输入中提取关键词、范围、输出格式、问题拆解、模糊澄清信息的完整规则

  • 6C 期(问题解析分发):基于解析结果,自动选择分块策略、模型精度档位、功能启停标记

3. 检索模块

输出筛选后的结构化数据表与审计日志字典:

  • filtered_line_df:最终送入生成模块的筛选后文本行数据

  • anchor_pages:锁定的核心页面ID及筛选依据

  • retrieval_audit:最终选用的检索策略(关键词/目录/大模型仲裁)、目录推理过程、选中章节明细

筛选后的数据用于模型生成,审计日志用于人工复核与问题溯源。该模块的完整落地逻辑分为三篇文章:

  • 7A 期(检索即筛选):企业RAG核心思维——缩小候选集范围,而非盲目全局搜索

  • 7B 期(锚点检测):并行运行关键词、向量嵌入、目录检索,精准定位核心页面

  • 7C 期(大模型仲裁):通过单次大模型调用,筛选最优候选页面并输出可解释理由

4. 生成模块

唯一的消费型模块(无独立结构化输出)。该模块接收解析问题、筛选文本、上下文聚合对象、输出范式,调用大模型后返回经过 Pydantic 结构化校验的标准化答案。模块虚线边框即代表这一核心定位。

右侧紫色「提示词组装」区域,是上下文工程的核心代码实现层,依托三大基础组件落地:

  1. PromptContext 聚合器:基于基础模型构建,为各类上下文预留独立字段(文档上下文、未来语料库上下文、未来项目上下文)

  2. 模块级固定系统提示词:各模型调用模块均配置全局固定系统提示词常量

  3. 用户模板:内置占位符,通过字符串格式化动态填充上下文内容

本系列往期文章逐步搭建了这套体系:第1期搭建基础四模块流水线;6A期实现问题解析结构化;8A期实现生成输出范式结构化。本文将基于全新的上下文工程视角,重构解读整套架构:各模块如何输出独立上下文、如何无损汇聚至模型调用层、如何实现上下文隔离无干扰。架构代码不变,核心认知全面升级。

三、单文档RAG的四类标准化上下文输入

单文档RAG的单次模型调用,仅包含四类结构化输入,每类由独立代码生成,具备专属的成本与缓存特性。以下按模型读取顺序逐一详解。

3.1 固定系统提示词

第一类为系统指令,包含模型角色定位、执行规则、示例范式,全局调用统一固定。工程实现上,将其定义为Python模块级常量,同时支持传参覆盖,适配不同业务场景,无需修改底层代码:

(示例代码)

PARSE_QUESTION_SYSTEM_PROMPT = (
    "You extract content noun phrases from the user's question..."
)

def parse_question(question, *,
                   system_prompt: str = PARSE_QUESTION_SYSTEM_PROMPT,
                   user_template: str = PARSE_QUESTION_USER_TEMPLATE,
                   context: PromptContext | None = None)
:

    ...

该设计带来两大工程优势:一是可被大模型服务商缓存,缓存推理成本仅为全新输入的十分之一;二是可审计、可追溯,支持版本比对、全局检索,便于迭代管控。

3.2 调度器筛选后的召回文本行

第二类为模型最终读取的文档文本。调度器基于解析问题的关键词、结构提示,匹配最优检索策略(关键词/目录/大模型仲裁),输出筛选后的文本数据与审计日志。

(核心调用代码示例)

retrieved, filtered_line_df, audit = dispatch_page_retrieval(
    question, line_df, page_df,
    toc_df=toc_df, keywords=keywords,
    top_k=5, use_toc=True,
)

送入模型的仅为筛选后的核心内容,而非完整文档。一份200页的合同文档,最终仅保留十余页有效文本,严格控制上下文token总量。审计日志完整记录页面筛选依据,支持人工核验、争议复盘,无需重复调用模型。

3.3 紧凑JSON文档上下文块

第三类为文档全局结构化摘要,包含文档类型、总页数、核心字段、内容摘要,以极简JSON格式嵌入用户输入,帮助模型结合文档属性消解歧义。

工程上通过Pydantic模型统一实现,自动过滤空值、空字段,最小化传输体积:

class DocContext(BaseModel):
    doc_type: str | None = None
    n_pages: int | None = None
    typical_fields: list[str] = []
    summary: str | None = None

    def as_prompt_json(self) -> str:
        payload = {k: v for k, v in self.model_dump().items()
                   if v is not None and v != []}
        return json.dumps(payload, separators=(",", ":"))

以单页简历文档为例,该JSON报文体积不足200字符;若无有效文档信息,则返回空对象并自动省略该模块。后续拓展的语料库上下文、项目上下文,均复用该标准化极简渲染逻辑。

3.4 顶层PromptContext聚合器

第四类为顶层上下文聚合容器,所有模型调用模块均支持可选传入该对象。当前仅启用文档上下文字段,同时预留语料库上下文、项目上下文扩展字段,适配后续迭代升级。

class PromptContext(BaseModel):
    doc_context:     DocContext | None = None
    # corpus_context:  CorpusContext  | None = None  # 预留拓展字段
    # project_context: ProjectContext | None = None  # 预留拓展字段

工具函数自动遍历非空上下文字段,分层渲染独立JSON块并嵌入用户输入。新增上下文类型时,仅需启用预留字段、补充少量渲染逻辑,所有模型调用模块可自动适配,接口签名全程稳定,无兼容性破损。

四、落地价值:概念更新带来的三大工程优化

即便底层代码无任何改动,上下文工程的标准化定义,依然带来了审计、成本、架构拓展三大维度的规范化升级。

1. 可审计性升级

模型回答出错时,排查逻辑从「提示词写了什么」升级为「本次调用的完整上下文窗口包含了什么」。本架构持久化存储所有模块输出数据:解析结果、结构化问题、检索页面、审计日志,可完整复现每一次调用的上下文全貌。

问题定位精准落地到具体模块:文档上下文信息错误、检索页面筛选失误、系统提示词版本漂移、用户模板过期,不同问题对应专属修复方案,彻底告别模糊排查。

2. 推理成本可控可量化

双重优化叠加降本:固定系统提示词全程复用,享受服务商缓存低价策略;用户输入上下文通过结构化压缩、精准检索筛选,动态变量体积最小化。

百份文档、单文档10次提问的千次调用场景中,可变成本成为核心开销。上下文工程让每一段上下文的来源、生成逻辑、成本消耗清晰可追溯,预算管控精细化。

3. 架构可拓展、无破坏性迭代

顶层聚合器预留拓展字段,后续新增多文档语料、项目维度上下文时,无需重构现有代码、无需改写历史逻辑。仅需新增字段、补充渲染分支,所有原有模块自动适配新上下文能力,完美实现版本平滑迭代,规避架构破碎风险。

五、本文未覆盖的拓展场景与后续规划

本文仅聚焦单文档RAG场景,完整的上下文工程还包含三大核心拓展方向,将在系列后续文章详解:

1. 语料库上下文

跨多文档问答场景中,模型需要感知整体语料范围、文档共性与关联特征。后续将推出专属CorpusContext结构化模型,基于所有单文档解析摘要聚合生成,预留字段可无缝接入现有架构,无需改动接口。

2. 多轮对话历史

多轮聊天场景需要留存历史问答对,作为新问题的推理依据。这不仅是上下文问题,更是状态管理问题(历史存储、摘要压缩、冗余裁剪),后续将独立作为核心模块详解。

3. 工具调用上下文

智能体循环会将工具定义、工具返回结果、中间运行状态送入上下文窗口,多轮迭代极易造成上下文溢出,带来信息筛选、压缩、隔离的核心难题,后续将专项讲解智能体场景的上下文工程实践。

LangChain 提出的四大上下文工程策略(编写、筛选、压缩、隔离)中,编写、筛选可直接适配单文档RAG;压缩、隔离的核心价值将在多语料、多轮对话场景中充分体现,因此本文不做强行对齐。

在线演示

ShipAI 仪表盘上线实时演示功能:可在审计轨迹中选中核心页面,切换锚点/段落/章节/全文四种上下文范围,直观对比推理精度与调用成本的权衡关系。

ShipAI 在线演示:同一核心锚点,四种上下文覆盖范围对比,可视化展示取舍逻辑
ShipAI 在线演示:同一核心锚点,四种上下文覆盖范围对比,可视化展示取舍逻辑

四种范围定义:锚点(单行核心内容)、段落(前后5行上下文)、章节(基于目录的完整章节)、全文(整页内容),将抽象的工程取舍转化为直观可调试的可视化操作。

六、结语

2025年兴起的上下文工程,为单文档RAG的成熟落地实践赋予了标准化定义。整套架构逻辑清晰闭环:解析模块输出结构化文档数据,问题解析模块输出可分发的标准化问题,检索模块输出精准筛选结果与审计日志,生成模块依托固定提示词、模板化用户输入、分层聚合上下文,完成标准化推理。

概念升级的核心价值在于统一行业沟通语言,便于审计、招聘、技术对接,无需额外翻译解释。而底层的模块架构、结构化范式、成本缓存取舍逻辑完全不变。多语料库、多轮对话、工具调用等进阶场景,均已预留标准化拓展字段,可无缝迭代升级。

推荐学习书籍 《CDA一级教材》适合CDA一级考生备考,也适合业务及数据分析岗位的从业者提升自我。完整电子版已上线CDA网校,累计已有10万+在读~ !

免费加入阅读:https://edu.cda.cn/goods/show/3151?targetId=5147&preview=0

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:标准化 上下文 Engineering engineerin Structural

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
扫码
拉您进交流群
GMT+8, 2026-9-28 19:23