idea_world_labDEV JOURNAL
domingo, 28 de junio de 2026

Alternativa C: solo incrustación

Flujo

raw chunkText
-> embedding vector
-> docs_chunks/api_mapping/label_prototypes embedding y búsqueda de coseno
-> devolver top JSONL

¿Por qué se necesita embedding?

BM25 es fuerte con coincidencias exactas de cadenas, pero puede debilitarse cuando la descripción y la representación del código difieren.

Por ejemplo, el chunk contiene el siguiente código.

position = position.clamp(Vector2.ZERO, screen_size)

El documento puede describirse de la siguiente manera.

prevent the player from leaving the screen
clamping a value means restricting it to a given range

En este caso, el embedding puede capturar la conexión semántica.

Éxito esperado en el chunk de referencia

El embedding tiene la posibilidad de encontrar el siguiente tema.

2D player movement
moving inside screen
animation based on movement
player movement tutorial

Fallos esperados en el chunk de referencia

El embedding también puede asignar puntuaciones altas a candidatos con significado similar.

Falsos positivos esperados:

3D player movement
scripting player input
vector math
animation player docs

Es decir, si el significado de “player movement” es similar, se puede difuminar la diferencia entre 2D y 3D.

Simulación PoC

Convertir el chunk de referencia a un vector de incrustación.

Significado de la entrada:

2D player movement
keyboard input
velocity normalization
animation while moving
keep player inside screen

Candidatos con alta probabilidad de ser encontrados por embedding:

Candidato Por qué aparece Juicio
first_2d_game / coding_the_player El movimiento del jugador 2D, entrada, animación y restricción de pantalla son similares aceptar
first_2d_game / clamp explanation El significado de impedir que el jugador salga de la pantalla es similar aceptar
first_3d_game / player_movement_code El movimiento del jugador, entrada y dirección normalizada son similares falso positivo
Vector math / movement tutorial Velocidad, vector y normalizado son similares quizá
Animation player docs El significado de reproducir/detener animación es similar quizá

Problemas notables en solo embedding:

Se busca si el significado es cercano más que si la cadena coincide exactamente.  
Por eso, criterios que deben dividirse con precisión, como 2D/3D, Godot3/Godot4, o si hay migración, pueden volverse difusos.

Por ejemplo, los documentos de chunk de referencia y de movimiento 3D comparten el siguiente significado.

keyboard input
movement direction
normalized velocity
player movement

Sin embargo, el chunk de referencia tiene la siguiente pista directa.

AnimatedSprite2D
Vector2.ZERO
position.clamp
screen_size

embedding only no puede explicar directamente la pista con tanta claridad como BM25.

Registros que deben verificarse en la PoC

En la PoC de embedding se debe mostrar lo siguiente.

1. query chunkText  
2. Resumen del encabezado/contenido del documento candidato  
3. Similaridad coseno  
4. Lista de cadenas que coinciden directamente  
5. Mostrar candidatos sin coincidencia directa pero con significado cercano

Conclusión visible:

La incrustación complementa los documentos descriptivos que BM25 pasa por alto.  
Sin embargo, es débil en la evaluación de evidencia directa, por lo que no debe usarse de forma aislada.

Ventajas

  • Busca aunque la expresión sea diferente.
  • Es fuerte en contenido de tipo documentación descriptiva.
  • Es fácil insertar el fragmento crudo tal cual.
  • Puede servir como alternativa cuando BM25 no devuelve resultados.

Desventajas

  • La determinación precisa de la API es débil.
  • Puede mezclar diferencias entre versiones Godot 3/Godot 4.
  • Puede combinar contextos 2D/3D.
  • Es difícil explicar por qué se obtuvo este resultado.
  • En api_mapping el riesgo de falsos positivos es alto.

Evaluación

Prohibido el uso exclusivo  
Usado para complementar candidatos BM25