docs(secretaria): estado das chaves de embedding (OpenAI s/ quota, Gemini 768d)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
VPS 4 Builder
2026-06-28 15:29:42 +02:00
parent 21b560e4f3
commit 471a9d1259
+15 -2
View File
@@ -22,8 +22,10 @@
VPS3 nem na imagem do `pgdev`, e o role `newwhats` **não é superuser** VPS3 nem na imagem do `pgdev`, e o role `newwhats` **não é superuser**
(`CREATE EXTENSION` negado). Solução adotada (decisão 28/jun/2026): (`CREATE EXTENSION` negado). Solução adotada (decisão 28/jun/2026):
- `embeddings.ts`: **chunking** + **embed** (OpenAI `text-embedding-3-small` - `embeddings.ts`: **chunking** + **embed** (OpenAI `text-embedding-3-small` @1536d
ou Gemini `text-embedding-004`, conforme a chave) + **cosseno** tudo em Node. ou Gemini `gemini-embedding-001` @768d, conforme a chave) + **cosseno** — em Node.
Ordem de preferência: **OpenAI → Gemini** (em qualquer falha do OpenAI, cai para
o Gemini — uma chave OpenAI sem créditos não derruba o RAG).
- Tabela **`sec_knowledge_chunks`**: vetor serializado em **JSON/text** (sem - Tabela **`sec_knowledge_chunks`**: vetor serializado em **JSON/text** (sem
extensão) + índices em `agent_id`/`node_id`. extensão) + índices em `agent_id`/`node_id`.
- `brain.ts`: no nó `knowledge`, injeta só os **top-4 trechos** relevantes à - `brain.ts`: no nó `knowledge`, injeta só os **top-4 trechos** relevantes à
@@ -34,6 +36,17 @@ VPS3 nem na imagem do `pgdev`, e o role `newwhats` **não é superuser**
> Para bases pequenas (clínica/empresa) é rápido e suficiente. Quando a VPS3 > Para bases pequenas (clínica/empresa) é rápido e suficiente. Quando a VPS3
> tiver `pgvector`, dá para migrar a busca ao banco sem mudar a interface. > tiver `pgvector`, dá para migrar a busca ao banco sem mudar a interface.
### ⚠️ Chaves de embedding (estado dev, 28/jun/2026)
- `openai_key` configurada (não versionada, no Dragonfly), porém a conta OpenAI
está **sem quota** (`429 insufficient_quota`) → embeddings OpenAI não funcionam
até acertar billing. **Rotacionar** a chave exposta.
- `gemini_key` configurada e **funcional** → embeddings caem no Gemini
(`gemini-embedding-001` @768d). `text-embedding-004` foi descontinuado (404).
- **Incompatibilidade de dimensões**: OpenAI (1536d) ≠ Gemini (768d). Ao habilitar
o OpenAI (billing) o provider preferido muda → **é obrigatório reindexar**
(`sync-knowledge` + memória de contato), senão o cosseno mistura espaços e o
retrieval fica sem sentido.
## Memória de longo prazo por contato ## Memória de longo prazo por contato
A secretária **lembra do cliente entre conversas** (tabela `sec_contact_memory`): A secretária **lembra do cliente entre conversas** (tabela `sec_contact_memory`):