✅ Separação correta entre Chat Memory e Knowledge Memory
O sistema de memória foi completamente refatorado para separar dois conceitos que estavam misturados:
- Chat Memory - Histórico conversacional (sequencial, SQL-based)
- Knowledge Memory - RAG/Busca semântica (vetorial, embedding-based)
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)
- ✅
chat/base.py- InterfaceBaseChatMemorye classeChatMessage - ✅
chat/simple.py-SimpleChatMemory(in-memory buffer) - ✅
chat/sqlite.py-SQLiteChatMemory(persistent SQL) NOVO! - ✅
chat/__init__.py- Exports
- ✅
knowledge/base.py- InterfaceBaseKnowledgeMemorye classeKnowledgeDocument - ✅
knowledge/chroma.py-ChromaKnowledgeMemory(refatorado para RAG) - ✅
knowledge/faiss.py-FAISSKnowledgeMemory(refatorado para RAG) - ✅
knowledge/__init__.py- Exports
- ✅
adapters.py-LegacyMemoryAdaptereChatToLegacyAdapter - ✅
__init__.py- Atualizado com imports legacy e novos
- ✅
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
- ✅
MIGRATION_GUIDE.md- Guia completo de migração - ✅
REFACTORING_SUMMARY.md- Este arquivo (sumário da refatoração)
- Propósito: Armazenar histórico de conversação sequencial
- Armazenamento: SQLite, in-memory
- Busca: Cronológica + keyword matching
- Classes:
SimpleChatMemory- Buffer em memóriaSQLiteChatMemory- Banco SQLite persistente
- Use quando: Precisa manter contexto de conversação
- Propósito: Armazenar documentos para busca semântica
- Armazenamento: Vector databases (ChromaDB, FAISS)
- Busca: Similarity search com embeddings
- Classes:
ChromaKnowledgeMemory- ChromaDB vector DBFAISSKnowledgeMemory- FAISS high-performance
- Use quando: Precisa fazer RAG ou busca de documentos
chat-sqlite = [] # Stdlib, sem dependências
chat-postgres = ["psycopg2-binary>=2.9.0"]
all-chat = ["psycopg2-binary>=2.9.0"]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"]memory-chroma = ["chromadb>=0.4.0"]
memory-faiss = ["faiss-cpu>=1.7.4", "numpy>=1.24.0"]
all-memory = [...] # Inclui tudo✅ 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())- ✅ Persistência sem dependências externas
- ✅ Multi-sessão
- ✅ Queries SQL flexíveis
- ✅ Busca por palavra-chave
- ✅
BaseChatMemory- Interface para chat - ✅
BaseKnowledgeMemory- Interface para RAG - ✅ Métodos específicos para cada propósito
- ✅ Código mais limpo
- ✅ Separação de conceitos
- ✅ Fácil de entender e manter
-
Clareza Conceitual
- Chat Memory para conversação
- Knowledge Memory para RAG
- Não há mais confusão!
-
Performance
- SQLite otimizado para histórico
- Vector DBs otimizados para busca semântica
- Cada ferramenta para seu propósito
-
Flexibilidade
- Use só chat memory
- Use só knowledge memory
- Use ambos juntos!
-
Manutenibilidade
- Código bem organizado
- Fácil adicionar novos backends
- Interfaces claras
- PostgresChatMemory (PostgreSQL backend)
- RedisChatMemory (Redis backend)
- Compressão de histórico antigo
- PineconeKnowledgeMemory
- WeaviateKnowledgeMemory
- QdrantKnowledgeMemory
- Testes unitários para novos componentes
- Documentação detalhada de cada backend
- Benchmarks de performance
- Exemplos avançados de uso combinado
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)
)from react_agent_framework.core.memory.chat import SQLiteChatMemory
agent = ReactAgent(
name="Chatbot",
chat_memory=SQLiteChatMemory(
db_path="./conversations.db",
session_id="user_123"
)
)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)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")
)- 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
- MIGRATION_GUIDE.md - Guia de migração
- CHANGELOG.md - Histórico de mudanças
- CLAUDE.md - Informações do projeto
Versão: 0.10.0 Data: 2025-01-10 Status: ✅ Concluído