
什么是 AIrecall?
AIrecall 是一个可直接接入的 AI 智能体长期记忆层。它能够跨会话保留有用信息,使智能体不必仅依赖当前上下文窗口。该项目结合了 Python SDK、Go 记忆服务器、SQLite 存储和进程内向量索引。
AIrecall 旨在让提示词保持聚焦。智能体无需在每次请求中插入完整的交互历史,而是可以检索与当前轮次最相关的记忆。
核心记忆类型与功能
- 情景记忆:按顺序存储事件,包括对话、操作和结果。
- 语义记忆:保留从过往情景中提炼出的长期事实和偏好。
- 混合检索:在情景记忆和语义记忆中结合关键词匹配与向量相似度。
- 自动摘要:定期压缩较早的情景并提取长期事实,而不是简单删除历史记录。
- 持久化本地存储:使用 SQLite 和进程内向量索引。
- 灵活运行:记忆服务器可以在本地运行,也可以作为边车运行。
AIrecall 的工作原理
在每一轮交互中,Python SDK 都会通过本地调用或 gRPC 将当前查询发送到 AIrecall Core。核心组件使用关键词和向量相似度搜索情景记忆与语义记忆,对结果进行排序,并返回最相关的记忆,以便将其注入智能体的提示词。
摘要器会在后台处理较早的情景。它将长期有效的信息提取到语义记忆中,并压缩其余历史记录,帮助长期运行的智能体保留有用知识,而无需持续扩展其活跃上下文。
安装与设置
安装 Python SDK
安装供 Python 智能体导入的软件包:
pip install airecall-sdk
初始化本地存储
使用命令行界面搭建一个基于 SQLite 的本地记忆存储:
airecall init
完成此设置后,无需单独运行服务,即可立即开始存储和检索记忆。
安装或运行记忆服务器
如果希望在本地使用核心记忆服务器,或将其作为边车运行,请安装服务器扩展:
pip install airecall-sdk[server]
然后,可以将服务器作为独立进程运行:
airecall serve
根据项目 README,SDK 本身仅依赖标准库,服务器则使用一个纯 Go 依赖项。
基本用法
创建记忆实例
导入 Memory,并为智能体指定标识符:
from airecall import Memory
memory = Memory(agent_id="support-bot")
agent_id 用于标识其记忆正在被存储和检索的智能体。如果希望后续会话访问同一个记忆集合,请使用相同的标识符。
存储情景记忆
使用 remember 记录交互期间发生的事件:
memory.remember(
"User asked about refund policy for order ORD-9921, told 30-day window applies."
)
这是一条情景记忆,因为它记录了一个具体事件及其结果。
检索相关上下文
在后续会话中,使用当前问题调用 recall:
context = memory.recall(
"what did we tell this user about refunds?"
)
AIrecall 会搜索已存储的记忆,并返回按相关性排序的相关情景。随后,应用程序可以将返回的上下文添加到发送给模型的提示词中。
存储长期事实
对于在单次事件后仍应保持有用的信息,可以使用 remember_fact 将其明确提升为长期事实:
memory.remember_fact(
key="preferred_contact",
value="email, not phone"
)
这会为稳定偏好创建语义记忆,而不只是再记录一条按时间排列的情景。
使用 LangChain 适配器
AIrecall 提供了一个名为 MemoryRetriever 的 LangChain 适配器。封装现有的 Memory 实例即可创建检索器:
from airecall import Memory
from airecall.adapters.langchain import MemoryRetriever
memory = Memory(agent_id="support-bot")
retriever = MemoryRetriever(memory)
README 演示了如何构造适配器,但没有说明后续的链或检索器配置。将生成的对象集成到更大型的 LangChain 应用程序时,请遵循该适配器的当前 API。
实用集成模式
- 为智能体创建一个
Memory实例。 - 生成响应前,使用用户当前的查询调用
recall。 - 将返回的相关记忆作为辅助上下文插入模型提示词。
- 交互结束后,调用
remember保存重要事件、操作或结果。 - 当应用程序识别出需要明确保留的长期偏好或事实时,使用
remember_fact。
这种模式无需在每个提示词中放入完整历史记录,同时仍能让智能体在需要时访问先前的决策和用户偏好。
高级技巧
区分事件与长期知识
使用情景记忆记录特定交互期间发生的事情,使用语义记忆保存稳定的事实和偏好。例如,退款讨论属于情景记忆,而用户偏好通过电子邮件沟通则是一项长期事实。
保持智能体标识符一致
对于需要共享记忆的会话,请选择一个稳定的 agent_id。从应用程序的角度看,更改该标识符会创建一个不同的记忆作用域。
选择合适的部署模式
对于简单的本地工作流,可使用 airecall init 初始化基于 SQLite 的存储。对于需要专用记忆进程的架构,请安装服务器扩展,并在本地或以边车方式运行 airecall serve。
等待索引预热
如果首次查询引发 RecallTimeout,向量索引可能仍在预热。请在健康检查端点报告 status: ready 后重试。
使用可靠的存储路径
如果重启后记忆似乎丢失,请检查 storage.backend 路径。相对路径会基于服务器进程的工作目录进行解析,因此从其他目录启动服务器时,可能会指向另一个存储。请使用一致的工作目录或存储路径。
总结
AIrecall 为 AI 智能体提供持久化的情景记忆和语义记忆,无需将每一次旧交互都保留在提示词中。凭借简洁的 Python API、基于 SQLite 的存储、混合检索和自动摘要,它提供了一种跨会话保留相关上下文的实用方法。首先运行 airecall init,使用 remember 记录情景,通过 recall 检索情景,并使用 remember_fact 保存长期知识。
