Documentation Index
Fetch the complete documentation index at: https://docs.ag-kit.dev/llms.txt
Use this file to discover all available pages before exploring further.
AG-Kit中的长期记忆功能使Agent能够跨对话和会话记住信息。它提供具备语义搜索、自动记忆提取和智能整合能力的持久化存储。
长期记忆存储以下内容:
- 持久性事实 - 需要无限期记住的信息
- 用户偏好 - 个人设置和选择
- 历史上下文 - 过去的交互和决策
- 领域知识 - 学习到的信息和见解
- 关联关系 - 概念与实体间的联系
与短期记忆(对话历史)不同,长期记忆专注于提取和存储超越单个对话的有意义信息。
记忆实现方案
AG-Kit提供多种长期记忆实现:
Mem0LongTermMemory
官方Mem0AG-Kit集成,具备AI驱动的先进记忆管理功能。
特性:
- 从对话中自动提取记忆
- 基于向量嵌入的语义搜索
- 基于图的记忆关联
- 智能记忆整合
- 去重与合并
- 记忆衰减与强化
- 多用户和多Agent支持
使用场景:
- 生产级AI应用
- 个性化用户体验
- 知识管理系统
- 多会话对话
TDAILongTermMemory
TDAI云端长期记忆,具备企业级特性。
特性:
- 云端持久化存储
- 语义搜索能力
- 基于策略的记忆组织
- 可扩展的基础设施
- 企业级可靠性
使用场景:
快速入门
使用Mem0LongTermMemory
import { Mem0LongTermMemory } from '@ag-kit/agents';
// 初始化Mem0记忆
const memory = new Mem0LongTermMemory({
apiKey: process.env.MEM0_API_KEY!,
userId: 'user-123',
agentId: 'assistant-v1',
appId: 'my-app'
});
// 测试连接
await memory.ping();
// 从对话中提取并记录记忆
const messages = [
{ role: 'user', content: 'My name is Alice and I love pizza' },
{ role: 'assistant', content: 'Nice to meet you, Alice! I\'ll remember that you love pizza.' }
];
const extractedMemories = await memory.extractAndRecord(messages, {
userId: 'user-123'
});
console.log('Extracted memories:', extractedMemories);
// [
// { id: 'mem-1', content: 'User name is Alice', strategy: 'general', ... },
// { id: 'mem-2', content: 'User loves pizza', strategy: 'preferences', ... }
// ]
手动记录记忆
// 手动记录特定记忆
await memory.record({
id: memory.generateMemoryId(),
strategy: 'preferences',
role: 'user',
content: 'User prefers dark mode interface',
metadata: {
category: 'ui_preferences',
confidence: 0.95,
source: 'explicit_statement'
},
createdAt: new Date()
});
// 批量记录多个记忆
await memory.recordBatch([
{
id: memory.generateMemoryId(),
strategy: 'facts',
content: 'User works as a software engineer',
metadata: { category: 'professional' },
createdAt: new Date()
},
{
id: memory.generateMemoryId(),
strategy: 'preferences',
content: 'User prefers TypeScript over JavaScript',
metadata: { category: 'technical' },
createdAt: new Date()
}
]);
核心操作
记录记忆
将新记忆存储到长期记忆中。
// 记录单个记忆
await memory.record({
id: 'mem-001',
strategy: 'facts',
role: 'user',
content: 'User birthday is March 15th',
metadata: {
type: 'personal_info',
verified: true
},
createdAt: new Date()
});
// 批量记录记忆
const memories = [
{
id: 'mem-002',
strategy: 'preferences',
content: 'User likes morning meetings',
metadata: {},
createdAt: new Date()
},
{
id: 'mem-003',
strategy: 'facts',
content: 'User lives in San Francisco',
metadata: {},
createdAt: new Date()
}
];
await memory.recordBatch(memories);
检索记忆
使用各种过滤器和搜索选项查询记忆。
// 检索所有记忆
const allMemories = await memory.retrieve({});
// 带限制检索
const recentMemories = await memory.retrieve({ limit: 10 });
// 按策略检索
const preferences = await memory.retrieve({
strategy: 'preferences',
limit: 20
});
// 分页检索
const page1 = await memory.retrieve({ limit: 10, offset: 0 });
const page2 = await memory.retrieve({ limit: 10, offset: 10 });
// 使用自定义过滤器检索
const verifiedMemories = await memory.retrieve({
filters: { verified: true },
limit: 50
});
删除记忆
通过ID或查询条件删除记忆。
// 按ID删除
await memory.delete('mem-001');
// 按查询删除(所有匹配的记忆)
await memory.delete({
strategy: 'temporary',
filters: { expired: true }
});
// 清除特定策略的所有记忆
await memory.clear('temporary');
// 清除所有记忆(谨慎使用!)
await memory.clear();
高级功能
自动记忆提取(仅限Mem0)
Mem0能自动从对话中提取有意义的信息。
// 从对话中提取记忆
const conversation = [
{ role: 'user', content: '我刚搬到纽约并在Google开始工作' },
{ role: 'assistant', content: '恭喜新工作和搬家!' },
{ role: 'user', content: '谢谢!我对这次改变既兴奋又紧张' }
];
const extractedMemories = await memory.extractAndRecord(conversation, {
userId: 'user-123',
metadata: {
conversation_id: 'conv-456',
extraction_date: new Date().toISOString()
}
});
// Mem0智能提取:
// - "用户搬到了纽约"
// - "用户在Google工作"
// - "用户对改变既兴奋又紧张"
相关记忆
基于图关系查找与特定记忆相关的其他记忆。
// 获取与特定记忆相关的记忆
const relatedMemories = await memory.getRelatedMemories('mem-001', 3);
// 返回最多3个相关记忆
// 示例:如果mem-001是"用户喜欢意大利食物"
// 相关记忆可能是:
// - "用户最喜欢的餐厅是Luigi's"
// - "用户对贝类过敏"
// - "用户喜欢烹饪意大利面"
记忆整合(仅限Mem0)
自动去重、合并和优化存储的记忆。
// 触发记忆整合
await memory.consolidate();
// Mem0自动执行:
// - 去重相似记忆
// - 合并相关信息
// - 对老旧未使用的记忆应用衰减
// - 强化频繁访问的记忆
与Agent集成
将长期记忆与AG-Kit Agent集成以实现持久化知识。
import { Agent, Mem0LongTermMemory } from '@ag-kit/agents';
// 创建长期记忆
const longTermMemory = new Mem0LongTermMemory({
apiKey: process.env.MEM0_API_KEY!,
userId: 'user-123',
agentId: 'assistant-v1'
});
// 创建带长期记忆的Agent
const agent = new Agent({
name: 'personal-assistant',
model: provider,
longTermMemory: longTermMemory,
/* ... */
});
// Agent自动:
// 1. 从对话中提取记忆
// 2. 检索相关记忆作为上下文
// 3. 根据新信息更新记忆
const response = await agent.run('你还记得关于我的什么?');
// Agent访问长期记忆以提供个性化响应
最佳实践
1. 使用适当的策略
用有意义的策略组织记忆:
// 良好:清晰的策略分类
await memory.record({
strategy: 'preferences',
content: '用户偏好深色模式',
/* ... */
});
// 不良:通用或模糊的策略
await memory.record({
strategy: 'general',
content: '用户偏好深色模式',
/* ... */
});
2. 添加丰富的元数据
在元数据中包含上下文信息:
// 良好:丰富的元数据
await memory.record({
content: '用户完成了Python课程',
metadata: {
category: 'education',
skill_level: 'intermediate',
completion_date: '2024-01-15',
verified: true,
source: 'certificate'
},
/* ... */
});
// 不良:最少的元数据
await memory.record({
content: '用户完成了Python课程',
metadata: {},
/* ... */
});
3. 使用语义搜索
利用语义搜索实现更好的检索:
// 良好:自然语言查询
const results = await memory.semanticSearch('用户的爱好是什么?');
// 次优:精确关键词匹配
const results = await memory.retrieve({ filters: { keyword: 'hobby' } });
性能考量
Mem0LongTermMemory
- 自动优化:Mem0处理去重和整合
- 语义搜索:基于向量的快速相似性搜索
- 可扩展性:高效处理数百万条记忆
- 网络延迟:需要调用Mem0服务API
- 缓存:考虑缓存频繁访问的记忆
查询优化
// 高效:使用限制和过滤器
const memories = await memory.retrieve({
strategy: 'preferences',
limit: 10,
filters: { category: 'food' }
});
// 低效:检索全部后在代码中过滤
const allMemories = await memory.retrieve({});
const filtered = allMemories.filter(m => m.strategy === 'preferences');
对比:短期记忆与长期记忆
| 方面 | 短期记忆 | 长期记忆 |
| 目的 | 对话历史 | 持久化知识 |
| 范围 | 单次会话 | 跨会话 |
| 存储 | 最近消息 | 提取的事实 |
| 检索 | 按时间顺序 | 语义搜索 |
| 生命周期 | 会话期间 | 永久 |
| 大小 | 受token限制 | 无限制 |
| 用例 | 上下文窗口 | 个性化 |
后续步骤
Agent集成
将记忆与AG-Kit Agent集成