WHAT - 大语言模型 Memory 系统设计入门

文章目录

  • 一、核心结论
  • [二、整体架构(Memory System 典型设计)](#二、整体架构(Memory System 典型设计))
      • [信息提取(Memory Extraction)](#信息提取(Memory Extraction))
      • [Memory 存储(Memory Store)](#Memory 存储(Memory Store))
        • [结构化 Memory(强约束)](#结构化 Memory(强约束))
        • [向量 Memory(语义记忆)](#向量 Memory(语义记忆))
      • [Memory 检索(Retrieval)](#Memory 检索(Retrieval))
      • [Prompt 注入](#Prompt 注入)
  • [三、Memory 的几种类型](#三、Memory 的几种类型)
      • [Profile Memory(用户画像)](#Profile Memory(用户画像))
      • [Preference Memory(偏好)](#Preference Memory(偏好))
      • [Episodic Memory(对话记忆)](#Episodic Memory(对话记忆))
      • [Semantic Memory(知识偏好)](#Semantic Memory(知识偏好))
  • [四、Memory 设计的关键难点](#四、Memory 设计的关键难点)
    • [1. 什么该记?什么不该记?](#1. 什么该记?什么不该记?)
    • [2. 记忆更新(冲突问题)](#2. 记忆更新(冲突问题))
    • [3. 记忆污染(Hallucination Memory)](#3. 记忆污染(Hallucination Memory))
    • [4. 上下文长度限制](#4. 上下文长度限制)
  • 五、进阶设计
      • [分层 Memory](#分层 Memory)
      • [Memory + RAG + Tool 的融合](#Memory + RAG + Tool 的融合)
  • 六、一个实际工程实现(简化版)
      • [Step 1:定义结构](#Step 1:定义结构)
      • [Step 2:提取 memory](#Step 2:提取 memory)
      • [Step 3:存储](#Step 3:存储)
      • [Step 4:检索](#Step 4:检索)
      • [Step 5:拼 Prompt](#Step 5:拼 Prompt)
  • 七、总结

大模型是怎么记住使用者偏好的?memory系统是怎么设计的?

本质上涉及"大模型 ≠ 数据库",以及"长期记忆是外挂系统而不是模型本体能力"。

今天我们从原理 → 架构 → 实现细节 → 常见设计权衡,介绍一套完整框架。

一、核心结论

大模型本身不会"记住你"

所谓"记住用户偏好",通常是通过一个外挂的 Memory System(记忆系统) 实现的,本质是:

把用户信息结构化存储 + 在合适时机喂回模型(Prompt Augmentation)

二、整体架构(Memory System 典型设计)

可以抽象成 4 层:

复制代码
用户输入 → 信息提取 → Memory存储 → 检索 → 拼接Prompt → 模型生成

具体拆开:

信息提取(Memory Extraction)

从对话中提取"值得记住的信息"

比如:

  • "我用 React + TypeScript"
  • "我在新加坡工作"
  • "我不喜欢太啰嗦的回答"

这里通常会用一个"小模型 / prompt"做分类:

text 复制代码
判断这句话是否包含用户长期偏好信息,如果是,提取成结构化数据

输出类似:

json 复制代码
{
  "type": "preference",
  "key": "tech_stack",
  "value": "React + TypeScript"
}

Memory 存储(Memory Store)

通常分两类:

结构化 Memory(强约束)
  • KV / JSON
  • 用户画像
  • 明确偏好
json 复制代码
{
  "language": "zh",
  "location": "Singapore",
  "tech_stack": ["React", "TypeScript"]
}

优点:稳定、可控

缺点:不灵活

向量 Memory(语义记忆)
  • 存 embedding
  • 用于语义检索(RAG)
text 复制代码
"用户曾经问过:如何优化 React 性能"

优点:灵活

缺点:可能噪声大

RAG(Retrieval-Augmented Generation,检索增强生成)是一种通过外部知识源增强大语言模型(LLM)能力的技术。它在生成答案前,先从私有知识库或互联网检索相关信息,再结合这些信息由LLM生成回答。这有效解决了LLM产生的"幻觉"问题,确保答案更准确、即时且透明。

Memory 检索(Retrieval)

每次用户提问时:

两种检索方式:

① 精确检索(结构化)

ts 复制代码
if (user.pref.language) → 加入prompt

② 语义检索(向量)

text 复制代码
找和当前问题最相关的历史记忆 Top-K

Prompt 注入

把记忆拼进 prompt:

text 复制代码
System:
用户信息:
- 使用 React + TypeScript
- 偏好简洁回答

User:
怎么优化前端性能?

这一步决定体验好坏

三、Memory 的几种类型

业内通常会分 4 类:

Profile Memory(用户画像)

  • 技术栈
  • 地区
  • 职业

稳定长期存在

Preference Memory(偏好)

  • 回答风格
  • 输出格式
  • 语言

最核心

Episodic Memory(对话记忆)

  • 最近聊了什么
  • 上下文

短期(window memory)

Semantic Memory(知识偏好)

  • 用户关注领域
  • 常问问题类型

用 embedding 存

embedding 是把"语言"变成"数学坐标"。比如一句话:我喜欢用 React 写前端。会被模型编码成一个向量(比如 1536 维):[0.012, -0.98, 0.33, ..., 0.441]。这个向量的特点是:语义相似 → 向量相近;语义不同 → 向量距离远。

机器不擅长理解文字,但擅长算距离,这就是为什么存 embedding。

四、Memory 设计的关键难点

1. 什么该记?什么不该记?

如果全记 → 垃圾爆炸

如果太严格 → 记不住用户

常见策略:

  • 只记"长期稳定信息"
  • 过滤情绪、一次性问题

2. 记忆更新(冲突问题)

用户可能会说:

"我现在不用 Vue 了,改用 React"

需要:

  • 覆盖旧值
  • 或版本化

3. 记忆污染(Hallucination Memory)

模型可能误提取:

用户只是举例,但被当成偏好

解决:

  • 提高 extraction prompt 精度
  • 人工确认(像 ChatGPT 的"是否记住")

4. 上下文长度限制

不能把所有 memory 塞进去

所以必须:

  • 检索 Top-K
  • 做摘要(memory compression)

五、进阶设计

如果看 Cursor 这种 AI IDE,它的 memory 更复杂:

分层 Memory

复制代码
Global Memory(用户偏好)
Project Memory(项目规则)
Session Memory(当前对话)
Codebase Memory(代码索引)

Memory + RAG + Tool 的融合

复制代码
Memory(你是谁)
+
RAG(你在做什么)
+
Tool(你能做什么)

六、一个实际工程实现(简化版)

如果自己做一个 memory system:

Step 1:定义结构

ts 复制代码
type Memory = {
  userId: string
  key: string
  value: string
  type: 'profile' | 'preference'
  updatedAt: number
}

Step 2:提取 memory

ts 复制代码
const extractPrompt = `
请判断用户输入是否包含长期偏好信息...
`

Step 3:存储

  • PostgreSQL(结构化)
    • 向量库(如 Pinecone / Weaviate)

Step 4:检索

ts 复制代码
const memories = [
  ...structuredMemory,
  ...vectorSearch(query)
]

Step 5:拼 Prompt

ts 复制代码
const prompt = `
用户信息:
${memories.join('\n')}

问题:
${userInput}
`

七、总结

Memory 系统 ≈ 一个"智能的用户画像数据库 + 检索系统 + prompt拼接器"

而不是模型本身的能力。

很多人误以为:

"模型记住我了"

其实是:

系统在每次请求时,把"你是谁"重新告诉模型

相关推荐
2601_956139421 小时前
文旅行业品牌全案公司哪家强
大数据·人工智能·python
生活观察站1 小时前
中文在线亮相横琴—澳门国际数字艺术博览会国际数字创意论坛:AI漫剧打开内容创作新想象
大数据·人工智能
新新学长搞科研1 小时前
【高质量能源会议推荐】第十一届能源与环境研究进展国际学术会议(ICAEER 2026)
人工智能·物联网·算法·机器学习·能源·环境·新能源
光影少年1 小时前
前端SSR和ssg区别
前端·vue.js·人工智能·学习·react.js
疯狂成瘾者1 小时前
Docker + Nginx 部署配置
人工智能
做萤石二次开发的哈哈1 小时前
对话城市开发者:萤石亮相CSDN AI智能硬件创新城市行
人工智能·智能硬件
唯创知音1 小时前
产后康复器械语音播报语音识别解决方案
人工智能·语音识别·产后康复器械·语音播报方案·语音方案
冷小鱼1 小时前
Apache Pulsar 深度解析:从入门到精通的开发者指南
人工智能
疯狂的皮卡1 小时前
【AI】从最小 Agent 到向量化 RAG
人工智能