Editoras, gravadoras independentes e plataformas de streaming perdem milhões de dólares em royalties não distribuídos porque os metadados das faixas não batem com os contratos ou com as exigências dos órgãos de controle. Auditar isso manualmente demanda dezenas de horas.
O backend usa UV com Python 3.12 para manter compatibilidade com as dependências de IA:
uv sync --project backend --dev --python 3.12
uv run --project backend uvicorn app.main:app --reloadAbra http://127.0.0.1:8000/docs para a API. O frontend Vue fica em frontend/ e usa o proxy Vite para encaminhar /api ao backend:
cd frontend
npm.cmd install
npm.cmd run devO frontend requer Node.js LTS. Em PowerShell, use npm.cmd caso a política de execução bloqueie npm.ps1.
As bibliotecas CrewAI, LangChain e ChromaDB estão disponíveis na extra opcional ai. Algumas versões exigem compiladores nativos no Windows:
uv sync --project backend --extra ai --dev --python 3.12Para validar o MVP do backend:
uv run --project backend pytestO VeriSound inclui integração RAG opcional usando Chroma (ChromaDB). Por padrão o projeto cria um vectorstore local em backend/.chroma. Para usar Chroma Cloud em vez do armazenamento local, defina as variáveis no .env da raiz:
AI_ENABLED=true
OPENROUTER_API_KEY=seu_openrouter_api_key
OPENROUTER_MODEL=openai/gpt-4o-mini
OPENROUTER_BASE_URL=https://openrouter.ai/api/v1
CHROMA_HOST=api.trychroma.com
CHROMA_API_KEY=seu_chroma_api_key
CHROMA_TENANT=seu_chroma_tenant
CHROMA_DATABASE=VeriSound
Com essas variáveis o backend tentará usar o SDK Chroma Cloud (recomendado). Se o SDK não estiver instalado ou as variáveis não estiverem presentes, o sistema faz fallback para o Chroma local (diretório backend/.chroma).
Como o backend cria/atualiza coleções
- Ao executar
POST /api/auditscomuse_ai=truee comAI_ENABLED=true, o serviço:- Chunka o texto do contrato (por padrão chunk_size=800, overlap=120).
- Gera embeddings por chunk (modelo configurado em OPENROUTER_MODEL / embeddings model configurável).
- Persiste os chunks como documentos na coleção Chroma (cloud ou local).
Monitoramento e controle de custos — recomendações práticas
- Entenda a métrica que custa: embeddings por chunk. Cada chunk gera 1 embedding. Estime:
embeddings ≈ sum(ceil(len(document)/chunk_size)). - Preferir chunk_size maior reduz número de embeddings, mas reduz precisão do RAG. Ajuste entre 400–1200 dependendo do contrato médio.
- Batch embeddings quando possível (SDK/cliente permite batch) — reduz latência e pode ser mais econômico.
- Escolha de modelo de embeddings impacta custo: modelos maiores (mais custosos) melhoram qualidade, mas nem sempre são necessários para contratos curtos.
- Use deduplicação por metadata (GroupBy) para evitar múltiplos chunks da mesma seção aparecerem repetidos nas respostas.
- Defina retenção e políticas de limpeza: arquivos antigos podem ser removidos ou exportados para arquivamento offline.
- Use ambientes separados (staging/prod) e coleções por tenant (CHROMA_TENANT/CHROMA_DATABASE) para controlar uso e auditing.
- Configure alertas de uso no painel Chroma Cloud (billing/usage) e limite de quota quando disponível.
- Para documentos muito longos: dividir por seções (line-based chunking) e incluir
source_id+chunk_indexno metadata para GroupBy e dedupe.
Comandos rápidos de verificação
- Testar o health da API (backend):
Invoke-RestMethod http://127.0.0.1:8000/health- Executar auditoria e acionar a indexação (use_ai checkbox no frontend ou
use_ai=trueno form-data):
curl -X POST http://127.0.0.1:8000/api/audits -F "contract=@contrato.txt" -F "catalog=@catalogo.csv" -F "use_ai=true"- Verificar se o diretório local foi criado (fallback):
Test-Path .\backend\.chroma
Get-ChildItem -Recurse .\backend\.chromaMigração local → Chroma Cloud (visão geral)
- Criar credenciais CHROMA_* no
.env(CHROMA_HOST, CHROMA_API_KEY, CHROMA_TENANT, CHROMA_DATABASE). - Rodar um script de migração que: abre o vectorstore local, lê documentos/chunks e faz
upsertna coleção Cloud via SDK, preservando metadados (source_id, chunk_index). - Verificar contagem de vetores na cloud e testar buscas. Remover local ou mantê-lo como backup.
Observações finais
- O Chroma Cloud oferece funcionalidades extras (sparse vectors, RRF, GroupBy, schemas) — para projetos de produção, ajuste a schema e use hybrid search.
- Se precisar, eu posso gerar o script de migração automático e uma rotina de verificação pós-migração (ver passo 1 no plano posterior).
A auditoria recebe dois arquivos obrigatórios pelo endpoint POST /api/audits:
-
Contrato de direitos
- Formatos aceitos:
.pdfou.txt. - Deve conter as faixas, compositores e respectivos splits.
- Formato textual esperado:
Aurora | Ana Silva, Bruno Lima | split: 100% Maré: Carla Souza | split: 80% - Formatos aceitos:
-
Catálogo musical
- Formato aceito: .csv.
- Pode usar vírgula ou ponto e vírgula como separador.
- Deve conter uma coluna de título, com um destes nomes: title, titulo, track ou faixa.
- Pode conter também: isrc, composers, compositores, writers ou autores