是什么
为什么
解决大模型上下文窗口有限、无法跨会话保留信息的问题,开发者与产品团队借此构建个性化、连续性的 AI 体验。
怎么做
通过向量数据库、图数据库或关系型存储,将关键信息编码为结构化/半结构化条目,按需检索并注入 Prompt。
什么时候
需要跨会话一致性、个性化推荐或复杂知识沉淀时使用;单次问答、无状态任务或信息可实时获取时不应引入。
FOCUS
先记住这些
存什么比存多少更重要
只保留高价值、可复用、跨会话有效的信息(如偏好、关键事实、决策依据),避免原始日志堆砌。
精准召回胜过暴力注入
基于语义相似度、时间衰减与业务规则过滤,按需注入上下文,防止无关记忆干扰模型判断。
记忆会过期,必须主动维护
设置 TTL、冲突解决规则与摘要合并机制,定期清理低价值条目,保持记忆库轻量与准确。
不是所有场景都需要长期记忆
单次任务、实时可查信息或高延迟敏感场景应避免引入,优先用短期上下文或外部查询替代。
PROBLEM / POSITION / INTERFACE
先弄清它为什么存在,以及谁在使用
-
01 解决的问题
AI 应用需要记住用户历史、偏好或业务规则,但模型上下文窗口有限且会话间不共享状态。
每次对话从零开始,导致重复询问、体验割裂、无法积累领域知识。
- 成功标准
- 系统能自动存储关键信息,按需精准检索,并在后续交互中无缝调用,保持上下文连贯。
-
02 AI 生态位
作为 AI 系统的持久化知识层,连接短期上下文与外部知识库,支撑个性化与连续性推理。
- 上游
- 依赖会话日志、用户输入、业务事件或外部数据源作为记忆写入来源。
- 下游
- 为对话引擎、推荐系统、决策代理提供检索上下文,支撑个性化响应与复杂推理。
-
03 人的生态位
人类定义记忆策略、设定存储边界、审核检索结果,并决定哪些信息值得长期保留。
- 适合使用
- 需要跨会话一致性、用户画像积累、复杂知识沉淀或个性化服务时。
- 不必使用
- 单次交互、信息实时可查、无状态任务或引入记忆成本高于收益时。
-
04 独特价值
突破上下文窗口限制,实现跨会话知识积累与个性化,是构建连续 AI 体验的基础。
记忆冲突解决、信息衰减策略、检索精度与延迟平衡、隐私与合规边界。
- 复杂度判断
- 复杂度不是功能数量,而是控制与验证成本。
INTERFACE FLOW
谁在操作,信息怎样流动
-
WHO OPERATES
HUMAN定义记忆范围、设定保留策略、审核关键信息并决定何时覆盖或清除。
SYSTEM自动执行信息编码、存储、索引构建与按需检索,管理生命周期与一致性。
-
INPUT
用户对话、业务事件、偏好设置、历史交互记录等需持久化的信息片段。
-
CONTROL
存储策略(全量/增量/摘要)、检索阈值、上下文注入规则、过期与清理机制。
-
OUTPUT
返回结构化记忆条目或检索结果,注入后续 Prompt,不直接触发外部动作。
FLOW
记忆写入与检索流程
01信息提取从对话或事件中提取关键事实、偏好或决策依据,过滤噪声。
02编码存储将信息向量化或结构化,写入存储层并附加元数据(时间、来源、权重)。
03按需检索根据当前查询生成检索条件,结合语义相似度与时间衰减召回 Top-K。
04上下文注入将检索结果格式化,控制长度后注入 Prompt,供模型生成响应。
CODE / PYTHON最小 Python 调用
import os
from openai import OpenAI
from qdrant_client import QdrantClient
from qdrant_client.models import Distance, VectorParams, PointStruct
# 1. 初始化向量库
client = QdrantClient(":memory:")
client.create_collection(collection_name="memories", vectors_config=VectorParams(size=1536, distance=Distance.COSINE))
# 2. 写入记忆
client.upsert(collection_name="memories", points=[
PointStruct(id=1, vector=[0.1]*1536, payload={"text": "用户偏好简洁回答", "ts": 1700000000})
])
# 3. 检索记忆
results = client.search(collection_name="memories", query_vector=[0.12]*1536, limit=1)
print(results[0].payload["text"])最短闭环:初始化向量库 → 写入记忆 → 检索并打印。真实场景需替换向量模型与持久化配置。
JSON / RESPONSE典型返回(示意)
{
"id": 1,
"score": 0.98,
"payload": {
"text": "用户偏好简洁回答",
"ts": 1700000000,
"source": "user_preference",
"weight": 0.8
}
}PRACTICE
记忆系统上线前检查
✓{'check': '是否定义了明确的存储边界?', 'why': '防止原始日志堆砌导致检索噪声与成本飙升。'}
✓{'check': '是否配置了时间衰减与 TTL?', 'why': '过期信息会干扰判断,需自动清理或降权。'}
✓{'check': '检索结果是否经过过滤与长度控制?', 'why': '避免无关记忆污染上下文,影响模型输出质量。'}
✓{'check': '是否设计了冲突解决与摘要合并机制?', 'why': '同一主题多条记忆会引发矛盾,需去重或融合。'}
FAQ
常见问题
01它和短期上下文有什么区别?+
短期上下文仅限当前会话,长期记忆跨会话持久化,需额外存储、检索与生命周期管理。
避免混淆两者导致架构设计失误或资源浪费。02最小可用方式是什么?+
用向量库存储关键偏好/事实,按需检索并注入 Prompt,配合简单 TTL 与长度控制。
帮助快速验证价值,避免过度工程化。03什么时候不需要它?+
单次交互、信息实时可查、无状态任务或引入记忆成本高于收益时。
控制系统复杂度与延迟,聚焦核心场景。04记忆冲突怎么处理?+
按时间戳覆盖、权重投票或人工审核,定期合并摘要,避免矛盾信息并存。
冲突记忆会直接导致模型输出混乱,必须主动管理。NEXT