Context、RAG、Memory 不是互斥,而是互补
上下文工程用于会话即时优化,RAG用于把权威文档注入生成,长期记忆用于跨会话个性化

一、Context/RAG/Memory 一表说明

维度上下文工程RAG长期记忆
本质控制输入 → 激活模型内在能力引入外部证据 → 抑制幻觉持久化状态 → 构建个体认知
数据会话内示例/摘要外部文档库用户历史/事件/偏好
持久性临时(策略可存)文档持久,检索临时持久+衰减+删除
检索规则/摘要压缩向量+BM25+重排向量+时间+标签检索
成本中(检索+重排)高(存储+合规+维护)
延迟几乎无中~高中(取决于索引)
核心价值快、准、可控真、可溯个性、连续、忠诚
致命风险上下文窗口耗尽检索出错 = 生成出错错误记忆 = 信任崩塌
一句话定位上下文是有限有形状的容器检索是显微镜记忆是大脑皮层

上下文工程让你“说对话”,RAG让你“说对事”,长期记忆让你“记得谁在说话”

1.1 常见实现

1.1.1 步骤

  1. 先用上下文工程 —— 0成本提效,先跑通闭环
  2. 再上RAG —— 只对关键文档启用,避免全库检索
  3. 最后建记忆 —— 仅存“用户身份+关键状态+偏好”,非全部对话
  4. 缓存+压缩+遗忘 —— 成本杀手三件套
  5. 隐私即设计 —— GDPR(欧盟标准真是严格)不是补丁,是架构底座

1.1.2 工具

类型工具
上下文LangChain(模板)、PromptLayer
RAGLlamaIndex + Chroma/FAISS + GPT-4-turbo
记忆Redis(键值)、Pinecone(向量)、Zep(带策略)

1.2 特殊说明:Context 与 Prompt 的关系

Context 是数据,Prompt 是指令,我们给模型的不是“所有信息”,而是“怎么用关键信息”
维度Context(上下文)Prompt(提示)
本质原始数据(what)控制逻辑(how + format + constraint)
来源检索、记忆、API、历史对话模板 + 上下文摘要 + 用户问题
目标提供证据指导推理、格式、引用、优先级
处理重点召回质量、去重、摘要、隐私过滤模板稳定、token 节约、来源标注、指令清晰
存储长期可存(向量库/知识图谱)动态构造,模板缓存,实例不存
风险过时、冗余、冲突、泄露指令模糊、token 超限、角色混淆、注入攻击

1.2.1 用示例说明差异

示例:会议议程生成(真实工程流)

用户问

“生成下周会议议程,基于上次记录和政策文档,标注来源。”

▶ Context(原材料池,非直接输入)

  • 记忆_2024-05-10:上次会议“预算审批延迟”
  • RAG_003:《差旅报销政策v3》第2条:“超5k需CTO审批”
  • API_日程:张三 6/3 14:00–15:00 忙
  • 冗余原文:2000字会议纪要全文 (不进 prompt)

▶ Prompt(最终输入模型的文本)

[SYSTEM]
你是一个专业会议助理。输出格式严格为:
1. 每项议程:【标题】(来源:记忆_X / 文档_Y)
2. 总时长≤30分钟
3. 冲突时间自动跳过
4. 无来源内容,禁止生成

[USER]
请基于以下摘要生成议程:
---
记忆_2024-05-10:预算审批因数据缺失延迟,需补充财务报表。
文档_003:超5k预算需CTO审批。
API_日程:张三 6/3 14:00–15:00 不可用。
---
请生成30分钟议程,按优先级排序,每项标注来源。

在后面的内容中,简略使用 Context 来替代 “context+prompt” 的组合,实际指输入给 AI/Agent 的内容


二、Context/RAG/Memory 在有限资源下的取舍

2.1 原则

  • Context/RAG/Memory → 对应 可控性 | 可验证性 | (记忆)连续性
  • 可控性 | 可验证性 | 连续性 → 先选其二,三者全满必“费钱&费事&费人”
  • 限制:上下文窗口、语义冲突、延迟成本、合规摩擦
  • 三者全部进步,需要技术底层全面革新

2.2 每对组合 = 一种系统架构

组合核心策略放弃什么适用场景
可控 + 可验证严格Prompt + 白名单RAG长期记忆合规问答、法律/金融审计
可控 + 记忆策略化摘要回填 + 信任分级极致事实验证个人助理、CRM、项目跟踪
可验证 + 记忆分层检索 + 冲突打分 + UI溯源输出精确控制医疗/金融顾问助手

记忆是“主观历史”,RAG是“客观事实”,可控是“规则约束”——三者在语义层天然对抗

2.3 折中的办法 - 是“逼近”,不是“解决”

  1. 分层召回:先记忆,再RAG,择优注入(不全塞)
  2. 动态摘要:记忆压缩为语义标签,减少token消耗多反而质量下降(也是一种通胀)
  3. 可信度引擎:给每条证据打分(来源权威性 + 时间新鲜度 + 用户确认)
  4. 异步预载:后台缓存高频记忆/文档,不卡用户响应
  5. 后处理控制:模型输出后,用规则层过滤/重写,保留可控性
所有方案共性:不追求“同时全量”,而追求“智能选择”

2.4 产品在一定条件下,实现“可接受解”的路线图

阶段优先级动作
MVP控制 + 可验证无记忆,RAG+模板,100%可审计
成长期控制 + 记忆可控摘要记忆,禁用自动RAG回填
成熟期可验证 + 记忆多源融合 + 冲突提示 + 用户决策UI

永远保留一层策略审计层(极大可能性是类Excel的产品呈现形式) —— 即使选了“可验证+记忆”,也别让模型自由发挥。

三、Context/RAG/Memory 三元结构

S = (C, R, M)
—— 会话上下文、外部证据、长期记忆 ——
三者并行检索 → 融合裁剪 → 有痕写回

3.1 伪代码表示核心流程和接口

用户提问 → 并行查C/R/M → 按分数和token预算裁剪 → 拼成带来源的prompt → 生成 → 选中结果触发写M(需确认)
retrieve_c()           # 会话内最近对话/API结果
retrieve_r(query, k)   # 外部知识库:检索
retrieve_m(user, query, k)  # 个人记忆:语义/时序双模式
assemble_prompt(context, rag, mem, budget)  # 按分数+预算拼prompt(带来源标签)
write_mem(user, item, confirm=False)  # 默认需用户确认,否则不写

3.2 示例说明 Context/RAG/Memory

客服+产品手册+个人偏好场景

[SYSTEM]
你是一个智能客服助手。回答必须:
- 仅使用下方标注来源的信息
- 无法确认时,回答“根据现有信息无法确定”
- 每个结论后标注来源(如:记忆_3 / 文档_P12)
- 避免重复、避免假设、避免情感化语言

[USER]
用户问题:{user_query}

[CONTEXT]
--- 记忆_1(用户偏好) ---
{user_preference_summary}
--- 文档_P12(产品手册) ---
{doc_snippet_1}
--- 文档_P15(FAQ) ---
{doc_snippet_2}
--- 记忆_5(历史工单) ---
{ticket_summary}
--- (最多再加1条top-k检索结果) ---

请按上述信息作答,不要扩展。

回填优先级策略

  1. 用户偏好(影响语气/定制)
  2. 当前问题直接相关文档
  3. 历史相似工单
  4. RAG 检索 top-k(仅当匹配度 > x)

标签:infra, ai

你的评论