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>
72 lines
2.1 KiB
Markdown
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.
|