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 diretaDistribuiçã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 explanationCandidatos que devem ser reduzidos:
first_3d_game / player_movement_code
unrelated api_mapping
unrelated label_prototypesSimulaçã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 QwenEtapa 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, normalizedEtapa 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 similarityEtapa 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_movement4ª 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_sizeLogs 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/rejeitarConclusã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 finalA recomendação final da nota original se aproxima desta estrutura.