Skip to main content

MongoDBMemory

NoSQL 文档存储,具有灵活的模式设计和 MongoDB 特定功能。

导入

import { MongoDBMemory } from '@ag-kit/agents/storage';

构造函数

constructor(config: MongoDBMemoryConfig)

配置

config
MongoDBMemoryConfig
required
MongoDB 记忆存储的配置,扩展 BaseMemory 选项

基本用法

// 简单的 MongoDB 连接
const memory = new MongoDBMemory({
  connectionString: 'mongodb://localhost:27017',
  databaseName: 'agkit_memory',
  sessionId: 'user-session-123',
  enableContextManagement: true
});

// 使用灵活模式添加和检索事件
await memory.add({
  message: {
    id: 'msg-1',
    role: 'user',
    content: '你好,我需要帮助处理我的项目',
    timestamp: new Date(),
    // MongoDB 允许灵活的文档结构
    metadata: {
      platform: 'web',
      userAgent: 'Mozilla/5.0...',
      location: { lat: 40.7128, lng: -74.0060 }
    }
  },
  state: { 
    userId: 'user-123',
    tags: ['help', 'project'],
    // 任何自定义应用程序数据
    customData: {
      projectId: 'proj-456',
      workspaceId: 'ws-789'
    }
  }
});

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

核心接口方法

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

自动连接设置

// MongoDBMemory 自动处理连接
const memory = new MongoDBMemory({
  connectionString: 'mongodb://username:password@localhost:27017',
  databaseName: 'agkit_memory',
  clientOptions: {
    maxPoolSize: 20,
    serverSelectionTimeoutMS: 5000,
    retryWrites: true
  }
});

// 或使用现有连接
import { MongoClient } from 'mongodb';
const client = new MongoClient('mongodb://localhost:27017');
await client.connect();
const db = client.db('agkit_memory');

const memory2 = new MongoDBMemory({
  db,
  sessionId: 'user-session-789'
});

独特功能

  • 自动连接设置: 无需手动创建客户端
  • 灵活模式: 基于文档的存储,具有动态模式
  • 无预定义结构: 无需迁移即可适应不断变化的需求
  • JSON 原生: 自然处理复杂的嵌套数据结构
  • 横向扩展: 内置支持 MongoDB 分片和复制

限制

  • 最终一致性: 在分布式设置中,读取可能不会立即反映写入
  • 内存使用: 大型文档可能消耗大量内存
  • 复杂连接: 对复杂关系操作的支持有限
  • 学习曲线: 需要理解 MongoDB 概念和查询语言