INDEX_ALL e um motor universal de ingestao, estruturacao, indexacao, busca e sumarizacao de arquivos. O objetivo do projeto e transformar arquivos heterogeneos em artefatos padronizados, pesquisaveis e prontos para uso por humanos e por IA.
O projeto nasce como um nucleo generico para processar documentos e dados diversos, sem ficar preso a um unico dominio. A especializacao tributaria, judicial, contabil ou societaria entra por cima do core, sem contaminar a base.
Formatos suportados hoje:
- DOCX
- XLSX
- PNG
- JPG/JPEG
- TIFF/TIF
- BMP
- WEBP
- XML
- HTML
- CSV
- TXT
- OFX
Para cada arquivo processado, o INDEX_ALL gera:
metadata.jsoncontent.jsonindex.jsonai_context.jsonai_context.mdsummary.mdreport.html
Quando a entrada e uma pasta, o INDEX_ALL tambem pode gerar artefatos de colecao:
catalog.jsonmaster_index.jsoncollection_metadata.jsoncollection_summary.mdcollection_report.htmlsearch_index.jsonchunks.jsonembeddings_index.jsonretrieval_preview.jsonquery_results.jsonanswer_results.jsonanswer_results.md
Esses artefatos formam a base para:
- navegacao rapida do conteudo
- busca textual e retrieval hibrido local
- pipelines de RAG com grounding
- motores especialistas por dominio
O sistema esta organizado em camadas:
-
Ingestao
Detecta o tipo do arquivo e roteia para o parser correto. -
Estruturacao
Extrai conteudo, metadados, blocos e referencias navegaveis. -
Indexacao e sumarizacao
Gera indice estrutural, payloads AI-ready e resumo executivo. -
Semantica
Gerasearch_index,chunks, embeddings locais,retrieval_preview,query_resultseanswer_results. -
Saida
Serializa os resultados em JSON, Markdown e HTML.
INDEX_ALL
|
|-- README.md
|-- AI_CONTEXT.md
|-- ARCHITECTURE.md
|-- ROADMAP.md
|-- PROMPTS.md
|-- requirements.txt
|-- pyproject.toml
|
|-- data
| |-- raw
| |-- processed
| `-- samples
|
|-- docs
| |-- PRD_MVP.md
| |-- MANUTENCAO.md
| |-- SCHEMA_UNIVERSAL.json
| |-- decisions
| | `-- README.md
| |-- diagrams
| | `-- README.md
| `-- specs
| `-- README.md
|
|-- scripts
| |-- New-Batch.ps1
| |-- Processar-Lote-Atual.ps1
| |-- Run-Batch.ps1
| `-- Query-Collection.ps1
|
|-- src
| `-- index_all
| |-- cli.py
| |-- config.py
| |-- main.py
| |-- ingestion
| |-- parsers
| |-- indexing
| |-- semantics
| |-- outputs
| `-- utils
|
|-- tests
`-- .github
`-- workflows
O comando principal do projeto agora e:
index-all
O modo antigo continua compativel:
python -m index_all.main
Os scripts .ps1 continuam disponiveis como wrappers de conveniencia para lote e consulta.
Crie e ative o ambiente virtual:
cd C:\AI_PROJECTS\INDEX_ALL
python -m venv .venv
.venv\Scripts\Activate.ps1cd /c/AI_PROJECTS/INDEX_ALL
python -m venv .venv
source .venv/bin/activateInstale as dependencias e o pacote em modo editavel:
python -m pip install --upgrade pip setuptools wheel
pip install -r requirements.txt
pip install -e .Verifique a interface:
index-all --help
python -m index_all.main --helpO projeto processa imagens com OCR para:
pngjpgjpegtiftiffbmpwebp
Estrategia de OCR:
Azure AI Vision READquando configuradoRapidOCRcomo fallback localTesseractcomo fallback adicional
Configuracao opcional por variaveis de ambiente:
$env:INDEX_ALL_OCR_PROVIDER="auto"
$env:INDEX_ALL_OCR_LANGUAGE="pt,en"
$env:INDEX_ALL_AZURE_VISION_ENDPOINT="https://<seu-recurso>.cognitiveservices.azure.com/"
$env:INDEX_ALL_AZURE_VISION_KEY="<sua-chave>"Se quiser forcar um motor especifico:
$env:INDEX_ALL_OCR_PROVIDER="azure_vision"ou
$env:INDEX_ALL_OCR_PROVIDER="rapidocr"ou
$env:INDEX_ALL_OCR_PROVIDER="tesseract"
$env:INDEX_ALL_TESSERACT_CMD="C:\Program Files\Tesseract-OCR\tesseract.exe"Configuracao opcional para completar o fluxo de RAG com resposta gerada:
$env:INDEX_ALL_AZURE_OPENAI_ENDPOINT="https://<seu-recurso>.openai.azure.com/"
$env:INDEX_ALL_AZURE_OPENAI_API_KEY="<sua-chave>"
$env:INDEX_ALL_AZURE_OPENAI_DEPLOYMENT="<seu-deployment>"Tambem sao aceitos os fallbacks:
AZURE_OPENAI_ENDPOINTAZURE_OPENAI_API_KEYAZURE_OPENAI_DEPLOYMENT
Execute sobre um arquivo ou pasta:
index-all "C:\AI_PROJECTS\INDEX_ALL\data\samples"Ou, se preferir, mantenha a compatibilidade com:
python -m index_all.main "C:\AI_PROJECTS\INDEX_ALL\data\samples"Se voce quer copiar os arquivos e rodar um unico comando, use a pasta fixa:
data\raw\entrada_atual
Fluxo:
- Copie para
data\raw\entrada_atualsomente os arquivos do lote atual. - Rode:
.\scripts\Processar-Lote-Atual.ps1 -Name clientes_marcoO script:
- cria um lote com timestamp dentro de
data\raw - move os arquivos de
entrada_atualpara esse lote - processa o lote em
data\processed - deixa
entrada_atualvazia e pronta para o proximo uso
Exemplo de resultado:
data\raw\entrada_atual
data\raw\2026-03-15_201500_clientes_marco
data\processed\2026-03-15_201500_clientes_marco_collection
Para manter rastreabilidade, evitar mistura entre execucoes e permitir consultas futuras,
o fluxo recomendado e criar uma pasta nova para cada lote dentro de data\raw.
- Crie um lote novo:
.\scripts\New-Batch.ps1 -Name clientes_marco-
Copie para essa pasta os arquivos que pertencem somente a esse lote.
-
Processe o lote com embeddings locais:
.\scripts\Run-Batch.ps1 -BatchName 2026-03-15_101500_clientes_marco- Consulte a colecao depois, sem reprocessar:
.\scripts\Query-Collection.ps1 -CollectionName 2026-03-15_101500_clientes_marco_collection -Query "nota cancelada"- Gere uma resposta grounded com Azure OpenAI:
.\scripts\Query-Collection.ps1 `
-CollectionName 2026-03-15_101500_clientes_marco_collection `
-Query "quais dispositivos tratam do IBS?" `
-Answer `
-RankingProfile legal- Rode a CLI diretamente, se preferir:
index-all .\data\processed\2026-03-15_101500_clientes_marco_collection `
--query "quais regras de legalidade aparecem no documento?" `
--answer `
--ranking-profile legal `
--limit 6Observacoes:
Run-Batch.ps1usa--build-embeddingspor padrao. Use-NoEmbeddingsse quiser somente busca textual.Run-Batch.ps1sem-BatchNamepega o lote mais recente emdata\raw.Query-Collection.ps1sem-CollectionNameconsulta a colecao mais recente emdata\processed.Query-Collection.ps1eRun-Batch.ps1resolvem Python em.venv\Scripts\python.exe, depois.venv/bin/python, e por fimpythonno PATH.index-alle a interface principal; os scripts.ps1sao wrappers de conveniencia.- A saida continua na mesma raiz
data\processed, mas organizada por lote, preservando historico.
- nucleo generico primeiro
- especializacoes depois
- schema universal de saida
- rastreabilidade do conteudo original
- simplicidade no MVP
- expansao preparada para IA e RAG