代替 C: embedding only
フロー
raw chunkText
-> embedding vector
-> docs_chunks/api_mapping/label_prototypes embedding と cosine search
-> top JSONL 返却埋め込みが必要な理由
BM25は正確な文字列に強いですが、説明文とコード表現が異なると弱くなることがあります。
例えば、chunkには次のコードがあります。
position = position.clamp(Vector2.ZERO, screen_size)ドキュメントには次のように説明されている場合があります。
prevent the player from leaving the screen
clamping a value means restricting it to a given rangeこの場合、embeddingは意味的なつながりを捉えることができます。
基準チャンクで予想される成功
embeddingは次のトピックを見つける可能性があります。
2D player movement
moving inside screen
animation based on movement
player movement tutorial基準チャンクで予想される失敗
embeddingは意味が似ている候補も一緒に高く与えることができる。
予想される false positive:
3D player movement
scripting player input
vector math
animation player docsつまり「player movement」という意味が似ていれば、2D/3D の違いをぼやかすことができる。
PoC シミュレーション
基準チャンクを埋め込みベクトルに変換する。
入力の意味:
2D player movement
keyboard input
velocity normalization
animation while moving
keep player inside screenembeddingが見つかる可能性が高い候補:
| 候補 | なぜ出てくるか | 判定 |
|---|---|---|
first_2d_game / coding_the_player |
2D プレイヤーの移動、入力、アニメーション、画面クランプの意味が近い | accept |
first_2d_game / clamp explanation |
プレイヤーが画面外に出ないようにする意味が近い | accept |
first_3d_game / player_movement_code |
プレイヤーの移動、入力、正規化された方向の意味が近い | false positive |
Vector math / movement tutorial |
速度、ベクトル、正規化の意味が近い | maybe |
Animation player docs |
再生/停止アニメーションの意味が近い | maybe |
embedding onlyで目立つ問題:
文字列が直接合っているかより、意味が近いかを見る。
そのため、2D/3D、Godot3/Godot4、マイグレーションの有無のように正確に分ける基準が曖昧になることがある。例として、基準チャンクと3Dムーブメント文書はどちらも同じ意味を共有しています。
keyboard input
movement direction
normalized velocity
player movementしかし、基準チャンクには次の直接的な手がかりがあります。
AnimatedSprite2D
Vector2.ZERO
position.clamp
screen_sizeembedding onlyはこの直接的な手がかりをBM25ほど透明に説明できない可能性があります。
PoCで確認するログ
embedding PoCでは次のように示す必要があります。
1. query chunkText
2. 候補文書の見出し/コンテンツ要約
3. コサイン類似度
4. 直接一致した文字列の一覧
5. 直接一致文字列がないが意味が近い候補を表示目に見える結論:
embeddingはBM25が見逃した説明型文書を補完する。
しかし、直接的根拠の判定には弱いため、単独で使用してはいけない。長所
- 表現が違っても見つける。
- 文書説明型コンテンツに強い。
- 生のチャンクをそのまま入れやすい。
- BM25が0件のときフォールバックになることがある。
短所
- 正確なAPI判定が弱い。
- Godot 3/Godot 4 バージョンの違いが混ざる可能性がある。
- 2D/3D の文脈が混ざる可能性がある。
- なぜこの結果になったのか説明しにくい。
api_mappingでは偽陽性のリスクが大きい。
判定
単独使用禁止
BM25候補の補完用として使用