IBM watsonx.ai Studio によるコード・リポジトリのインデックス作成

watsonx Code Assistant スタンダードプラン

IBM watsonx.ai Studioを使用してコード・リポジトリにインデックスを作成し、検索機能拡張世代(RAG)を有効にすることができます。

開始前に

  • ノートブックを実行する前に、 IBM Cloud に Milvus または Elasticsearch DB のインスタンスをプロビジョニングする。
  • ノートブックを実行するために、 watsonx.ai Studioのインスタンスをプロビジョニングします。 watsonx.ai Studioインスタンスを作成するには、 watsonx.ai Studioカタログを 参照してください。
  • コード内の関数の説明を生成するために、 watsonx Code Assistant にアクセスするための API キーがあることを確認してください。 説明は、より良い検索結果のためにコードと一緒にインデックス化されている。 詳細については、 IBM Cloud APIキーの作成を 参照してください。

インデックスの計画

RAGを使用する際、 watsonx Code Assistant のパフォーマンスを最適化するには、効果的なインデックス作成が不可欠です。 リポジトリや文書のインデックスを作成する際には、以下の要素を考慮してください:

  • ディスクの記憶容量が、インデックスを作成するコンテンツの2倍のサイズであることを確認する。

  • 既存のコードを再利用して新しいコードを生成したり、特定の関数の実装を探したり、コード・ベースに関連するハウツー質問に答えたりするときに、コード・リポジトリにインデックスを付ける。 メイン・コード・プロジェクトと、API実装などの依存関係を含めることができます。

  • watsonx Code Assistant、これらの文書に基づくクエリに対応する必要がある場合、製品やプロジェクト文書、テクニカルガイド、設計文書などの文書リポジトリをインデックス化する。

  • ストレージの使用量を減らし、インデックスの作成と保守に必要な時間を最小限にするために、めったに使用されないコード・リポジトリやドキュメントにはインデックスを作成しない。

  • 特にソースコードでは、特定のリポジトリにコンテキスト検索を限定するために、リポジトリごとに1つのインデックスを使用します。

  • すべてのドキュメントを共通して検索する場合は、複数のドキュメント・リポジトリを1つのインデックスにまとめる。 リポジトリ間でキーワードの重複が大きく、異なるチームやユーザーが特定のドキュメント・リポジトリのコンテキストを検索する必要がある場合は、別のインデックスを作成することができます。

  • 異なるリポジトリからのコードを同じインデックスにマージしないでください。 マージされたコードは、プロンプトに対する応答生成の精度を低下させ、ユーザーのアクセス制限が適切に実装されていない場合、コードの不正アクセスにつながる。

  • インデックス作成プロセスにおいて、セキュリティと権限を正しく管理していることを確認してください。 さまざまな使用シナリオについては、 使用シナリオを 参照。

  • 機密または機微なコンテンツのインデックスを作成する前に、必要な組織の承認がすべて得られていることを確認してください。 RAGに使用されるソースコードとドキュメントは、プレーンテキストおよびベクター化されたフォーマットとして、 GitHub リポジトリの外部にあるベクターストアに保存されます。

コードリポジトリの索引付け

  1. このプロジェクトにログイン watsonx Code Assistant、RAGベクトルストアを作成する

  2. **「Create Project」**をクリックします。

  3. Storage フィールドで Cloud Object Storage インスタンスを選択する。 ドロップダウンリストに Cloud Object Storage インスタンスがない場合は、作成します。

  4. 「作成」 をクリックします。

  5. プロジェクトの Asset タブに移動し、 Populate vector store notebookをクリックします。

  6. Populate vector store ノートブックの指示に従って、コードや文書に索引を付ける。