Skip to main content

Overview

The MemoryStore interface provides methods for storing, retrieving, and managing agent memories. Reference: src/memory/store.ts

Getting the Store

// From agent
const memory = agent.memory;

// Or create standalone
import { createMemoryStore } from "./src/memory";
import { MemoryBackend } from "./src/backend";
const memory = createMemoryStore(new MemoryBackend());

Methods

MethodDescription
store(options)Store a new memory
get(options)Retrieve with filters
search(options)Semantic search
getById(id)Get specific memory
update(id, updates)Modify a memory
delete(id)Remove a memory
getStats()Get statistics

Storing Memories

const memory = await memoryStore.store({
  content: "Learned about vector databases",
  type: "semantic",          // episodic, semantic, emotional, procedural, reflection
  scope: "short_term",       // short_term, working, long_term
  importance: 0.7,           // 0-1
  tags: ["learning"],
  sourceType: "tick",
  deduplicate: true,         // Check for duplicates
});

Retrieving Memories

// With filters
const memories = await memoryStore.get({
  type: "semantic",
  scope: "long_term",
  limit: 10,
  minImportance: 0.5,
});

// By ID
const memory = await memoryStore.getById("memory_id");

Searching

const results = await memoryStore.search({
  query: "vector databases",
  type: "semantic",          // Optional filter
  limit: 10,
  threshold: 0.6,            // Min similarity
});

Updating and Deleting

await memoryStore.update("memory_id", {
  importance: 0.9,
  tags: ["important"],
});

await memoryStore.delete("memory_id");

Statistics

const stats = await memoryStore.getStats();
// { total, byType, byScope, averageImportance }

Deduplication Utilities

Reference: src/memory/deduplication.ts
import { checkDuplication, findSimilarMemories, DEDUP_THRESHOLDS } from "./src/memory/deduplication";

// Check if duplicate
const result = checkDuplication(newMemory, existingMemories);
// { isUnique, reason, matchedMemoryId, similarity }

// Find similar without strict dedup
const similar = findSimilarMemories(memory, allMemories, { limit: 5, minSimilarity: 0.6 });

Default Thresholds

TypeThreshold
episodic0.92
semantic0.95
emotional0.88
procedural0.97
reflection0.90

Salience and Confidence

import { calculateSalience, calculateConfidence } from "./src/memory/deduplication";

const salience = calculateSalience("Breaking news!");  // 0-1
const confidence = calculateConfidence("Data", "api"); // 0-1

Embeddings

Reference: src/llm/embeddings.ts
import { createEmbeddingClient, cosineSimilarity } from "./src/llm";

const embedder = createEmbeddingClient(config);
const result = await embedder.embed("Hello world");

const similarity = cosineSimilarity(embedding1, embedding2);

Backend Support

MethodConvexIn-Memory
store()YesYes
get()YesYes
search()VectorText
update()OptionalYes
delete()OptionalYes

Next Steps