← Back to Cecep Azhar
Cecep Azhar #ai-agent#memory#context#rag#vector-database

AI Agent Memory Management: Cara Agent Mengingat Konteks Percakapan

Cecep Saeful Azhar • 16 Oct 2026
AI Agent Memory Management: Cara Agent Mengingat Konteks Percakapan
Pelajari cara mengelola memori AI Agent agar bisa mengingat konteks percakapan sebelumnya. Teknik RAG dan vector database untuk agent yang lebih cerdas.

Masalah Memory pada AI Agent

Salah satu tantangan terbesar dalam membangun AI Agent adalah membuatnya 'ingat' konteks percakapan sebelumnya. Tanpa memory management yang baik, AI Agent akan seperti amnesia setiap kali user mulai percakapan baru. Dari pengalaman saya di beberapa proyek di Bandung, ini benar-benar masalah nyata yang harus diselesaikan.

LLM memiliki context window yang terbatas - meskipun sekarang model-model terbaru sudah support hingga 128K tokens, tetap saja tidak praktis untuk menyimpan seluruh history percakapan. Solusinya adalah memory management yang efektif.

Jenis-Jenis Memory pada AI Agent

Ada tiga jenis utama memory yang saya implementasikan:

type MemoryType int

const (
    ShortTerm  MemoryType = iota // Percakapan saat ini
    LongTerm                      // Fakta penting dari interaksi
    Episodic                      // Pengalaman spesifik kejadian
)

type MemoryStore struct {
    shortTerm  []Message           // In-memory, dibuang setelah session
    longTerm   *VectorDB          // Persistent storage
    episodic   map[string][]Event  // Per-user events
}

Implementasi Short-Term Memory

Short-term memory adalah yang paling sederhana. Kita cukup simpan beberapa message terakhir dalam context window. Triknya adalah melakukan summarization untuk message yang sudah tua:

func (m *MemoryManager) ManageShortTerm(messages []Message) []Message {
    if len(messages) <= m.maxMessages {
        return messages
    }
    
    // Summarize old messages
    oldMessages := messages[:len(messages)-m.maxMessages]
    summary := m.summarize(oldMessages)
    
    // Replace with summary + recent messages
    return append([]Message{{
        Role:    "system",
        Content: fmt.Sprintf("Ringkasan percakapan sebelumnya: %s", summary),
    }}, messages[len(messages)-m.maxMessages:]...)
}

Long-Term Memory dengan Vector Database

Untuk long-term memory, saya menggunakan vector database (biasanya Qdrant atau Chroma) untuk menyimpan informasi penting dari setiap interaksi. Setiap kali ada fakta baru yang disebutkan user, agent akan embed dan simpan ke vector DB. Saat user bertanya tentang sesuatu yang pernah dibahas, agent bisa retrieve konteks yang relevan menggunakan similarity search.

func (m *MemoryManager) StoreFact(ctx context.Context, fact string, userID string) error {
    embedding, err := m.embedder.Embed(ctx, fact)
    if err != nil {
        return err
    }
    
    return m.vectorDB.Upsert(ctx, Point{
        ID:     uuid.New(),
        Vector: embedding,
        Payload: map[string]interface{}{
            "fact":   fact,
            "user_id": userID,
            "timestamp": time.Now(),
        },
    })
}

Best Practices Memory Management

Dari beberapa proyek yang sudah saya handle, ada beberapa lessons learned yang berharga. Pertama, jangan simpan semua data - hanya simpan informasi yang benar-benar relevan. Kedua, implement expiry untuk memory yang sudah tidak relevan. Ketiga, selalu beri user kontrol untuk delete memory mereka. Privasi adalah hal yang sangat penting.

Dengan memory management yang tepat, AI Agent bisa menjadi assistant yang benar-benar personal dan helpful. Ini adalah salah satu aspek yang paling menarik dari AI Agent development menurut saya.

← More articles from Cecep Azhar Central Content Hub Home →