Skip to content

Latest commit

 

History

History
258 lines (202 loc) · 7.57 KB

File metadata and controls

258 lines (202 loc) · 7.57 KB

Memory System Refactoring - Summary

🎯 Objetivo Alcançado

Separação correta entre Chat Memory e Knowledge Memory

O sistema de memória foi completamente refatorado para separar dois conceitos que estavam misturados:

  1. Chat Memory - Histórico conversacional (sequencial, SQL-based)
  2. Knowledge Memory - RAG/Busca semântica (vetorial, embedding-based)

📊 O Que Foi Feito

1. Nova Estrutura de Diretórios

react_agent_framework/core/memory/
├── chat/                        # NOVO: Chat Memory
│   ├── __init__.py
│   ├── base.py                  # BaseChatMemory interface
│   ├── simple.py                # SimpleChatMemory
│   └── sqlite.py                # SQLiteChatMemory (NOVO!)
│
├── knowledge/                   # NOVO: Knowledge Memory
│   ├── __init__.py
│   ├── base.py                  # BaseKnowledgeMemory interface
│   ├── chroma.py                # ChromaKnowledgeMemory (refatorado)
│   └── faiss.py                 # FAISSKnowledgeMemory (refatorado)
│
├── adapters.py                  # NOVO: Backward compatibility
├── __init__.py                  # Atualizado com novos imports
├── base.py                      # Legacy (mantido)
├── simple.py                    # Legacy (mantido)
├── chroma.py                    # Legacy (mantido)
└── faiss.py                     # Legacy (mantido)

2. Novos Arquivos Criados

Chat Memory

  • chat/base.py - Interface BaseChatMemory e classe ChatMessage
  • chat/simple.py - SimpleChatMemory (in-memory buffer)
  • chat/sqlite.py - SQLiteChatMemory (persistent SQL) NOVO!
  • chat/__init__.py - Exports

Knowledge Memory

  • knowledge/base.py - Interface BaseKnowledgeMemory e classe KnowledgeDocument
  • knowledge/chroma.py - ChromaKnowledgeMemory (refatorado para RAG)
  • knowledge/faiss.py - FAISSKnowledgeMemory (refatorado para RAG)
  • knowledge/__init__.py - Exports

Compatibilidade

  • adapters.py - LegacyMemoryAdapter e ChatToLegacyAdapter
  • __init__.py - Atualizado com imports legacy e novos

3. Arquivos Atualizados

  • pyproject.toml - Versão 0.10.0 + novas dependências opcionais
  • CHANGELOG.md - Entrada completa para v0.10.0
  • CLAUDE.md - Versão atualizada para 0.10.0

4. Documentação

  • MIGRATION_GUIDE.md - Guia completo de migração
  • REFACTORING_SUMMARY.md - Este arquivo (sumário da refatoração)

🔑 Conceitos Separados

Chat Memory (Conversation History)

  • Propósito: Armazenar histórico de conversação sequencial
  • Armazenamento: SQLite, in-memory
  • Busca: Cronológica + keyword matching
  • Classes:
    • SimpleChatMemory - Buffer em memória
    • SQLiteChatMemory - Banco SQLite persistente
  • Use quando: Precisa manter contexto de conversação

Knowledge Memory (RAG)

  • Propósito: Armazenar documentos para busca semântica
  • Armazenamento: Vector databases (ChromaDB, FAISS)
  • Busca: Similarity search com embeddings
  • Classes:
    • ChromaKnowledgeMemory - ChromaDB vector DB
    • FAISSKnowledgeMemory - FAISS high-performance
  • Use quando: Precisa fazer RAG ou busca de documentos

📦 Dependências Opcionais (pyproject.toml)

Chat Memory

chat-sqlite = []  # Stdlib, sem dependências
chat-postgres = ["psycopg2-binary>=2.9.0"]
all-chat = ["psycopg2-binary>=2.9.0"]

Knowledge Memory

knowledge-chroma = ["chromadb>=0.4.0"]
knowledge-faiss = ["faiss-cpu>=1.7.4", "numpy>=1.24.0"]
all-knowledge = ["chromadb>=0.4.0", "faiss-cpu>=1.7.4", "numpy>=1.24.0"]

Legacy (mantido para compatibilidade)

