Cria rag/ (schema, busca híbrida densa+lexical com RRF em search.py/ search_gart.sh, SETUP.md) — o projeto já tinha admin/update_rag.py para indexar, mas nenhuma forma de consultar o índice. Corrige admin/update_rag.py: um chunk denso em tokens (code/fcpxml/font_metrics.py) estourava o contexto do modelo de embedding e derrubava a transação inteira; agora só aquele chunk é pulado. Banco rag_gart provisionado no rag-hub-db compartilhado e primeira indexação completa rodada (304 arquivos, 1702 chunks). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
4.1 KiB
RAG deste projeto (G-ART)
Banco de RAG próprio do G-ART — usado só para a IA indexar código/documentação e responder consultas gastando menos tokens, sem precisar reler o repositório inteiro a cada tarefa. Não é o banco de dados do sistema: é infraestrutura de apoio ao desenvolvimento, mantida à parte da aplicação.
Segue o mesmo padrão dos projetos irmãos (Doza, Tigre, Jhonny): um único
container Postgres + pgvector compartilhado (rag-hub-db) na VPS da
equipe, e um banco por sistema dentro dele.
rag-hub-db (container único na VPS)
├── rag_doza ← banco do Doza
├── rag_tigre ← banco do Tigre
├── jhonny-rag ← banco do Jhonny
└── rag_gart ← banco deste projeto
Divisão de responsabilidades neste projeto
Diferente dos projetos irmãos, aqui a indexação já existia antes desta
pasta e mora em admin/, não em rag/:
- Indexação —
admin/update_rag.py, chamado poradmin/update_rag.command(túnel SSH + execução) e poradmin/run.command(roda junto com o app). VarreINCLUDE_EXTENSIONS(.command .md .py .sh .sql .swift .txt .yml .yaml) a partir da raiz do projeto, corta por janela de linhas (CHUNK_LINES), grava embeddings via Ollama e é incremental (hash por arquivo emgart.indexed_files). - Schema —
schema.sqlnesta pasta: é o queadmin/update_rag.pyespera encontrar (gart.code_chunks,gart.file_index,gart.indexed_files). Rodar uma vez para provisionar um banco novo. - Busca —
search.pye o wrappersearch_gart.shnesta pasta: é o que os projetos irmãos chamam desearch_<projeto>.sh. Não existia ainda para o G-ART. - Credenciais — reaproveitadas de
admin/gart-rag.env(mesmo arquivo queadmin/update_rag.commandjá usa), para não duplicar a senha em dois lugares. Veradmin/gart-rag.env.examplepara o formato.
Como a busca funciona
Duas listas em paralelo, fundidas com RRF ponderado (parâmetros herdados dos
projetos irmãos, calibrados lá via rag/bench.py sobre consultas douradas):
- densa — embedding do trecho de código/texto;
- lexical —
pg_trgmsobre os símbolos declarados (nomes de classe/função extraídos por regex emadmin/update_rag.py), para consultas que citam o nome exato de algo; - resumo (
file_index.summary_embedding) — hoje não é preenchido poradmin/update_rag.py(só gravasummaryem texto, sem embedding), então essa lista fica vazia até alguém adicionar isso ao indexador. A busca funciona normalmente sem ela.
Cada trecho guarda start_line/end_line, então o resultado aponta a janela
exata (code/fcpxml/writer/modifier.py:120-180) em vez de mandar ler o
arquivo inteiro.
Modos de saída
| Comando | O que traz |
|---|---|
rag/search_gart.sh "consulta" |
caminho, faixa de linhas e uma linha de descrição (padrão) |
… --snippet |
+ 300 chars do trecho |
… --full |
+ o trecho inteiro |
… --json |
saída estruturada |
… --module X / --path Y / --ext .py |
restringe o escopo |
… --map [termo] |
inventário de arquivos, sem nenhum código |
Arquivos desta pasta
README.md— este arquivo.SETUP.md— passo a passo para provisionar o bancorag_gartna primeira vez.schema.sql— schema do G-ART (extensões, tabelas, índices). Estado FINAL desejado: num banco novo basta rodá-lo.embed.py— chamada ao Ollama compartilhada entre indexador e busca (só os prefixossearch_document:/search_query:do nomic-embed-text).search.py/search_gart.sh— busca híbrida e seu wrapper.ensure_tunnel.sh— abre o túnel SSH atérag-hub-dbse ainda não estiver aberto (idempotente).
Onde ficam as credenciais reais
Nunca nesta pasta. Credenciais de indexação (usuário/senha do Postgres) ficam
em admin/gart-rag.env (fora do git). Acesso SSH à VPS e senha do usuário
admin do rag-hub-db ficam documentados no VPS-ACCESS.md de outro projeto
da equipe que já usa a mesma VPS — peça a quem provisionou o banco.