idea_world_labDEV JOURNAL
dimanche 28 juin 2026

Alternative D : BM25 + embedding parallèle

Flux

raw chunkText
  -> BM25 top 50
  -> embedding top 50
  -> union des candidats
  -> mélanger les scores
  -> retourner JSONL
  -> validation Qwen direct-evidence

Répartition des rôles

Ce que BM25 capture :

Input.is_action_pressed
AnimatedSprite2D
position.clamp
screen_size
Vector2.ZERO

Ce que l'embedding capture :

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

Ce que fait le validateur d'évidence directe Qwen :

Vérifier s'il existe une preuve de chaîne/pattern correspondant directement au chunk actuel dans le JSONL récupéré  
Supprimer le JSONL non pertinent

Avantages

  • Compense les faiblesses de la recherche de chaînes et de la recherche sémantique.
  • La qualité du premier lot de candidats s'améliore même sans Qwen.
  • Maintient la condition du « raw chunk ».
  • Peut démarrer sans l'extracteur de signaux API Godot codé en dur.

Inconvénients

  • Un réglage de la combinaison des scores est nécessaire.
  • L'échelle du score BM25 et du score vectoriel diffère.
  • Sans reranker, le classement peut devenir instable.
  • Il n'est pas possible d'éliminer complètement les faux positifs.

Résultats attendus sur le chunk de référence

Candidats supérieurs :

first_2d_game / coding_the_player
same page / clamp section

Candidats à abaisser ou à éliminer lors de la validation :

first_3d_game / player_movement_code
unrelated api_mapping
unrelated label_prototypes

Simulation PoC

Recherche simultanément le chunk de référence sur deux chemins.

-> BM25 top 50
-> embedding top 50
-> union des candidats
-> fusion des doublons
-> validation de Qwen direct-evidence

BM25 top candidat exemple :

Candidat Raison capturée par BM25
first_2d_game / coding_the_player Correspondance directe de Input.is_action_pressed, move_left, move_right, AnimatedSprite2D.play/stop
first_2d_game / clamp section Correspondance directe de position.clamp, Vector2.ZERO, screen_size
first_3d_game / player_movement_code Chevauchement du traitement d’entrée et du jeton de déplacement normalisé

embedding top candidat exemple :

Candidat Raison capturée par l'embedding
first_2d_game / coding_the_player La signification du mouvement du joueur 2D et de l’animation est proche
first_2d_game / clamp explanation La signification de la limitation du joueur à l’intérieur de l’écran est proche
first_3d_game / player_movement_code La signification du mouvement du joueur est proche
animation docs La signification de jouer/arrêter l’animation en état de déplacement est proche

Après l’union des candidats, cela ressemble à ce qui suit.

candidate A:
  source: BM25 + embedding
  evidence: Input.is_action_pressed, AnimatedSprite2D.play/stop
  expected: accept

candidate B:
  source: BM25 + embedding
  evidence: position.clamp, Vector2.ZERO, screen_size
  expected: accept

candidate C:
  source: BM25 + embedding
  evidence: Input.is_action_pressed, move_left, move_right, normalized
  missing: AnimatedSprite2D, Vector2, screen_size
  expected: lower or reject

candidate D:
  source: embedding only
  evidence: semantic movement/animation similarity
  direct string match: weak
  expected: validator decision needed

Lors du passage au validateur de preuves directes Qwen, il est évalué selon les critères suivants.

Les chaînes réelles/API appelées dans le **SOURCE_CODE** et  
les `source_api`, `source_pattern`, `match_terms`, `required_when_seen_in_code`, `before_code` du **JSONL**,  
ou le `content/code_blocks/api_symbols` de **docs_chunks** correspondent‑ils directement ?

Vérifier les journaux dans le PoC

Cette alternative est importante car le processus d'union est crucial, il faut donc le montrer.

1. Liste des candidats BM25  
2. Liste des candidats d'embedding  
3. Résultat après suppression des doublons post‑union  
4. Indication si chaque candidat provient de BM25 ou d'embedding  
5. Liste des preuves sous forme de chaînes de caractères  
6. Exemple/Oui‑Non du validateur Qwen

Conclusion visible :

BM25 téléverse directement la preuve API,  
l'embedding complète les candidats descriptifs.  
Cependant, l'union seule laisse des faux positifs, donc un validateur est nécessaire.

Jugement

Étape intermédiaire réaliste  
Ligne de recommandation minimale en pratique

Si vous trouvez difficile d'attacher directement le reranker, vous pouvez d'abord comparer cette alternative.