在折腾 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, ...] | 红烧肉的做法需要先漫火炖煮。 |
现在用户提问: “怎么解决大模型记不住太长前后文的问题?”
检索流程拆成四步:
-
转化提问 → 同样调用 API,把用户问题变成提问向量 Q:
[0.85, -0.05, ...]。 -
计算相似度 → 用 Q 与 A、B、C 分别算余弦相似度:
- Q vs A(天气)→ 相似度:0.15
- Q vs B(大模型/RAG)→ 相似度:0.91 👈 炸裂高分!
- Q vs C(红烧肉)→ 相似度:0.02
-
排序召回 → 数据库按相似度从高到低排序,瞬间捞出 文本 B。
-
喂给 Agent → Agent 拿着这条知识,精准回答用户。
整个过程,没有关键词匹配,没有死板的规则,只有数学上的“懂得”。
总结:AI 长期记忆的基石
回过头看,“文本 → 向量 → 相似度计算 → 精准检索”这一闭环,正是当前 AI 长期记忆与本地向量数据库的核心实现范式。
有了 RGA 模块,Agent 不再只有那点可怜的“对话窗口记忆”,而是可以坐拥百万、千万级的私有知识库。
它记着你三个月前的偏好,也能瞬间翻出某份冷门文档里的某句话——
真正的“过目不忘”,不过如此。
💡 一点思考:向量检索的能力边界取决于 Embedding 模型对业务领域的理解,选对模型、做好知识库的切片与分块,效果还会有质的提升。你目前在用什么模型做 RAG?欢迎在评论区交流,咱们一起避坑。