Alternative D: BM25 + Einbettung parallel
Ablauf
raw chunkText
-> BM25 top 50
-> embedding top 50
-> Kandidaten-Union
-> Punktzahl mischen
-> JSONL zurückgeben
-> Qwen Direct-Evidence-ÜberprüfungRollenverteilung
Was BM25 erfasst:
Input.is_action_pressed
AnimatedSprite2D
position.clamp
screen_size
Vector2.ZEROWas das Embedding erfasst:
player movement
2D movement tutorial
moving inside screen
animation based on movementQwen Direct‑Evidence‑Validator macht folgendes:
Überprüfen, ob im abgerufenen JSONL ein direkter String‑/Musterbeweis für das aktuelle Chunk vorhanden ist
Nicht relevante JSONL verwerfenVorteile
- Die Schwächen der Zeichenkettensuche und der semantischen Suche ergänzen sich gegenseitig.
- Die Qualität der ersten Kandidaten verbessert sich sogar ohne Qwen.
- Die Bedingung für rohe Chunks bleibt erhalten.
- Der Start ist möglich, ohne einen hartkodierten Godot‑API‑Signal‑Extraktor zu verwenden.
Nachteile
- Eine Abstimmung der Score‑Kombination ist erforderlich.
- Der BM25‑Score und der Vektor‑Score haben unterschiedliche Skalen.
- Ohne Reranker kann das Ranking instabil werden.
- Falschpositive können nicht vollständig verhindert werden.
Erwartete Ergebnisse im Referenz‑Chunk
Obere Kandidaten:
first_2d_game / coding_the_player
same page / clamp sectionKandidaten, die reduziert oder aus der Validierung verworfen werden müssen:
first_3d_game / player_movement_code
unrelated api_mapping
unrelated label_prototypesPoC Simulation
Den Basis‑Chunk gleichzeitig über zwei Pfade suchen.
raw chunkText
-> BM25 top 50
-> embedding top 50
-> Kandidaten-Union
-> Duplikate zusammenführen
-> Qwen direct-evidence VerifizierungBM25‑Top‑Beispiele:
| Kandidat | Grund, warum BM25 ihn erfasst hat |
|---|---|
first_2d_game / coding_the_player |
Input.is_action_pressed, move_left, move_right, AnimatedSprite2D.play/stop direkte Übereinstimmung |
first_2d_game / clamp section |
position.clamp, Vector2.ZERO, screen_size direkte Übereinstimmung |
first_3d_game / player_movement_code |
Eingabeverarbeitung und normalisierte Bewegungs‑Token überschneiden sich |
Embedding‑Top‑Beispiele:
| Kandidat | Grund, warum das Embedding ihn erfasst hat |
|---|---|
first_2d_game / coding_the_player |
2D‑Spielerbewegung und Animation haben eine nahe Bedeutung |
first_2d_game / clamp explanation |
Die Bedeutung, den Spieler innerhalb des Bildschirms zu begrenzen, ist nahe |
first_3d_game / player_movement_code |
Die Bedeutung von Spielerbewegung ist nahe |
animation docs |
Im „moving“-Zustand bedeutet das Abspielen/Stoppen von Animationen etwas Ähnliches |
Nach dem Kandidaten‑Union sieht es etwa so aus.
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 neededWenn Sie an den Qwen Direct‑Evidence‑Validator übergeben, wird nach den folgenden Kriterien beurteilt.
Stimmt die tatsächliche Zeichenkette/API‑Aufruf im **SOURCE_CODE** mit den Feldern **source_api**, **source_pattern**, **match_terms**, **required_when_seen_in_code**, **before_code** in der JSONL oder mit **content/code_blocks/api_symbols** in **docs_chunks** überein?Logs, die im PoC überprüft werden
Da diese Alternative den Union‑Prozess wichtig macht, muss Folgendes gezeigt werden.
1. BM25 Kandidatenliste
2. Embedding Kandidatenliste
3. Ergebnis nach Duplikatentfernung nach Union
4. Ob jeder Kandidat von BM25 oder von Embedding stammt
5. Direkte Zeichenkettenbegründungsliste
6. Beispiel/Nein des Qwen‑ValidatorsSichtbare Schlussfolgerung:
BM25 stellt die direkte API‑Grundlage bereit,
Embedding ergänzt die erklärenden Kandidaten.
Da jedoch allein durch die Union noch Fehlalarme entstehen, ist ein Validator erforderlich.Bewertung
Realistische Zwischenstufe
Empfohlene Mindestgrenze für die PraxisWenn es belastend ist, den Reranker sofort anzuhängen, kann man zunächst diese Alternative vergleichen.