idea_world_labDEV JOURNAL
domingo, 28 de junho de 2026

Alternativa F: BM25 + incorporação + reordenador + validador

Fluxo

raw chunkText
  -> BM25 top 80
  -> embedding top 80
  -> união de candidatos
  -> O reranker compara diretamente o raw chunk com cada candidato JSONL
  -> retorna o JSONL top
  -> O validador de evidência direta Qwen verifica a evidência direta

Distribuição de papéis

BM25:

Encontra a string exata/candidato ao token da API.

code embedding:

Complementa candidatos que têm expressões diferentes, mas significados próximos.

reranker:

Reordena os candidatos obtidos por BM25 e embedding comparando-os com o chunk bruto.

Validador de evidência direta Qwen:

Verifique se há evidência de string/padrão que corresponde diretamente ao chunk atual dentro do JSONL.  
JSONL sem evidência deve ser descartado.

Ordenação esperada no chunk de referência

Candidatos que devem subir alto:

first_2d_game / coding_the_player
same page / clamp and AnimatedSprite2D explanation

Candidatos que devem ser reduzidos:

first_3d_game / player_movement_code
unrelated api_mapping
unrelated label_prototypes

Simulação PoC

Assuma que o chunk de referência é inserido no fluxo final de recomendação.

raw chunkText
  -> BM25 top 80
  -> voyage-code-3 embedding top 80
  -> união de candidatos
  -> reranker
  -> validador de evidência direta Qwen

Etapa 1: Candidatos BM25

Candidatos que o BM25 trará:

A. first_2d_game / coding_the_player
   reason: Input.is_action_pressed, move_left, move_right, AnimatedSprite2D.play/stop

B. first_2d_game / clamp section
   reason: position.clamp, Vector2.ZERO, screen_size

C. first_3d_game / player_movement_code
   reason: Input.is_action_pressed, move_left, move_right, normalized

Etapa 2: candidatos de embedding

Candidatos que o embedding trará:

D. first_2d_game / movement explanation
   reason: 2D movement, keyboard input, animation

E. first_2d_game / screen bounds explanation
   reason: keep player inside screen

F. first_3d_game / movement
   reason: player movement semantic similarity

Etapa 3: União de candidatos

Após a união, combina as duplicatas.

A/D -> first_2d_game / coding_the_player
B/E -> first_2d_game / clamp/screen bounds
C/F -> first_3d_game / player_movement

4ª Etapa: reordenamento do reranker

O reranker analisa o chunk bruto e as candidatas juntas.

Rerank esperado:

rerank candidata motivo
1 first_2d_game / coding_the_player Processamento de entrada, velocity, AnimatedSprite2D play/stop correspondem diretamente
2 first_2d_game / clamp/screen bounds position.clamp, Vector2.ZERO, screen_size correspondem diretamente
3 first_3d_game / player_movement Entrada/movimento são semelhantes, mas o contexto é 3D e não há AnimatedSprite2D/screen_size

5ª Etapa: validador de evidência direta Qwen

No validador Qwen pergunta da seguinte forma.

Observe o `SOURCE_CODE` e o JSONL recuperado, há alguma correspondência direta de string/chamada de API/padrão dentro do JSONL que corresponda ao `SOURCE_CODE`? Primeiro, decida com **sim** ou **não**.

Nenhum conteúdo fornecido para tradução.

first_2d_game / coding_the_player:
  validator = sim
  direct evidence = Input.is_action_pressed, AnimatedSprite2D.play, AnimatedSprite2D.stop

first_2d_game / clamp/screen bounds:
  validator = sim
  direct evidence = position.clamp, Vector2.ZERO, screen_size

first_3d_game / player_movement:
  validator = não ou baixa relevância
  reason = a entrada de movimento é semelhante, mas é documentação 3D e não há evidência direta de AnimatedSprite2D/screen_size

Logs a serem verificados no PoC

Esta alternativa tem muitas etapas, portanto deve ser visualizada em uma única tela.

1. raw chunkText  
2. BM25 candidato e termos correspondentes  
3. embedding candidato e similaridade  
4. resultado da união  
5. pontuação do reranker e mudança de classificação  
6. validador Qwen sim/não  
7. JSONL final aceitar/rejeitar

Conclusão visível:

BM25 e embedding coletam amplamente os candidatos.  
O reranker corrige a ordem dos candidatos semelhantes.  
O validador Qwen descarta definitivamente o JSONL sem evidência direta.

Vantagens

  • É provável que a qualidade seja a melhor.
  • Pode reduzir falsos positivos do BM25.
  • Também pode reduzir falsos positivos de embedding.
  • Mantém a condição de raw chunk.
  • Baixa dependência de hardcoding.
  • É possível remover JSONL sem base de evidência no final usando o validador Qwen.

Desvantagens

  • Custa dinheiro.
  • Introduz latência.
  • Fica lento se inserir candidatos demais.
  • Como o reranker também não é um verificador de evidência, um validador final é necessário.

Avaliação

Qualidade em primeiro lugar, recomendação final

A recomendação final da nota original se aproxima desta estrutura.