Skip to content
This repository was archived by the owner on Jul 10, 2026. It is now read-only.

Sprint 2: reranking cross-encoder no RAG (TKT-020-A) + verificação do não-bug TKT-020-B - #110

Merged
danzeroum merged 1 commit into
mainfrom
claude/optimistic-mendel-cwuuno
Jun 21, 2026
Merged

Sprint 2: reranking cross-encoder no RAG (TKT-020-A) + verificação do não-bug TKT-020-B#110
danzeroum merged 1 commit into
mainfrom
claude/optimistic-mendel-cwuuno

Conversation

@danzeroum

Copy link
Copy Markdown
Owner

Sprint 2 — Qualidade do RAG (parte 1)

TKT-020-A — Reranking (cross-encoder)

2º estágio de qualidade: depois da busca vetorial, rag.rs chama o serviço reranker (:8003, já no compose desde o Sprint 1) para reordenar os candidatos por relevância e devolver os melhores top_k.

  • over-fetch: busca top_k*4 (cap 50) candidatos no Qdrant quando RERANKER_URL está setado, deixando o cross-encoder escolher
  • degradação graciosa: sem RERANKER_URL, token ausente, erro HTTP ou nº de scores ≠ chunks → mantém a ordem vetorial (no-op seguro) — comportamento e testes existentes inalterados
  • reorder_by_scores extraído como função pura + testado

TKT-020-B — "duplo-prefixo de embedding": não era bug

Verificado contra o código real: o serviço de embedding embeda os texts as-is (sem adicionar prefixo). A query usa search_query: (rag.rs) e o documento search_document: (document-processor) — exatamente a convenção do nomic-embed-v2. O apontamento da auditoria estava desatualizado; rag.rs:21 permanece como está (mudá-lo quebraria a recuperação).

Verificação local

  • cargo build -p api
  • cargo clippy -p api --tests -- -D warnings
  • cargo test reorder_by_scores2/2

🤖 Generated with Claude Code


Generated by Claude Code

Adiciona o 2o estagio de qualidade ao RAG: apos a busca vetorial, o rag.rs
chama o servico `reranker` (:8003, ja no compose) para reordenar os candidatos
por relevancia do cross-encoder e devolve os melhores top_k.

- over-fetch: busca top_k*4 (cap 50) candidatos no Qdrant quando RERANKER_URL
  esta setado, deixando o cross-encoder escolher os melhores
- degradacao graciosa: sem RERANKER_URL, token ausente, erro HTTP ou nº de
  scores != chunks -> mantem a ordem vetorial (no-op seguro)
- reorder_by_scores extraido como funcao pura + testado (2 testes)

TKT-020-B (duplo-prefixo de embedding): VERIFICADO que NAO era bug — o servico
de embedding embeda os texts as-is; a query usa "search_query:" (rag.rs) e o
documento "search_document:" (document-processor), que e a convencao correta do
nomic-embed-v2. O apontamento da auditoria estava desatualizado; rag.rs:21 fica
como esta.

Verificacao local: cargo build OK; clippy -D warnings (incl tests) limpo;
cargo test reorder_by_scores 2/2.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AcsaeS7c9zJ4vkNtxqBcnc
@danzeroum
danzeroum merged commit 3280fdf into main Jun 21, 2026
1 check passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants