跳到主要内容
AI教程

使用 AIrecall 构建持久化 AI 智能体记忆

安装并集成 AIrecall,为 AI 智能体实现持久化记忆、混合检索与自动摘要。

AIrecall 持久化 AI 智能体记忆

什么是 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。

实用集成模式

  1. 为智能体创建一个 Memory 实例。
  2. 生成响应前,使用用户当前的查询调用 recall
  3. 将返回的相关记忆作为辅助上下文插入模型提示词。
  4. 交互结束后,调用 remember 保存重要事件、操作或结果。
  5. 当应用程序识别出需要明确保留的长期偏好或事实时,使用 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 保存长期知识。