コンテンツにスキップ

RAG統合検索

Ctrl+K を押すと、ワークスペースのすべての作業の痕跡が1つの検索ウィンドウに集まります。単語が正確に一致しなくても意味で見つけ出し、埋め込みはすべてローカルで計算されるため、コードが外部に出ることはありません。

ソースインデックス対象質問例
codeテキスト·コードファイル(40以上の拡張子)「パスワードを保存する関数」
dbテーブル·ビュー·インデックス·トリガー·ルーチンの定義「注文金額を合算するビュー」
gitコミットメッセージ·diff「先週のエンコードバグ修正コミット」
chatAIチャットの会話内容「昨日AIに聞いたデプロイ方法」
work_eventパネル活動記録(開く·編集·クエリ実行など)「最近開いたマイグレーションファイル」
docマークダウン·ドキュメントファイル「API認証手順のドキュメント」

コードだけでなく、「先週あのテーブルどう直したっけ?」のような作業の文脈まで検索されます。

1つのクエリが2系統で同時に実行されます。

  1. ベクトル検索 — sqlite-vec KNN。意味が似ていれば単語が違っても見つけます。
  2. キーワード検索 — FTS5 BM25。正確な識別子·エラーメッセージに強いです。

2つの結果を RRF(Reciprocal Rank Fusion)で融合し、最終順位を付けます。一方の方式が見逃した結果をもう一方が補完するため、単独の方式より一貫して良い結果が得られます。deprecated / legacy / .bak のパスは自動的に減点処理されます。

検索品質をさらに引き上げたい場合は、リランカーを有効にできます。

  • 上位候補40個を cross-encoder モデル(bge-reranker-base、日本語を含む多言語)がクエリと1:1で照合して再ソートします。
  • 最新性の重み — 直近30日の結果に加点、1年以上前のチャンクは減衰します。
  • 引用回数の重み — AIの回答で実際に引用された回数が多いほど上位に上がります。

コードを理解するチャンキング

Section titled “コードを理解するチャンキング”

コードファイルは単純にN行ずつ切るわけではありません。tree-sitter AST パースで関数·クラス·メソッドの境界でチャンクを分け(デフォルト6 KB)、検索結果が「関数の半分」ではなく、完全な意味単位として出てきます。

対応言語チャンキング方式
Python · JavaScript · TypeScript · TSXtree-sitter AST
C# · Java · Go · Darttree-sitter AST
その他の言語 · 超巨大ファイル行単位の安全フォールバック

埋め込みモデルは transformers.js ベースでアプリ内で実行されます。APIキーもネットワーク送信も不要です。初回使用時にモデルを一度だけダウンロードし、以降はオフラインでも動作します。

モデル次元サイズ備考
multilingual-e5-small384約110 MBデフォルト、高速
multilingual-e5-base768約280 MB日本語推奨 — 検索品質が目に見えて向上します
MiniLM · bge 系38490~130 MB英語中心プロジェクト向けの軽量
embeddinggemma-300m768約600 MBベータ
  1. Ctrl+K を押して統合検索ウィンドウを開きます。

  2. 自然言語で入力します。

    SSHパスワードを保存している部分
    先週直したエンコードバグ
    orders テーブルに amount カラムを追加したコミット
  3. ソースフィルターチップ(code · db · git · chat · work_event · doc)で範囲を絞ります。

  4. 結果カードをクリックすると内容が展開され、▶ ボタンを押すと元のファイル·位置に移動します。

AIチャット は、ユーザーがメッセージを送る前に workspace_search ツールでインデックスを自動検索します。関連コード·過去の会話·DBスキーマをコンテキストとして取り込み、回答の精度を高めます。別途の操作は不要で、引用されたファイルは回答の下の**「参考:」**セクションに表示されます。

  • ファイル保存またはDBスキーマ変更が検出されると、バックグラウンドで増分インデックスされます。
  • モード選択 — チャット設定で eco / balanced / fast の中から選択し、CPU使用量と反映速度のバランスを調整します。
  • 状態ダッシュボード — チャット設定 → RAGインデックス状態 タブで、ソース別のチャンク数とインデックスキューをリアルタイムで確認します。

.gitignore自動的に尊重し、下記のパスはデフォルトで除外されます。

node_modules/ .git/ dist/ build/

追加の除外が必要なら、プロジェクトルートの .termeditignore ファイルに記述します(gitignore 文法)。DBオブジェクトは [db] セクションに glob パターンで除外します。

# .termeditignore の例
vendor/
*.generated.ts
coverage/
[db]
*.tmp_*
BACKUP_*

パターンを保存すると、すでにインデックスされた該当チャンクも即座に整理されます。

古いワークスペースでインデックスが肥大化したら、ダッシュボードの清掃ツールを使用してください。

ツール役割
Orphan Scan削除されたファイルの残存チャンクを除去
Pattern Purgeパスパターン(例: dist/**)で一括除去
Stale Cleanup長く引用されていないチャンクを整理
失敗再試行インデックス失敗項目を再処理

インデックスの保存場所 & サイズ

Section titled “インデックスの保存場所 & サイズ”

インデックスはワークスペースごとの SQLite ファイル(workspace.sqlite)として保存されます。ワークスペースフォルダを移動すると新たにインデックスされます。

サイズは負担にならない水準です。1万チャンク基準でベクトルデータが約15 MB です。

検索ウィンドウが開きませんCtrl+K を使用します。入力フォーカスが他のショートカットと競合する場合は、空の領域を一度クリックしてから再試行します。

結果がない、または変です → 初回実行直後は、モデルのロード·ダウンロードが完了するまで結果が空のことがあります。インデックス状態ダッシュボードで進行率を確認してください。ノイズが多いなら .termeditignore で不要なパスを除外してください。

古い結果が出続けます → インデックス状態タブ → Orphan Scan または Stale Cleanup を実行します。モデルを変更した直後なら、再インデックスが完了するまで待ちます。

埋め込みモデルを変えると既存のインデックスは? → モデルを変更すると既存のインデックスが自動的に削除され、最初から再インデックスされます。プロジェクトの規模によって数分かかることがあります。

リモート(SSH/SFTP)フォルダもインデックスされますか? → まだ対応していません。リモートプロジェクトフォルダでは RAG コード検索が無効になり、AIが file_list_dir + file_read ツールで直接探索します。

AIの回答にコードが誤って引用されます → ソースフィルターを調整するか、.termeditignore でノイズファイルを除外すると、引用品質が改善されます。リランキングオプションを有効にすると、関連性の低いチャンクが後ろに押されます。


他の機能と連携して使用する方法は、AIチャットエディタDBクライアント のドキュメントを参照してください。