AI智能体是怎么记住东西的?简单说,短期靠对话窗口,长期靠向量数据库
最近玩AI工具,我发现一个挺有意思的问题:这些AI智能体是怎么记住之前聊过的东西的?比如我问它“我昨天提到的项目进展如何”,它居然能回答出来。这背后其实就是记忆系统在起作用。今天我就来聊聊这个,用大白话解释一下短期记忆和长期记忆是怎么实现的,顺便给几个实际工具的例子,让你也能自己动手试试。
短期记忆:对话窗口,就像你刚聊完天还记得住
短期记忆在AI里,说白了就是对话窗口(context window)。比如你用ChatGPT,它有个固定的窗口大小(比如4096个token),这个窗口里能放最近的一段对话。AI处理时,会把整个窗口内容一起送进模型,这样它就能“看到”上下文,知道你在说什么。
举个例子,如果你问:“我昨天提到的项目进展如何?”AI会检查窗口里有没有之前的对话记录。如果有,它就能回答;如果没有,它就瞎猜或者告诉你不知道。这就像你刚跟朋友聊完天,还能记得住刚才说了啥,但过一会儿可能就忘了。
实现上很简单:
- 工具如ChatGPT或Claude:内置了对话窗口管理,自动保留最近N条消息。
- 代码示例(用Python模拟):
# 假设对话窗口大小是5条消息 context_window = [] def add_to_context(message): context_window.append(message) if len(context_window) > 5: context_window.pop(0) # 移除最旧的消息 return context_window # 添加新消息 add_to_context("用户:我昨天提到的项目进展如何?") # AI处理时,会使用整个context_window作为输入
但短期记忆有个大问题:窗口有限,聊多了就记不住。所以需要长期记忆来补。
长期记忆:向量数据库,像你的笔记本记重点
长期记忆靠的是向量数据库(vector database)。这玩意儿听起来高大上,其实原理不复杂:AI把重要信息转换成向量(一堆数字),存到数据库里,以后需要时再查出来。
关键步骤:
- 提取关键信息:AI从对话中挑出重要内容,比如人名、日期、事件。
- 向量化:用嵌入模型(如OpenAI的text-embedding-ada-002)把文本转成向量。
- 存储:向量存到数据库,如Pinecone、Chroma或FAISS。
- 检索:用户提问时,AI把问题也向量化,去数据库里找相似的向量,拿回关联信息。
实际工具例子:
- LangChain:一个流行框架,内置了记忆模块,可以用向量数据库做长期存储。我试过,配置一下就能让AI记住跨会话的信息。
- AutoGPT:早期项目,用向量数据库存任务历史,实现长期规划。
- 代码片段(用LangChain和Chroma):
from langchain.embeddings import OpenAIEmbeddings from langchain.vectorstores import Chroma from langchain.memory import VectorStoreRetrieverMemory # 初始化向量数据库 embeddings = OpenAIEmbeddings() vectorstore = Chroma(embedding_function=embeddings) memory = VectorStoreRetrieverMemory(retriever=vectorstore.as_retriever()) # 存信息 memory.save_context({"input": "用户:我昨天提到的项目进展如何?"}, {"output": "AI:项目已完成80%。"}) # 取信息 retrieved = memory.load_memory_variables({"input": "项目进展"}) print(retrieved) # 输出相关记忆
这样,AI就能长期记住东西了,就像你写笔记一样,随时翻看。
关键信息提取:AI怎么知道该记什么?
不是所有对话都值得记,否则数据库早爆了。AI通常用这些方法提取关键信息:
- 基于规则:比如提取实体(人名、地点),或者用关键词匹配。
- 机器学习:训练模型识别重要句子,比如用摘要生成技术。
- 混合方法:实际工具如LangChain,结合了多种提取器,提高准确性。
吐槽一下:这步挺难的,AI有时候会记些乱七八糟的东西,比如我开玩笑说“明天世界末日”,它可能真存进去了,导致后续回答跑偏。所以实际用的时候,得调参或加过滤。
总结:短期和长期记忆结合,AI才更智能
简单总结:
- 短期记忆 = 对话窗口,简单但有限,适合即时上下文。
- 长期记忆 = 向量数据库,复杂但强大,适合跨会话记忆。
- 关键信息提取是桥梁,决定记什么、怎么记。
如果你想自己玩,我推荐:
- 初学者:试试ChatGPT的对话窗口,感受短期记忆。
- 进阶者:用LangChain搭个向量数据库,体验长期记忆。
- 注意:记忆系统不是完美的,AI可能记错或遗忘,别太依赖。
总的来说,AI记忆系统还在发展中,但理解这些基础,能帮你更好地使用工具,甚至自己定制智能体。有啥问题,欢迎留言讨论!
文章配图
本文来源:一江山水的随笔
本文地址:https://298.name/post/127.html
主要内容:AI智能体记忆系统揭秘:对话窗口是短期记忆,向量数据库是长期记忆
版权声明:如无特别注明,转载请注明本文地址!
博主有点懒,啥也没写!