memory-chroma = ["chromadb>=0.4.0"]
memory-faiss = ["faiss-cpu>=1.7.4", "numpy>=1.24.0"]
all-memory = [...]  # Inclui tudo

🔄 Compatibilidade Retroativa

✅ Código antigo continua funcionando!

Implementamos adapters para garantir compatibilidade:

# Código v0.9.x (ainda funciona)
from react_agent_framework.core.memory import SimpleMemory
agent = ReactAgent(memory=SimpleMemory())

# Código v0.10.0 (recomendado)
from react_agent_framework.core.memory.chat import SimpleChatMemory
agent = ReactAgent(chat_memory=SimpleChatMemory())

🚀 Novas Funcionalidades

1. SQLiteChatMemory (NOVO!)

  • ✅ Persistência sem dependências externas
  • ✅ Multi-sessão
  • ✅ Queries SQL flexíveis
  • ✅ Busca por palavra-chave

2. API Separada e Clara

  • BaseChatMemory - Interface para chat
  • BaseKnowledgeMemory - Interface para RAG
  • ✅ Métodos específicos para cada propósito

3. Melhor Organização

  • ✅ Código mais limpo
  • ✅ Separação de conceitos
  • ✅ Fácil de entender e manter

📈 Benefícios

  1. Clareza Conceitual

    • Chat Memory para conversação
    • Knowledge Memory para RAG
    • Não há mais confusão!
  2. Performance

    • SQLite otimizado para histórico
    • Vector DBs otimizados para busca semântica
    • Cada ferramenta para seu propósito
  3. Flexibilidade

    • Use só chat memory
    • Use só knowledge memory
    • Use ambos juntos!
  4. Manutenibilidade

    • Código bem organizado
    • Fácil adicionar novos backends
    • Interfaces claras

🔨 Próximos Passos (Futuro)

Chat Memory

  • PostgresChatMemory (PostgreSQL backend)
  • RedisChatMemory (Redis backend)
  • Compressão de histórico antigo

Knowledge Memory

  • PineconeKnowledgeMemory
  • WeaviateKnowledgeMemory
  • QdrantKnowledgeMemory

Features Gerais

  • Testes unitários para novos componentes
  • Documentação detalhada de cada backend
  • Benchmarks de performance
  • Exemplos avançados de uso combinado

📝 Como Usar

Chat Memory Simples

from react_agent_framework import ReactAgent
from react_agent_framework.core.memory.chat import SimpleChatMemory

agent = ReactAgent(
    name="Chatbot",
    chat_memory=SimpleChatMemory(max_messages=100)
)

Chat Memory Persistente (SQLite)

from react_agent_framework.core.memory.chat import SQLiteChatMemory

agent = ReactAgent(
    name="Chatbot",
    chat_memory=SQLiteChatMemory(
        db_path="./conversations.db",
        session_id="user_123"
    )
)

RAG com Knowledge Memory

from react_agent_framework.core.memory.knowledge import ChromaKnowledgeMemory

knowledge = ChromaKnowledgeMemory("./knowledge_base")
knowledge.add_document("Python é uma linguagem de programação")

results = knowledge.search("linguagens", top_k=3)

Combinado (Chat + Knowledge)

from react_agent_framework import ReactAgent
from react_agent_framework.core.memory.chat import SQLiteChatMemory
from react_agent_framework.core.memory.knowledge import FAISSKnowledgeMemory

agent = ReactAgent(
    name="Assistant",
    chat_memory=SQLiteChatMemory("./chat.db"),
    knowledge_memory=FAISSKnowledgeMemory("./kb")
)

✅ Checklist de Conclusão

  • Criar interfaces base (Chat e Knowledge)
  • Implementar SQLiteChatMemory
  • Refatorar ChromaMemory para Knowledge
  • Refatorar FAISSMemory para Knowledge
  • Criar SimpleChatMemory
  • Criar adapters de compatibilidade
  • Atualizar init.py
  • Atualizar pyproject.toml
  • Atualizar CHANGELOG.md
  • Atualizar CLAUDE.md
  • Criar MIGRATION_GUIDE.md
  • Criar REFACTORING_SUMMARY.md

📚 Referências


Versão: 0.10.0 Data: 2025-01-10 Status: ✅ Concluído