揭秘 Agent 的长期记忆:RGA 记忆模块

3 阅读5分钟

在折腾 Agent 的同学肯定都纠结过一个问题:
怎么才能让它记住几个月前的对话?怎么从自己那堆几万字的私有文档里,瞬间捞出最相关的那一条知识?

答案就藏在一个听起来很高大上,但拆开看又极其优雅的设计里——RGA(检索引导架构)记忆模块

今天我们把这个“AI 长期记忆”的内核彻底扒干净。


它是什么?——把文字“拍扁”成一串数字

说白了,RGA 记忆模块干的事就一件:
把人类那些啰嗦的、充满歧义的文本,翻译成计算机能秒懂的“数字向量”(Embeddings)。

  • 本质:它是一个文本特征化的过程。一段话、一篇文章、一本书,经过处理后,都会变成一串长长的数字列表。
  • 为什么这么干:人类语言太随性了。你说“西瓜”,它跟“水果”是亲戚,跟“解暑”是好搭档,但跟“键盘”八竿子打不着。
    传统的 Ctrl+F 只会死磕关键词,你搜“推荐个解暑的水果”,它绝对找不出那句只写了“西瓜”却没写“水果”的话。
    而 RGA 能抓住语义的相似性,这是一种“我懂你意思”级别的检索。

所以,RGA 要做的就是给每个文本拍一张“数字 X 光片”——后面的所有魔法,都靠这张片子。


机器是怎么用数字“算”出语义的?

计算机不认识汉字,在它眼里每个 Token 都只是一个数字 ID。
那它凭什么算出“猫”和“狗”关系铁,“猫”和“卡车”完全不熟?
答案就在高维空间与一个简单的数学公式里。

先拿二维世界热个身

假设我们只关注两个维度:是不是动物(X 轴),以及体型大小(Y 轴),数值范围 -1 到 1。

  • → 是动物(0.9),体型小(-0.7) → 坐标 [0.9, -0.7]
  • → 是动物(0.9),体型中等(-0.2) → 坐标 [0.9, -0.2]
  • 卡车 → 不是动物(-0.9),体型巨大(0.9) → 坐标 [-0.9, 0.9]

猫和狗坐标挨得很近,它俩一看就是一个圈子的;而卡车远在天边。

升维到真实模型

真正的 Embedding 模型,维度不是 2,而是 1024 甚至几千个
当我们要比较两段话有多像时,计算机直接套用余弦相似度(Cosine Similarity) ,计算两个多维向量之间的夹角:

  • “猫”与“狗” 夹角很小 → 余弦值接近 1 → “语义高度相关!”
  • “猫”与“卡车” 夹角巨大 → 余弦值接近 0 甚至负数 → “毫无关系。”

计算机就是这样“算”出语义的。
这一刻,文字变成了空间坐标,理解变成了几何运算,堪称数字世界里的连连看。


直接动手!用硅基流动 API 一步步实现语义检索

原理懂了,接下来就是一把梭的实操环节。
我们用国内高性价比的 硅基流动(SiliconFlow) 来演示,零门槛,有网络就能跑。

1. 生成一句文本的向量

向 Embedding 模型扔一句话,拿到它的数字分身。

import requests

url = "https://api.siliconflow.cn/v1/embeddings"
headers = {
    "Authorization": "Bearer YOUR_SILICONFLOW_API_KEY",  # 替换成你的 key
    "Content-Type": "application/json"
}
payload = {
    "model": "BAAI/bge-m3",  # 经众多开发者验证的通用向量模型
    "input": "Agent的记忆模块通常包含短期记忆和长期记忆。"
}

response = requests.post(url, json=payload, headers=headers)
print(response.json())

返回结果长这样(简化版):

{
  "data": [
    {
      "embedding": [
        0.02341, -0.01294, 0.08712, 0.12345, ..., -0.05432
        // 1024 个小数,就是这句话的“数字分身”
      ],
      "index": 0
    }
  ]
}

2. 海量文本中精准检索(搜索示例)

假设你本地知识库里已经存好了三个文本的向量:

文本向量简写内容
A[0.12, 0.35, ...]今天天气真好,适合出去玩。
B[0.89, -0.11, ...]大语言模型的上下文窗口是有限的,需要 RAG 技术辅助。
C[0.01, 0.92, ...]红烧肉的做法需要先漫火炖煮。

现在用户提问: “怎么解决大模型记不住太长前后文的问题?”

检索流程拆成四步:

  1. 转化提问 → 同样调用 API,把用户问题变成提问向量 Q:[0.85, -0.05, ...]

  2. 计算相似度 → 用 Q 与 A、B、C 分别算余弦相似度:

    • Q vs A(天气)→ 相似度:0.15
    • Q vs B(大模型/RAG)→ 相似度:0.91 👈 炸裂高分!
    • Q vs C(红烧肉)→ 相似度:0.02
  3. 排序召回 → 数据库按相似度从高到低排序,瞬间捞出 文本 B

  4. 喂给 Agent → Agent 拿着这条知识,精准回答用户。

整个过程,没有关键词匹配,没有死板的规则,只有数学上的“懂得”。


总结:AI 长期记忆的基石

回过头看,“文本 → 向量 → 相似度计算 → 精准检索”这一闭环,正是当前 AI 长期记忆与本地向量数据库的核心实现范式

有了 RGA 模块,Agent 不再只有那点可怜的“对话窗口记忆”,而是可以坐拥百万、千万级的私有知识库。
它记着你三个月前的偏好,也能瞬间翻出某份冷门文档里的某句话——
真正的“过目不忘”,不过如此。


💡 一点思考:向量检索的能力边界取决于 Embedding 模型对业务领域的理解,选对模型、做好知识库的切片与分块,效果还会有质的提升。你目前在用什么模型做 RAG?欢迎在评论区交流,咱们一起避坑。