Skip to main content

TypeORMMemory

灵活的基于 ORM 的记忆存储,通过 TypeORM 集成支持多种数据库类型。

导入

import { TypeORMMemory } from '@ag-kit/agents/storage';
import { DataSource } from 'typeorm';

构造函数

constructor(config: TypeORMMemoryConfig)

配置

config
TypeORMMemoryConfig
required
TypeORM 记忆存储的配置,扩展 BaseMemory 选项

数据库设置

PostgreSQL 示例

import { DataSource } from 'typeorm';
import { TypeORMMemory } from '@ag-kit/agents/storage';

const dataSource = new DataSource({
  type: 'postgres',
  host: 'localhost',
  port: 5432,
  username: 'postgres',
  password: 'password',
  database: 'agkit_memory',
  entities: [MemoryEventEntity], // AG-Kit 提供实体
  synchronize: true, // 自动创建表(仅开发环境)
  logging: false
});

await dataSource.initialize();

const memory = new TypeORMMemory({
  dataSource,
  sessionId: 'user-session-123',
  enableContextManagement: true
});

MySQL 示例

const dataSource = new DataSource({
  type: 'mysql',
  host: 'localhost',
  port: 3306,
  username: 'root',
  password: 'password',
  database: 'agkit_memory',
  entities: [MemoryEventEntity],
  synchronize: true
});

await dataSource.initialize();
const memory = new TypeORMMemory({ dataSource });

SQLite 示例

const dataSource = new DataSource({
  type: 'sqlite',
  database: './memory.sqlite',
  entities: [MemoryEventEntity],
  synchronize: true
});

await dataSource.initialize();
const memory = new TypeORMMemory({ dataSource });

基本用法

// 使用数据库连接初始化
const memory = new TypeORMMemory({
  dataSource: await dataSource.initialize(),
  sessionId: 'user-session-123',
  eventTableName: 'conversation_events',
  enableContextManagement: true
});

// 添加和检索事件
await memory.add({
  message: {
    id: 'msg-1',
    role: 'user',
    content: '你好,我需要帮助处理我的项目',
    timestamp: new Date()
  },
  state: { userId: 'user-123' }
});

const events = await memory.list({ limit: 10, maxTokens: 4000 });

核心接口方法

TypeORMMemory 继承自 BaseMemory,并实现了所有标准记忆接口方法,完全支持分支。有关包括 list()add()addList()delete()retrieve()clear()getCount()isEmpty() 和所有分支方法的完整 API 文档,请参阅 BaseMemory API 参考

独特功能

  • 多数据库支持: PostgreSQL、MySQL、SQLite、SQL Server、Oracle 等
  • TypeORM 集成: 完整的 TypeORM 查询能力和实体管理
  • 自定义表名: 可配置的事件、状态和摘要表名
  • 事务支持: 数据完整性的 ACID 合规性
  • 迁移支持: 数据库模式版本控制和迁移
  • 自动初始化: 使用 synchronize 选项自动创建表

支持的数据库

  • MySQL: 完整支持,带有优化
  • PostgreSQL: 完整支持,带有 JSON 操作
  • SQLite: 开发和测试的完整支持
  • SQL Server: 企业环境的完整支持
  • Oracle: 企业环境的完整支持
  • MariaDB: 作为 MySQL 替代的完整支持
  • CockroachDB: 分布式部署的完整支持

限制

  • 设置复杂性: 需要数据库配置和管理
  • 数据库依赖: 需要外部数据库服务器
  • 迁移管理: 模式更改需要仔细的迁移规划
  • 连接管理: 必须处理数据库连接和连接池