Pessoal, o agent puxou um trecho bonito. Similaridade alta. Confiança alta. Estava no stub errado.
Não foi “RAG fraco”. Foi porta errada. Índice caro, lixo na entrada.
O post anterior foi sobre consultar o grafo de código: token cai quando o agent pergunta ao mapa, não quando o gitignore está certo. Aqui é a outra conta. Vector, GraphRAG, híbrido: como recuperar. Contrato: o que pode ser lembrado e por onde se entra. Sem a segunda, o índice só erra mais rápido.
A prova também não é o vendor. É o transcript. Primeiro passo foi abrir o hub canônico, ou foi grep no cemitério?
Tabela de Conteúdo
- 1. O índice acertou. O mundo, não
- 2. O que o mercado está vendendo
- 3. A prova está na porta
- 4. O contrato em quatro peças
- 5. O que eu corto amanhã
1. O índice acertou. O mundo, não
A pergunta clássica era qual banco de vetor? A de 2026 é vector, grafo ou os dois?
A minha ficou outra: quando o agent pergunta “onde está X?”, ele entra pelo hub ou grepa o bak?
Se for a segunda, tanto faz o logo. Você indexou o labirinto.
2. O que o mercado está vendendo
O debate público é retrieval. Lookup (“qual o prazo neste contrato?”) vs síntese (“quais os riscos em todos?”). Vector costuma ganhar no primeiro. GraphRAG no segundo, caro de manter. Híbrido roteia. Um recorte com data: vector vs GraphRAG, 2026. Snapshot. Não ranking.
Isso importa. Não decide se legado/ pode ser porta. Não decide se o agent mistura diário com runbook no mesmo contexto. Embedding “certo” em guia morto: política ausente.
No meu setup o contrato veio antes do vetor. Não estou dizendo que vetor é inútil. Estou dizendo que porta entrega valor no dia zero. Eval de recall é outra conta. Um limite só: contrato não substitui GraphRAG quando a pergunta é síntese em grafo de entidades, e não é AppSec de prompt sozinho.
3. A prova está na porta
Mesma lógica do grafo de código. Lá eu olho se o primeiro tool foi query ou o décimo Read. Aqui eu olho se o agent cita o hub ou só a similaridade.
Pergunta sintético: qual a regra de entrada da memória do agent?
Turno caro (reconstruído, não é log de produção):
grep "memória" (em tudo)
Read README.bak
Read (mais três hits no lixo)
→ responde com confiança, regra invertida
Turno barato:
scope = meta / ops
Read o hub
segue o canônico
grep só depois, se precisar
→ a resposta diz por qual hub entrou
Se o agent não consegue dizer por qual porta entrou, você não tem contrato. Tem índice.
4. O contrato em quatro peças
Cabem em qualquer vault. Os nomes das caixas são seus.
Fonte única. Um canônico. O resto é espelho ou lixo.
Scopes. Pessoal, carreira, ops, meta, o que for. Página nova declara a caixa. Sem isso o search mistura incidente com diário.
Porta. Escolhe o scope, abre o hub, segue canônicos. Search é complemento. “Onde está X?” só com grep é o anti-padrão.
Hop. Redirect fino. Um pulo. Labirinto de stub é indexar lixo de propósito.
O que nunca vai pro contexto: segredo, PII, case que identifica empresa. Least privilege de memória. Não é feature do Pinecone.
5. O que eu corto amanhã
Copia. Cola no vault.
## Memory contract (agente)
1. Fonte canônica: um vault, não cinco?
2. Scopes: o que cada caixa pode conter?
3. Página nova declara scope?
4. Porta: hub-first por tipo de pergunta?
5. Redirect: hop máximo?
6. Proibido como entrada: legado, lixeira, bak?
7. Search é complemento, nunca substituto do hub?
8. Nunca no contexto: segredo, PII, case identificável?
9. Como você sabe que errou? (cita o hub usado)
No seu último “RAG”: o agent entrou por porta, por similaridade, ou por grep no bak? O que você proibiria como entrada amanhã?
Top comments (1)
This is a good distinction: retrieval quality and memory architecture are two different problems.
GraphRAG can give you a highly relevant result and still be wrong if the agent entered through the wrong source. I also like the “hub-first” idea because it makes the retrieval path observable instead of treating similarity score as proof that the context is valid.
The scope + canonical source + limited hops feels especially important once a project has enough historical material to create conflicting versions of the same rule.
One question I’d be interested in: how are you evaluating the memory contract itself? Not just whether the final answer is correct, but whether the agent followed the expected entry point and avoided prohibited sources. That seems like a useful eval signal for agent reliability.