# 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 ''; ``` ## 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.