Alternativa F: BM25 + embedding + reranker + validator
Flujo
raw chunkText
-> BM25 top 80
-> embedding top 80
-> unión de candidatos
-> el rerankizador compara directamente el raw chunk con cada candidato JSONL
-> devuelve el JSONL superior
-> el validador de evidencia directa Qwen verifica la evidencia directaAsignación de roles
BM25:
Buscar la cadena exacta / candidato de token API.code embedding:
Se complementan los candidatos que, aunque expresados de manera diferente, tienen significados cercanos.reranker:
Se comparan los candidatos obtenidos por BM25 y embedding con el fragmento bruto y se reordenan.Validador de evidencia directa Qwen:
Verifique si hay evidencia de cadena/patrón que coincida directamente con el fragmento actual dentro del JSONL.
Descarta los JSONL sin evidencia.Alineación esperada en el chunk de referencia
Candidatos que deberían subir más:
first_2d_game / coding_the_player
same page / clamp and AnimatedSprite2D explanationCandidatos que deben disminuir:
first_3d_game / player_movement_code
unrelated api_mapping
unrelated label_prototypesSimulación de PoC
Supongamos que se inserta el chunk de referencia en el flujo de recomendación final.
raw chunkText
-> BM25 top 80
-> voyage-code-3 embedding top 80
-> candidato union
-> reranker
-> Qwen direct-evidence validatorPaso 1: Candidatos BM25
Candidatos que BM25 obtendrá:
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, normalized2ª etapa: candidatos de embedding
candidatos que traerá el embedding:
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 similarityPaso 3: unión de candidatos
Después de la unión, se combinan los duplicados.
A/D -> first_2d_game / coding_the_player
B/E -> first_2d_game / clamp/screen bounds
C/F -> first_3d_game / player_movementPaso 4: Reordenamiento del reranker
El reranker observa el raw chunk y los candidatos juntos.
Rerank esperado:
| rerank | candidato | razón |
|---|---|---|
| 1 | first_2d_game / coding_the_player |
Procesamiento de entrada, velocidad, y el play/stop de AnimatedSprite2D coinciden directamente |
| 2 | first_2d_game / clamp/screen bounds | position.clamp, Vector2.ZERO, screen_size coinciden directamente |
| 3 | first_3d_game / player_movement | La entrada/movimiento es similar pero en contexto 3D y no hay AnimatedSprite2D/screen_size |
Paso 5: Validador de evidencia directa Qwen
El validador Qwen pregunta lo siguiente.
Observa el SOURCE_CODE y el JSONL recuperado,
¿Existe en el JSONL una cadena/llamada API/patrón que coincida directamente con el SOURCE_CODE?
Primero juzga con sí o no.Lo siento, pero no se proporcionó ningún fragmento de Markdown para traducir. Por favor, envíe el contenido que desea traducir al español.
first_2d_game / coding_the_player:
validator = sí
direct evidence = Input.is_action_pressed, AnimatedSprite2D.play, AnimatedSprite2D.stop
first_2d_game / clamp/screen bounds:
validator = sí
direct evidence = position.clamp, Vector2.ZERO, screen_size
first_3d_game / player_movement:
validator = no o baja relevancia
reason = el input de movimiento es similar pero es documentación 3D y no hay evidencia directa de AnimatedSprite2D/tamaño de pantallaRegistros a verificar en PoC
Esta alternativa tiene muchos pasos, por lo que se debe ver lo siguiente en una sola pantalla.
1. raw chunkText
2. candidatos BM25 y términos coincidentes
3. candidatos de embedding y similitud
4. resultado de unión
5. puntuación del reranker y cambio de posición
6. validador Qwen sí/no
7. JSONL de aceptación/rechazo finalConclusión visible:
BM25 y embedding reúnen un amplio conjunto de candidatos.
El reranker corrige el orden de los candidatos similares.
El validador Qwen descarta finalmente los JSONL sin evidencia directa.Ventajas
- Es probable que la calidad sea la mejor.
- Puede reducir los falsos positivos de BM25.
- También puede reducir los falsos positivos de embedding.
- Mantiene la condición de fragmento sin procesar.
- La dependencia de codificación rígida es baja.
- Se puede eliminar JSONL sin justificación al final con el validador Qwen.
Desventajas
- Tiene costo.
- Introduce latencia.
- Si se incluyen demasiados candidatos, se vuelve lento.
- Como el reranker tampoco es un verificador de justificaciones, se necesita un validador final.
Evaluación
Recomendación final con prioridad de calidadLa recomendación final de la nota original se acerca a esta estructura.