Structure
memory:
id: string # Memory identifier (required for memory access)
storage?: # Optional storage configuration (defaults to in-memory)
use: string # Storage backend reference
config?: object # Storage-specific configuration
vector: # Vector configuration (required)
use: string # Vector backend reference
dimensions: number # Vector dimensions (e.g., 1536)
config?: object # Vector-specific configuration
embedder?: # Optional embedder configuration
use: string # Embedder backend reference
config?: object # Embedder-specific configuration
options?: # Optional memory behavior configuration
lastMessages?: number # Number of recent messages to include
semanticRecall?: object # Vector search configuration
workingMemory?: object # Working memory configuration
Basic Usage
Memory can be configured in three main ways:
memory:
id: basic_memory
vector:
use: compozy/vector:pg-vector
dimensions: 1536
config:
url: "{{ env.DATABASE_URL }}"
Memory References
Memory can be configured and accessed at three different levels:
# 1. Workflow Level Memory
memory:
id: global_memory
vector:
use: compozy/vector:pg-vector
dimensions: 1536
config:
url: "{{ env.DATABASE_URL }}"
# 2. Task Level Memory
tasks:
analyze_request:
memory:
id: task_memory # Reference to memory configuration
with:
context: "{{ memory.task_memory.current_thread }}"
history: "{{ memory.task_memory.last_messages }}"
relevant: "{{ memory.task_memory.semantic_search }}"
# 3. Agent Level Memory
agents:
support_agent:
use: compozy/agents:openai
memory:
id: agent_memory # Reference to memory configuration
with:
context: "{{ memory.agent_memory.current_thread }}"
history: "{{ memory.agent_memory.last_messages }}"
relevant: "{{ memory.agent_memory.semantic_search }}"
At each level, memory can be accessed through:
{{ memory.<id>.current_thread }}
- Access current conversation context
{{ memory.<id>.last_messages }}
- Retrieve recent messages
{{ memory.<id>.semantic_search }}
- Find relevant past interactions
Best Practices
Storage Selection
Choose whether to use the default in-memory storage or configure a persistent storage backend based on your needs.
Vector Configuration
Always configure your vector database with appropriate dimensions and connection details.
Embedder Selection
Consider configuring a specific embedder when you need control over the embedding process.
Memory IDs
Always provide clear, descriptive memory IDs as they are required for accessing memory through {{ memory.<id> }}
references.