Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,9 @@ wheels/
# Coverage
.coverage
.coverage.*
coverage.xml
htmlcov/
.pytest_cache/

# Others
.ruff_cache/
7 changes: 7 additions & 0 deletions .qlty/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
*
!configs
!configs/**
!hooks
!hooks/**
!qlty.toml
!.gitignore
8 changes: 8 additions & 0 deletions .qlty/configs/.yamllint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
rules:
document-start: disable
quoted-strings:
required: only-when-needed
extra-allowed: ["{|}"]
key-duplicates: {}
octal-values:
forbid-implicit-octal: true
101 changes: 101 additions & 0 deletions .qlty/qlty.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
# This file was automatically generated by `qlty init`.
# You can modify it to suit your needs.
# We recommend you to commit this file to your repository.
#
# This configuration is used by both Qlty CLI and Qlty Cloud.
#
# Qlty CLI -- Code quality toolkit for developers
# Qlty Cloud -- Fully automated Code Health Platform
#
# Try Qlty Cloud: https://qlty.sh
#
# For a guide to configuration, visit https://qlty.sh/d/config
# Or for a full reference, visit https://qlty.sh/d/qlty-toml
config_version = "0"

exclude_patterns = [
"*_min.*",
"*-min.*",
"*.min.*",
"**/.yarn/**",
"**/*.d.ts",
"**/assets/**",
"**/bower_components/**",
"**/build/**",
"**/cache/**",
"**/config/**",
"**/db/**",
"**/deps/**",
"**/dist/**",
"**/extern/**",
"**/external/**",
"**/generated/**",
"**/Godeps/**",
"**/gradlew/**",
"**/mvnw/**",
"**/node_modules/**",
"**/protos/**",
"**/seed/**",
"**/target/**",
"**/templates/**",
"**/testdata/**",
"**/vendor/**",
]

test_patterns = [
"**/test/**",
"**/spec/**",
"**/*.test.*",
"**/*.spec.*",
"**/*_test.*",
"**/*_spec.*",
"**/test_*.*",
"**/spec_*.*",
]

[smells]
mode = "comment"

[[source]]
name = "default"
default = true


[[plugin]]
name = "actionlint"

[[plugin]]
name = "bandit"

[[plugin]]
name = "checkov"

[[plugin]]
name = "markdownlint"
mode = "comment"

[[plugin]]
name = "prettier"

[[plugin]]
name = "radarlint-python"
mode = "comment"

[[plugin]]
name = "ripgrep"
mode = "comment"

[[plugin]]
name = "ruff"

[[plugin]]
name = "trivy"
drivers = [
"config",
]

[[plugin]]
name = "trufflehog"

[[plugin]]
name = "yamllint"
118 changes: 118 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,124 @@ Todas as mudanças notáveis neste projeto serão documentadas neste arquivo.
O formato é baseado em [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
e este projeto adere ao [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.2.0] - 2024-12-29

### 🚀 Major Refactoring & Architecture Improvements

Esta versão representa uma refatoração significativa da arquitetura da biblioteca, com foco em modularização, robustez e manutenibilidade.

### ✨ Mudanças

#### Nova Arquitetura Modular

- **Configurações Centralizadas**: Sistema de configuração tipo-seguro com dataclasses
- `ChunkingConfig`: Configuração para estratégias de chunking
- `TextProcessingConfig`: Configuração para processamento de texto
- `LoaderConfig`: Configuração para loaders de documentos
- `EmbeddingConfig` e `VectorStoreConfig`: Configurações futuras
- `ConfigPresets`: Presets predefinidos para casos de uso comuns

#### Estratégias de Chunking (Pattern Strategy)

- **`ChunkingStrategy`**: Interface abstrata para estratégias de chunking
- **`SeparatorChunkingStrategy`**: Chunking baseado em separadores preferenciais
- **`CharacterChunkingStrategy`**: Chunking baseado em contagem de caracteres
- **`TextChunker`**: Classe principal que unifica as estratégias
- Algoritmos melhorados de detecção de quebras naturais
- Cálculo otimizado de sobreposição entre chunks

#### Módulos Especializados

- **`EncodingDetector`**: Detecção inteligente de encoding de arquivos
- **`FileTypeDetector`**: Detecção de tipos de arquivo baseada em extensão e MIME type
- **`DocumentMetadataManager`**: Gestão centralizada de metadados de documentos
- **`LoaderFactory`**: Factory pattern para criação de loaders apropriados
- **`TextProcessor`**: Processador avançado de texto com configurações personalizáveis

#### Constantes Centralizadas

- Mapeamentos abrangentes de extensões de arquivo para tipos
- Suporte expandido para linguagens de programação
- Categorizações de arquivos (code, document, data, config)
- Mapeamentos de MIME types

### 🔧 Correções

#### Correções Críticas no Chunking

- **Corrigida lógica de sobreposição**: Chunks não geram mais sobreposições excessivas
- **Corrigida detecção de quebras de sentença**: Prioriza quebras naturais adequadamente
- **Eliminados chunks minúsculos**: Filtros inteligentes para evitar chunks inválidos
- **Corrigido cálculo do próximo início**: Evita loops infinitos e garante progresso

#### Melhorias nos Loaders

- **Detecção robusta de encoding**: Fallback inteligente com múltiplas estratégias
- **Tratamento de erros aprimorado**: Loaders não falham com arquivos problemáticos
- **Metadados enriquecidos**: Informações mais detalhadas sobre arquivos carregados

#### Refatoração da API

- **Compatibilidade mantida**: APIs antigas continuam funcionando
- **Funções de conveniência**: `chunk_text()`, `clean_text()`, etc. usam nova arquitetura
- **TextProcessor legado**: Reimplementado usando novos componentes internamente

#### Estrutura de Diretórios

```text
lambda_rag_lite/
├── config.py # Configurações centralizadas
├── constants.py # Constantes e mapeamentos
├── text_cleaning.py # Funções de limpeza de texto
├── factories.py # Factory patterns
├── detectors/ # Detectores especializados
│ ├── encoding.py
│ └── file_type.py
├── metadata/ # Gestão de metadados
│ └── document_metadata.py
├── processors/ # Processadores de texto
│ └── text_processor.py
└── strategies/ # Estratégias de chunking
└── chunking.py
```

#### Performance e Robustez

- **Algoritmos otimizados**: Chunking mais eficiente e preciso
- **Tratamento de erros**: Recuperação graceful de falhas
- **Validação de entrada**: Validações robustas em todas as operações

#### Metadados e Análise

- **Metadados enriquecidos**: Informações detalhadas sobre arquivos e chunks
- **Estatísticas de texto**: Análise aprofundada do conteúdo
- **Detecção de tipo**: Classificação inteligente de arquivos

### 🔄 Deprecated

- Nenhuma funcionalidade foi depreciada nesta versão
- APIs antigas mantêm compatibilidade total

### 🚨 Migration Guide

Esta versão mantém total compatibilidade com a API anterior. Nenhuma mudança é necessária no código existente.

**Recomendações para novos projetos:**

```python
from lambda_rag_lite import (
ChunkingConfig, TextChunker, TextProcessor as NewTextProcessor,
EncodingDetector, ConfigPresets
)

# Use as novas classes para maior flexibilidade
config = ConfigPresets.large_documents()
chunker = TextChunker()
chunks = chunker.chunk(text, config)
```

---

## [0.1.0] - 2024-12-26

### Added
Expand Down
Loading