idea_world_labDEV JOURNAL
domingo, 28 de junio de 2026

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 directa

Asignació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 explanation

Candidatos que deben disminuir:

first_3d_game / player_movement_code
unrelated api_mapping
unrelated label_prototypes

Simulació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 validator

Paso 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, normalized

2ª 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 similarity

Paso 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_movement

Paso 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 pantalla

Registros 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 final

Conclusió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 calidad

La recomendación final de la nota original se acerca a esta estructura.