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 rangeEn 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 tutorialFallos 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 docsEs 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 screenCandidatos 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 movementSin embargo, el chunk de referencia tiene la siguiente pista directa.
AnimatedSprite2D
Vector2.ZERO
position.clamp
screen_sizeembedding 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 cercanoConclusió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_mappingel riesgo de falsos positivos es alto.
Evaluación
Prohibido el uso exclusivo
Usado para complementar candidatos BM25