Skip to content

コードリポジトリのインデックス

コードベースインデックスは、AI埋め込み技術を活用してプロジェクト全体のセマンティックコード検索を実現します。正確なテキストマッチングによる検索ではなく、クエリの意味を理解することで、特定の関数名やファイルパスを知らなくても、VJSPが関連するコードを発見できるよう支援します。

機能

本機能を有効化すると、インデックスシステムは以下の処理を実行します。

  1. Tree-sitterによるコード解析:関数・クラス・メソッドといったセマンティックブロックを識別
  2. AIモデルによる埋め込み生成:各コードブロックのベクトル埋め込みを作成
  3. Qdrantデータベースへのベクトル保存:高速な類似度検索を実現
  4. codebase_searchツールの提供:VJSPにcodebase_searchツールを提供し、インテリジェントなコード発見を可能に

これにより、「ユーザー認証ロジック」「データベース接続処理」といった自然言語クエリで、プロジェクト全体から関連コードを検索できます。

主なメリット

  • セマンティック検索:キーワードだけでなく、意味に基づいてコードを検索
  • AIのコード理解強化:VJSPがコードベースをより深く理解・活用
  • クロスプロジェクト検索:開いているファイルだけでなく、全ファイルを対象に検索
  • パターン認識:類似した実装やコードパターンを発見

Qdrantベクトルデータベースの設定

Qdrantは埋め込みベクトルの保存・検索を担うコアツールで、以下の2つの設定方式をサポートします。

方式1:ローカルベクトルデータベース

  • デフォルトアドレスhttp://localhost:6333
  • 認証設定:APIキーの設定に対応。セキュアなデプロイメントには任意で設定可能

方式2:VJSP公式サイトから専用ベクトルデータベースを申請

ⓘ APIキー申請の説明

Qdrantの専用URLとAPIキーは、VJSP公式サイトコンソールから申請が必要です。申請完了後、取得した情報を「コードベースインデックス」の対応設定項目に貼り付けてください。詳細な取得方法は対応ヘルプドキュメントを参照してください。

設定手順

  1. VJSPダイアログ右下のインデックス準備完了アイコンを開く
  2. トグルスイッチで「コードベースインデックスを有効化」をオンにする
  3. 埋め込みプロバイダーを設定する
  4. QdrantのURLと任意でAPIキーを設定する
  5. 最大検索結果数を設定する(デフォルト:50、範囲:1~100)
  6. 保存ボタンをクリックし、初期インデックス作成を開始

有効化/無効化トグル

コードベースインデックス機能には、便利なトグルスイッチが搭載されており、以下の操作が可能です。

  • 有効化:コードベースのインデックス作成を開始し、検索ツールを使用可能にする
  • 無効化:インデックス作成を停止し、ファイル監視を一時中断して検索機能を無効にする
  • 設定の保持:機能をオフにしても設定内容は保存される

本トグルは、集中的な開発作業中や機密性の高いコードベースを扱う際に、インデックス作成を一時的に停止する場合に便利です。

インデックスステータスの確認方法

インターフェースには、カラーインジケーター付きのリアルタイムステータスが表示されます。

  • 待機中(グレー):実行されていない、設定待ちの状態
  • インデックス作成中(イエロー):現在ファイルを処理している状態
  • インデックス作成完了(グリーン):最新状態で検索可能な状態
  • エラー(レッド):失敗状態、対処が必要

ファイル処理方式

インテリジェントコード解析

  • Tree-sitter統合:AST解析を利用してセマンティックコードブロックを識別
  • 言語サポート:Tree-sitterがサポートするすべてのプログラミング言語に対応
  • Markdownサポート:Markdownファイルとドキュメントを完全にサポート
  • フォールバック処理:サポート外のファイル形式に対しては、行単位でのチャンク分割を実行
  • チャンクサイズ
    • 最小:100文字
    • 最大:1,000文字
    • 大規模関数の場合はインテリジェントに分割

自動ファイルフィルタリング

インデクサーは以下のファイルを自動的に除外します。

  • バイナリファイルおよび画像ファイル
  • 大きなファイル(>1MB)
  • Gitリポジトリ(.gitフォルダ)
  • 依存関係フォルダ(node_modulesvendorなど)
  • .gitignoreおよび.vjspのパターンに一致するファイル

インクリメンタル更新

  • ファイル監視:ワークスペース内の変更を監視
  • インテリジェント更新:変更されたファイルのみを再処理
  • ハッシュベースのキャッシュ:変更のないコンテンツの再処理を回避
  • ブランチ切り替え対応:Gitブランチの切り替えを自動的に処理

現在の制限事項

  • ファイルサイズ:1ファイルあたり最大1MB
  • シングルワークスペース:同時に1つのワークスペースのみ対応
  • 外部依存:外部サービス(埋め込みプロバイダー + Qdrant)が必要
  • 言語カバレッジ:最適な解析を行える言語はTree-sitterがサポートするものに限定

検索機能の使用方法

インデックス作成完了後、VJSPはcodebase_searchツールを使用して関連コードを検索できます。

クエリの例

  • 「ユーザー認証はどのように処理されているか?」
  • 「データベース接続設定」
  • 「エラー処理パターン」
  • 「APIエンドポイントの定義」

本ツールはVJSPに対して以下の情報を提供します。

  • 関連するコードスニペット(設定した最大検索結果数まで)
  • ファイルパスと行番号
  • 類似度スコア
  • コンテキスト情報

検索結果の設定

最大検索結果数の設定を調整することで、返却される検索結果の件数を制御できます。

  • デフォルト:50件
  • 設定範囲:10~200件
  • パフォーマンス:値を小さくするとレスポンス速度が向上
  • 網羅性:値を大きくするとより多くのコンテキストが得られるが、レスポンスが遅くなる可能性がある

プライバシーとセキュリティ

  • コードのローカル保持:埋め込み生成のために送信されるのは、少量のコードスニペットのみ
  • 埋め込みの性質:数値データであり、人間が読み取り可能な形式ではない
  • セキュアなストレージ:APIキーはVS CodeおよびIDEAのストレージ内で暗号化されて保存
  • アクセス制御:既存のファイルアクセス権限を尊重