Skip to main content

Sistema modular de RAG (Retrieval Augmented Generation) para processamento de documentos e geração de respostas

Project description

🧠 RAG Core

Sistema modular de RAG (Retrieval Augmented Generation) desenvolvido para ser reutilizável e escalável, com suporte a múltiplos tenants e diferentes provedores de LLM.

🌟 Características

  • Arquitetura Event-Driven: Baseada em Kafka para processamento assíncrono
  • 🔄 Pipeline Modular: Extração → Embedding → Armazenamento → Recuperação → Geração
  • 🔌 Múltiplos Provedores: Suporte a diferentes LLMs (Gemini, OpenAI, Mistral, etc.)
  • 📊 Vector Store: Integração com Qdrant para busca semântica
  • 📦 MongoDB: Armazenamento de documentos e metadados
  • 🔐 Multi-tenant: Isolamento completo entre diferentes clientes
  • 📈 Observabilidade: OpenTelemetry para traces, métricas e logs

🚀 Começando

Pré-requisitos

  • Python 3.10+
  • Docker e Docker Compose
  • Make (opcional, mas recomendado)

Instalação

  1. Clone o repositório:
git clone https://github.com/seu-usuario/rag_core.git
cd rag_core
  1. Crie e ative um ambiente virtual:
python -m venv .venv
source .venv/bin/activate  # Linux/Mac
# ou
.venv\Scripts\activate  # Windows
  1. Instale as dependências:
pip install -r requirements.txt
  1. Copie o arquivo de exemplo de variáveis de ambiente:
cp .env.example .env
  1. Inicie os serviços com Docker Compose:
docker-compose up -d

🔧 Configuração

Edite o arquivo .env com suas configurações:

# Kafka
KAFKA_BOOTSTRAP_SERVERS=localhost:9092

# Qdrant
QDRANT_HOST=localhost
QDRANT_PORT=6333

# MongoDB
MONGODB_URI=mongodb://localhost:27017

# LLM Providers
GEMINI_API_KEY=sua_chave_aqui
OPENAI_API_KEY=sua_chave_aqui

📚 Como Usar

Uso Básico

from rag_core.core_orchestrator import CoreOrchestrator
from rag_core.events.event_bus import EventBus
from rag_core.events.event_types import DOCUMENT_UPLOADED, QUESTION_RECEIVED

# Inicializa o core
core = CoreOrchestrator()
core.start()

# Obtém instância do EventBus
event_bus = EventBus()

# Envia um documento
event_bus.emit(DOCUMENT_UPLOADED, {
    "tenant_id": "empresa_x",
    "session_id": "sessao_123",
    "file_path": "/caminho/para/documento.pdf",
    "file_type": "pdf"
})

# Faz uma pergunta
event_bus.emit(QUESTION_RECEIVED, {
    "tenant_id": "empresa_x",
    "session_id": "sessao_123",
    "question": "Qual é o procedimento para...?",
    "metadata": {
        "language": "pt-BR",
        "max_tokens": 500
    }
})

Usando como Dependência

Instale o pacote via pip:

pip install rag_core

Ou adicione ao seu requirements.txt:

rag_core @ git+https://github.com/seu-usuario/rag_core.git

🏗️ Arquitetura

O sistema é dividido em camadas:

  1. Extraction Layer: Extrai texto de diferentes tipos de documento
  2. Embedding Layer: Gera embeddings usando diferentes provedores
  3. Vector Store Layer: Armazena e recupera vetores
  4. Retrieval Layer: Realiza busca semântica
  5. Generation Layer: Gera respostas usando LLMs

🔄 Eventos

O sistema usa os seguintes eventos principais:

  • DOCUMENT_UPLOADED: Documento enviado para processamento
  • DOCUMENT_EXTRACTED: Texto extraído do documento
  • EMBEDDING_CREATED: Embedding gerado
  • VECTOR_STORED: Vetor armazenado no Qdrant
  • QUESTION_RECEIVED: Pergunta recebida
  • DOCUMENTS_RETRIEVED: Documentos relevantes recuperados
  • ANSWER_GENERATED: Resposta final gerada

🧪 Testes

Execute os testes com:

pytest

📝 Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

🤝 Contribuindo

  1. Faça o fork do projeto
  2. Crie sua feature branch (git checkout -b feature/AmazingFeature)
  3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
  4. Push para a branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

📞 Suporte

Para suporte, abra uma issue no GitHub ou entre em contato via [email].

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

veolia_rag_core-0.1.0.tar.gz (28.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

veolia_rag_core-0.1.0-py3-none-any.whl (4.1 kB view details)

Uploaded Python 3

File details

Details for the file veolia_rag_core-0.1.0.tar.gz.

File metadata

  • Download URL: veolia_rag_core-0.1.0.tar.gz
  • Upload date:
  • Size: 28.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for veolia_rag_core-0.1.0.tar.gz
Algorithm Hash digest
SHA256 bd8bc2783a1d2e28b2859d939cf1b0808d78dd957dc4eb1387584664c48da028
MD5 2dcf9284b5ad5514b67d191e1be25035
BLAKE2b-256 d81c52de4773ed8490f250c4926afd1c612041cc9b7a8ef75a76d4d8d31e97ac

See more details on using hashes here.

File details

Details for the file veolia_rag_core-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for veolia_rag_core-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0664d960041828ecb9bc8753b08215a177d8954f548fa03262d84d69083de242
MD5 3105656304b99d65342b35b9f56c9ec8
BLAKE2b-256 f01c9a4dc81c6e493e814b2e444091016b441e2898def3821f0df8936c584e2f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page