Files
gart/rag/SETUP.md
João HenriqueandClaude Sonnet 5 e9a17c1b62 feat(rag): provisiona busca RAG do G-ART e corrige indexação que abortava em chunk grande
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>
2026-09-23 09:38:46 -04:00

72 lines
2.1 KiB
Markdown

# Provisionar o banco `rag_gart`
Passo a passo para criar o banco deste projeto no container compartilhado
`rag-hub-db` (mesma VPS usada por Doza/Tigre/Jhonny). Só precisa ser feito
uma vez (ou para reprovisionar do zero).
Precisa de acesso SSH à VPS (`root@179.197.228.240`, chave já autorizada) e
das credenciais do usuário admin do `rag-hub-db` (`rag_admin` — senha em
`/docker/rag-hub/.env` na própria VPS; não é duplicada em nenhum projeto).
## 1. Criar o banco e a role de indexação
Via túnel SSH ou `docker exec` na VPS, como `rag_admin`:
```sql
CREATE DATABASE rag_gart OWNER rag_admin;
\c rag_gart
CREATE EXTENSION IF NOT EXISTS vector;
CREATE EXTENSION IF NOT EXISTS pg_trgm;
-- Role de indexação, sem DDL (só o que admin/update_rag.py e rag/search.py
-- precisam: SELECT/INSERT/UPDATE/DELETE no schema gart).
CREATE ROLE gart_rag_indexer LOGIN PASSWORD '<senha forte gerada aqui>';
```
## 2. Criar o schema
Rode [`schema.sql`](schema.sql) neste banco (idempotente, `CREATE ... IF NOT
EXISTS` em tudo):
```bash
psql "postgresql://rag_admin@127.0.0.1:55435/rag_gart" -f rag/schema.sql
```
Depois conceda os privilégios ao usuário de indexação:
```sql
GRANT USAGE ON SCHEMA gart TO gart_rag_indexer;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA gart TO gart_rag_indexer;
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA gart TO gart_rag_indexer;
ALTER DEFAULT PRIVILEGES IN SCHEMA gart
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO gart_rag_indexer;
```
## 3. Preencher as credenciais locais
```bash
cp admin/gart-rag.env.example admin/gart-rag.env
```
Editar `admin/gart-rag.env` e colocar a senha gerada no passo 1 em
`RAG_DB_PASSWORD`. Esse arquivo é ignorado pelo git — nunca commitar.
## 4. Indexar pela primeira vez
```bash
admin/update_rag.command
```
Abre o túnel SSH (se não estiver aberto), roda `admin/update_rag.py` e grava
os chunks + o mapa de arquivos em `rag_gart`.
## 5. Testar a busca
```bash
rag/search_gart.sh "como funciona o export para DaVinci"
rag/search_gart.sh --map fcpxml
```
Se vier `[RAG vazio, buscando local]`, confira se o passo 4 rodou sem erro e
se `RAG_DB_PASSWORD` está correta.