Ir para o conteúdo principal
Voltar aos artigos

RAG de código: o índice certo precisa representar a versão certa

O relato da JetBrains mostra por que snapshots, filtros e atualização incremental importam tanto quanto embeddings na busca para agentes.

·3 min de leitura·4 visualizações

A JetBrains descreveu a camada de armazenamento e recuperação do Air Context, incluindo filtros, snapshots, atualização incremental e combinação de índices locais e remotos.[8] A equipe combina busca aproximada com comparação exata em candidatos selecionados e usa reranking para organizar os resultados.[8] O ponto importante para um RAG de código não é simplesmente encontrar algo parecido, mas encontrar o trecho correto no estado correto do projeto.

O que muda para quem desenvolve

Segundo o relato, restringir a travessia de um grafo HNSW pode desconectá-lo e esconder candidatos válidos.[8] Pós-filtrar, por outro lado, pode deixar poucos resultados úteis; varreduras iterativas do pgvector mitigam esse problema com possível custo de latência.[8] Filtro não é um detalhe acrescentado depois da escolha do índice.

A equipe organiza snapshots para reaproveitar subárvores e deduplicar embeddings pelo hash do conteúdo.[8] Ingestão e construção do índice são desacopladas, e um snapshot só se torna pesquisável quando está pronto.[8] Essa disciplina oferece uma resposta concreta à pergunta que todo resultado deveria permitir: “qual versão do repositório sustenta esta resposta?”.

Código ainda não enviado ao remoto é atendido por um índice local com USearch, e candidatos locais e remotos são combinados por reranking.[8] Para quem constrói ferramentas próprias, isso sugere tratar mudanças locais como uma camada explícita, em vez de misturá-las silenciosamente ao estado compartilhado.

Como aplicar

Monte uma avaliação pequena com perguntas cujo arquivo e trecho de resposta já sejam conhecidos. Inclua casos com símbolos de nomes parecidos, código removido e duas branches com implementações diferentes. Compare busca textual, vetorial e uma etapa de reranking usando o mesmo conjunto.

Registre identidade do snapshot, candidatos recuperados, tempo e acerto final. Depois altere um arquivo e remova outro. O experimento deve verificar se o índice abandona a resposta antiga, não apenas se encontra a nova.

Para permissões, crie dois conjuntos de arquivos com acessos diferentes e exija que resultados proibidos não apareçam no contexto entregue ao agente. Minha recomendação é tratar autorização como condição determinística de aceitação, nunca como pontuação que compete com relevância.

Cuidados e limites

A JetBrains descreve subagentes somente leitura, com contexto separado e limite explícito de passos, para situações em que uma consulta não basta.[8] Adote um orçamento semelhante antes de permitir buscas indefinidas. Meça o custo por tarefa resolvida, não só a qualidade de um ranking isolado.

O texto antecipa até 70% menos turnos em determinadas avaliações a serem detalhadas depois, sem apresentar esse ganho como universal.[8] Não converta esse número em previsão para seu projeto. Um sistema que recupera rapidamente código antigo ou inacessível continua entregando contexto errado, apenas com mais eficiência.

Fonte

[8] Fonte: JetBrains Blog

Continue lendo