EssTech
Published on

What database shall I use in AI memory

Authors
  • avatar
    Name
    Heefan
    Twitter

What Database shall I use in AI application memory

Graph DB or PostgreSQL Database?

AI Agent Memory Layers

AI agents typically need 3 types of memory:

┌─────────────────────────────────────────────────┐
1. Working Memory (Seconds - Minutes)Current conversation context                 │
│    → Redis / In-Memory└─────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────┐
2. Short-term Memory (Hours - Days)Recent conversation history                  │
│    → PostgreSQL / MongoDB└─────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────┐
3. Long-term Memory (Weeks - Forever)Learned facts, preferences, relationships    │
│    → PostgreSQL + pgvector OR Graph DB└─────────────────────────────────────────────────┘

Database Options Comparison

Database TypeBest ForAvoid WhenCost
PostgreSQL + pgvectorGeneral-purpose memory, semantic search, structured dataNeed complex graph traversal$
Graph DB (Neo4j, Neptune)Entity relationships, knowledge graphs, multi-hop reasoningSimple key-value storage, budget constrained$$$
Vector DB (Pinecone, Weaviate)Pure semantic search at scale, embeddings-onlyNeed structured queries, ACID transactions$$
RedisSession state, caching, real-time accessLong-term persistence, complex queries$
MongoDBFlexible schema, document storageStrong relational integrity needed$

Decision Framework

Step 1: Define Your Memory Requirements

What do I need to remember?
☐ User preferences (name, language, settings)
☐ Conversation history
☐ Learned facts and entities
☐ Relationships between concepts
☐ Temporal patterns and changes

How will I retrieve memories?
☐ Semantic similarity ("find similar conversations")
☐ Exact lookups ("get user preferences")
☐ Relationship traversal ("find connected topics")
☐ Time-based ("what did user say last week")
☐ Pattern matching ("find contradictions")

What's my scale? ☐ <10K users → Simple is better
☐ 10K-100K users → Optimize for cost
☐ >100K users → Optimize for performance

Step 2: Choose Your Architecture

Architecture A: Simple & Cost-Effective

PostgreSQL + pgvector + Redis

Use when:
✅ Building MVP or startup
✅ Budget-conscious
✅ Need semantic search + structured data
✅ Want mature, battle-tested tech
✅ Limited DevOps resources

Capabilities:
☐ Semantic similarity search (pgvector)
☐ Structured queries (SQL)
☐ ACID transactions
☐ Session caching (Redis)
☐ 80% of AI agent use cases

Cost: $ (lowest)

Architecture B: Vector-First (For Embedding-Heavy Apps)

Pinecone/Weaviate + PostgreSQL + Redis

Use when:
✅ Primarily semantic/vector search
✅ Massive scale (millions of embeddings)
✅ Need ultra-fast similarity search
✅ Less relational data

Capabilities: ☐ Optimized vector operations
☐ Blazing-fast similarity search
☐ Metadata filtering
☐ PostgreSQL handles structured data

Cost: $$ (medium)

Architecture C: Graph-Enhanced (For Relationship-Heavy Apps)

Neo4j/Neptune + PostgreSQL + Redis

Use when:
✅ Complex entity relationships are core feature
✅ Need multi-hop reasoning
✅ Building knowledge graphs
✅ Relationship queries > 3 levels deep
✅ Examples: Social networks, recommendation engines, fraud detection

Capabilities: ☐ Fast relationship traversal
☐ Pattern matching
☐ Temporal relationship tracking
☐ Entity evolution over time

Cost: $$$ (highest)

Architecture D: Hybrid (For Production at Scale)

PostgreSQL + pgvector + Graph DB + Redis + Message Queue

Use when:
✅ Large enterprise application
✅ Complex requirements across multiple domains
✅ Budget for infrastructure
✅ Dedicated DevOps team

Capabilities: ☐ Best of all worlds
☐ Microservices architecture
☐ Specialized databases for specific tasks

Cost: $$$$ (enterprise)

START: What's your primary memory need?      

├─ "Remember user preferences & chat history"
│  └─> PostgreSQL + RedisCost: $, Complexity: Low
├─ "Semantic search across conversations"
│  └─> PostgreSQL + pgvector + RedisCost: $, Complexity: Low-Medium
├─ "Massive scale vector search (\>1M embeddings)"
│  └─> Pinecone/Weaviate + PostgreSQL
Cost: $$, Complexity: Medium
├─ "Entity relationships & knowledge graphs"
│  └─> Neo4j + PostgreSQL + RedisCost: $$$, Complexity: High
└─ "All of the above at enterprise scale"
   └─> Hybrid Architecture
      Cost: $$$$, Complexity: Very High

Real-world Example

Example: ChatGPT-like Assistant

// PostgreSQL + pgvector
Memory Needs:
- Store conversation history ✓
- Semantic search for context ✓
- User preferences ✓

Database: PostgreSQL + pgvector
Why: Simple, cost-effective, handles 99% of needs

Example2: Personal AI with Long-term Memory (Mem0)

// Graph DB + Vector DB
Memory Needs:
- Track entity relationships ✓
- Multi-hop reasoning ✓
- Evolving knowledge graph ✓
- Semantic search ✓

Database: Neo4j + PostgreSQL + pgvector
Why: Core value prop is relationship-aware memory

Example3: Customer Support Agent

// PostgreSQL + Redis
Memory Needs:
- Ticket history ✓
- User info lookups ✓
- Session state ✓

Database: PostgreSQL + Redis
Why: Mostly transactional, simple retrieval

Example 4: Recommendation-Heavy AI

// Graph DB + Vector DB
Memory Needs:
- User behavior patterns ✓
- Content relationships ✓
- Collaborative filtering ✓

Database: Neo4j + Pinecone
Why: Relationships drive recommendations

Key Principles

  1. Start Simple, Scale When Needed
    ☐ Don't over-engineer early
    ☐ PostgreSQL + pgvector handles most cases
    ☐ Add complexity only when proven necessary

  2. Measure Before Switching
    ☐ Identify actual bottlenecks
    ☐ Graph DB ≠ automatically better
    ☐ Cost vs. benefit analysis

  3. Understand Your Access Patterns
    ☐ How often do you query relationships?
    ☐ What's your read/write ratio?
    ☐ Do you need real-time or eventual consistency?

  4. Consider Total Cost of Ownership
    ☐ Infrastructure costs
    ☐ Developer learning curve
    ☐ Maintenance overhead
    ☐ Vendor lock-in

  5. Only add Graph DB when:
    ☐ Relationship queries are your core feature
    ☐ You've proven PostgreSQL can't handle your relationship complexity
    ☐ You have budget and engineering resources
    ☐ Your data model is inherently graph-like

-- EOF ---