Alternative E : création d’un profil de requête Qwen
Flux
raw chunkText
-> Demander à Qwen de créer un JSON pour la recherche
-> Recherche BM25/vector avec le JSON généré
-> Retourner les candidats JSONLExemple de sortie
Si Qwen est bien sélectionné, vous pouvez créer un profil de recherche comme suit.
{
"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": []
}Avantages
- Il est possible de réduire le codage en dur.
- On peut résumer l’intention dans un chunk complexe.
- Les termes de recherche peuvent être rendus plus lisibles pour les humains.
- On peut confier le raisonnement contextuel de Godot à Qwen.
Inconvénients
- C’est lent.
- Cela coûte cher.
- Des hallucinations peuvent apparaître dès l’étape de recherche.
- Qwen peut générer des indices inexistants.
- Une intention de migration incorrecte peut être créée, entraînant une mauvaise importation de
api_mapping.
Exemple d’échec
Le chunk de référence contient AnimatedSprite2D, mais si Qwen le résume incorrectement comme suit, c’est dangereux.
{
"migration_intent": "Godot 3 to Godot 4 migration",
"important_terms": ["AnimatedSprite", "AnimatedSprite2D"]
}Cette situation correspond à un code Godot 4 correct, mais il est possible d’importer une mauvaise cartographie de migration.
Simulation PoC
Faire passer le chunk de référence à Qwen d’abord afin de créer un profil de recherche.
Entrée:
SOURCE_CODE:
func _process(delta):
...
$AnimatedSprite2D.play()
position = position.clamp(Vector2.ZERO, screen_size)Profil de réussite :
{
"search_intent": "Godot 4 2D player movement tutorial",
"important_literals": [
"Input.is_action_pressed",
"Vector2.ZERO",
"AnimatedSprite2D",
"position.clamp",
"screen_size"
],
"migration_signals": []
}Les candidats attendus lors de la recherche avec ce profil sont les suivants.
docs_chunks:
first_2d_game / coding_the_player
first_2d_game / clamp and screen bounds section
api_mapping:
Presque aucun ou faible
label_prototypes:
Presque aucun ou faibleProfil d'échec:
{
"search_intent": "Godot 3 to Godot 4 migration",
"important_literals": [
"AnimatedSprite",
"AnimatedSprite2D",
"KinematicBody2D"
],
"migration_signals": ["AnimatedSprite to AnimatedSprite2D"]
}Pourquoi le profil d'échec est dangereux :
Il n'y a pas d'AnimatedSprite dans SOURCE_CODE.
Il n'y a pas de KinematicBody2D dans SOURCE_CODE.
SOURCE_CODE peut être un code valide pour Godot 4.
Cependant, si Qwen crée une intention de migration, il peut mal rechercher api_mapping/label_prototypes.Vérifier les journaux dans le PoC
Le mode de profilage de requête Qwen implique l'intervention du LLM avant la recherche, il est donc indispensable d'avoir les journaux suivants.
1. raw chunkText
2. JSON du profil de requête créé par Qwen
3. Vérifier si les important_literals dans le profil existent réellement dans le SOURCE_CODE
4. Vérifier si les migration_signals dans le profil existent réellement dans le SOURCE_CODE
5. Candidats recherchés avec le profil
6. Différence avec les candidats recherchés avec raw chunkTextConclusion visible :
Si le profil Qwen apparaît bien, les termes de recherche sont plus agréables à voir.
Cependant, si vous créez des indices inexistants, les résultats sont contaminés avant la recherche.
Ainsi, il est plus sûr d’utiliser Qwen comme validateur après la recherche plutôt qu’avant.Jugement
Bon pour les expériences de qualité de recherche
À utiliser avec prudence comme moteur de recherche principal en productionLa décision concernant la note originale est qu'il est généralement plus sûr d'utiliser Qwen comme validateur de preuves directes après la recherche plutôt que comme générateur de requêtes avant la recherche.