Alternativa E: Creación del perfil de consulta Qwen
Flujo
-> Solicitar a Qwen la generación de JSON para búsqueda
-> Buscar con BM25/vector usando el JSON generado
-> Devolver candidatos JSONLEjemplo de salida
Si Qwen se selecciona bien, puedes crear un perfil de búsqueda como el siguiente.
{
"search_intent": "Godot 4 2D player movement tutorial",
"important_literals": [
"Input.is_action_pressed",
"Vector2.ZERO",
"AnimatedSprite2D",
"position.clamp",
"screen_size"
],
"likely_doc_topics": [
"first 2D game",
"coding the player",
"player movement",
"clamp position to screen",
"play and stop AnimatedSprite2D"
],
"migration_signals": []
}Ventajas
- Se puede reducir la codificación rígida.
- Se puede resumir la intención en fragmentos complejos.
- Se pueden crear términos de búsqueda más legibles para las personas.
- Se puede delegar la inferencia de contexto de Godot a Qwen.
Desventajas
- Es lento.
- Tiene costo.
- Desde la etapa previa a la búsqueda pueden introducirse alucinaciones.
- Puede generar pistas que no existen en Qwen.
- Puede crear una intención de migración incorrecta y arrastrar mal el
api_mapping.
Ejemplo de fallo
En el fragmento de referencia está AnimatedSprite2D, pero si Qwen lo resume incorrectamente como a continuación, es peligroso.
{
"migration_intent": "Godot 3 to Godot 4 migration",
"important_terms": ["AnimatedSprite", "AnimatedSprite2D"]
}En este caso es un código normal de Godot 4, pero se puede arrastrar incorrectamente el mapeo de migración.
Simulación PoC
Se pasa el chunk de referencia a Qwen primero para que cree un perfil de búsqueda.
Entrada:
SOURCE_CODE:
func _process(delta):
...
$AnimatedSprite2D.play()
position = position.clamp(Vector2.ZERO, screen_size)Perfil de éxito:
{
"search_intent": "Godot 4 2D player movement tutorial",
"important_literals": [
"Input.is_action_pressed",
"Vector2.ZERO",
"AnimatedSprite2D",
"position.clamp",
"screen_size"
],
"migration_signals": []
}Los candidatos esperados al buscar con este perfil son los siguientes.
docs_chunks:
first_2d_game / coding_the_player
first_2d_game / clamp and screen bounds section
api_mapping:
Casi nada o bajo
label_prototypes:
Casi nada o bajoPerfil de fallas:
{
"search_intent": "Godot 3 to Godot 4 migration",
"important_literals": [
"AnimatedSprite",
"AnimatedSprite2D",
"KinematicBody2D"
],
"migration_signals": ["AnimatedSprite to AnimatedSprite2D"]
}Razones por las que el perfil de falla es peligroso:
El código fuente no contiene AnimatedSprite.
El código fuente no contiene KinematicBody2D.
El código fuente podría ser un código válido de Godot 4.
Sin embargo, cuando Qwen crea una intención de migración, puede buscar incorrectamente api_mapping/label_prototypes.Registro a verificar en PoC
El método de perfil de consulta Qwen implica que el LLM intervenga antes de la búsqueda, por lo que es necesario el siguiente registro.
1. raw chunkText
2. JSON de perfil de consulta creado por Qwen
3. si los important_literals en el perfil existen realmente en el SOURCE_CODE
4. si los migration_signals en el perfil existen realmente en el SOURCE_CODE
5. candidatos buscados con el perfil
6. diferencia con los candidatos buscados con raw chunkTextConclusión visible:
Si el perfil de Qwen se muestra bien, la consulta de búsqueda se ve mejor.
Sin embargo, si se generan pistas inexistentes, los resultados se contaminan en la etapa previa a la búsqueda.
Por eso, es más seguro usar Qwen como validador después de la búsqueda que antes.Juicio
Es bueno para experimentos de calidad de búsqueda
Se debe ser cauteloso como motor de búsqueda de primera fase en producciónLa evaluación de la nota original es que es más seguro usar Qwen como validador de evidencia directa después de la búsqueda que como generador de consultas antes de la búsqueda.