正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。
ドキュメントに関する現在のご利用体験についてお聞かせください。アンケートにご協力ください

セマンティック検索の管理

  • プラン: Premium、Ultimate
  • アドオン: GitLab Duo Core、Pro、またはEnterprise
  • 提供形態: GitLab Self-Managed
  • ステータス: ベータ版

ユーザードキュメントについては、セマンティック検索を参照してください。

セマンティック検索を使用すると、AIネイティブなGitLab Duo機能は、リポジトリ内の関連するコードスニペットを見つけることができます。

前提条件

ベクターストレージ

大規模なリポジトリにはElasticsearchまたはOpenSearchを使用してください。pgvector付きのPostgreSQLは、少数の小さなリポジトリがあるセットアップのみに使用してください。インデックス作成およびクエリのパフォーマンスは、pgvectorで制限される可能性があります。

詳細検索のクラスターに接続する

Your GitLabインスタンスがElasticsearchまたはOpenSearchを詳細検索に使用している場合、同じクラスターに接続することでセマンティック検索を有効にできます:

  1. 右上隅で、管理者を選択します。
  2. 左サイドバーで、設定 > 検索を選択します。
  3. セマンティック検索を展開します。
  4. ベクターストレージで、設定するを選択します。
  5. ベクターストレージページで、Advanced search clusterの下にある接続を選択します。

カスタムベクターストアを設定する

カスタムベクターストア接続を設定するには:

  1. 右上隅で、管理者を選択します。
  2. 左サイドバーで、設定 > 検索を選択します。
  3. セマンティック検索を展開します。
  4. ベクターストレージで、設定するを選択します。
  5. Search adapterドロップダウンリストから、ElasticsearchOpenSearch、またはPostgreSQLを選択します。
  6. アダプターのフィールドを完了します。
  7. 変更を保存を選択します。

Elasticsearch

設定説明
URLElasticsearchクラスターのURLをコンマ区切りで入力します(例: http://localhost:9200, http://localhost:9201)。
ユーザー名パスワードで保護されたElasticsearchサーバーのユーザー名。
パスワードパスワードで保護されたElasticsearchサーバーのパスワード。

OpenSearch

設定説明
URLOpenSearchクラスターのURLをコンマ区切りで入力します(例: http://localhost:9200, http://localhost:9201)。
ユーザー名パスワードで保護されたOpenSearchサーバーのユーザー名。
パスワードパスワードで保護されたOpenSearchサーバーのパスワード。

AWS OpenSearch Serviceを使用するには、IAM認証情報でAWS OpenSearchを使用しますを選択し、フィールドに入力します:

設定説明
AWSリージョンOpenSearchドメインのAWSリージョン。
AWSアクセスキーAWSアクセスキーID。ロールインスタンスの認証情報を使用していない場合にのみ必要です。
AWSシークレットアクセスキーAWSシークレットアクセスキー。ロールインスタンスの認証情報を使用していない場合にのみ必要です。
AWSのRole ARNアカウント間のAssumeRole認可のAWS IAMロールARN。

PostgreSQL with pgvector

前提条件:

  • PostgreSQLデータベースでpgvector拡張機能を有効にします:

    CREATE EXTENSION vector;
設定説明
ホストPostgreSQLサーバーのホスト名。
ポートPostgreSQLサーバーのポート。デフォルトは5432です。
データベースPostgreSQLデータベースの名前。
ユーザー名PostgreSQLユーザー名。
パスワードPostgreSQLパスワード。

埋め込みモデルを設定する

埋め込みモデルを設定するには:

  1. 右上隅で、管理者を選択します。
  2. 左サイドバーで、設定 > 検索を選択します。
  3. セマンティック検索を展開します。
  4. Code embeddingsについては、モデルを設定を選択します。すでに埋め込みモデルを設定している場合は、代わりにモデルの変更が表示されます。
  5. Semantic search code embeddingsページで、埋め込みモデル、埋め込みディメンション、およびチャンキング戦略を選択します。
  6. 埋め込みを設定するを選択します。すでに埋め込みモデルを設定している場合は、代わりに埋め込みを更新し、バックフィル処理を開始しますが表示されます。

埋め込みモデルまたはディメンションを変更すると、コードベースのサイズによっては数時間かかるバックフィルが実行されます。この処理中もセマンティック検索は引き続き利用可能です。

埋め込みモデル

GitLab管理モデル

前提条件:

GitLab管理モデルは、GitLab AIゲートウェイで提供されます。Gemini Enterprise Agent Platformによって提供されるtext-embedding-005モデルを選択します。

GitLab Duo Self-HostedセットアップでのGitLab管理モデルの詳細については、ハイブリッドAIゲートウェイおよびモデルの設定を参照してください。

GitLabが選択したモデルを非推奨にした場合、ご自身で別のモデルに切り替える必要があります。

セルフホストモデル

前提条件:

セルフホストモデルは、独自のインフラストラクチャでホストされる AIモデルです。

セルフホストモデルを選択するには:

  1. GitLab Duo Self-Hostedをセットアップします。
  2. モデルファミリーにEMBEDDINGを指定して、セルフホストモデルを追加します。

チャンク戦略

チャンク戦略は、コードファイルを埋め込み用のより小さなスニペットに分割するために使用されるアルゴリズムです。次のいずれかの戦略を選択します:

  • コードバイト: コードの構造やセマンティクスを考慮せずに、コードを固定サイズのバイトチャンクに分割します。チャンクサイズは、チャンクあたりの最大バイト数を指します。次の場合にこの戦略を使用します:
    • より高速なインデックス作成と、より予測可能なチャンクサイズ。
    • 多様なファイルタイプと言語を持つリポジトリ。
  • コードpre-BERT: BERTベースの埋め込みモデル用に最適化されたセマンティック境界を使用してコードを分割します。チャンクサイズは、チャンクあたりの最大トークン数を指します。次の場合にこの戦略を使用します:
    • 検索品質の向上と、コード構造を尊重したより意味のあるチャンク。
    • 整然としたコードを持つリポジトリ。

チャンク戦略は、埋め込みモデルを初めて設定するときにのみ選択できます。インデックス作成が開始された後にチャンク戦略を変更するには、インスタンスを完全に再インデックス作成する必要があります。自動再インデックス作成のサポートは、イシュー600200およびイシュー602138で提案されています。

セマンティック検索ステータスの確認

セマンティック検索のステータス(インデックス作成ステータス、ベクターストア接続の詳細、リポジトリ統計、埋め込みキューサイズなど)を確認するには、このRakeタスクを実行します:

sudo gitlab-rake gitlab:semantic_search:code:info

ステータスを継続的に監視するには、監視間隔を秒単位で指定します:

sudo gitlab-rake "gitlab:semantic_search:code:info[5]"

このタスクは、指定された間隔で出力を更新します。タスクを停止するには、Control+Cを押します。

デッドキューの管理

前提条件:

  • admin_modeai_featuresapiのスコープを持つパーソナルアクセストークン。

埋め込み生成が繰り返し失敗すると、手動介入のためにアイテムがデッドキューに移動されます。デッドキューのサイズは、ステータスRakeタスク出力のEmbedding Queuesセクションで確認できます。

デッドキューのクリア

デッドキューからすべてのアイテムを削除するには、このコマンドを実行します:

curl --request DELETE \
  --header "PRIVATE-TOKEN: <your_token>" \
  "https://gitlab.example.com/api/v4/admin/active_context/dead_queue"

デッドキューの再実行

デッドキューアイテムを別の試行のために処理キューに戻すには、queueパラメータを使用してターゲットを指定します。有効な値はretry_queuecodecode_backfillです。

デッドキューに再度失敗する前に、もう一度処理を試行するには、retry_queueを使用します:

curl --request POST \
  --header "PRIVATE-TOKEN: <your_token>" \
  --data "queue=retry_queue" \
  "https://gitlab.example.com/api/v4/admin/active_context/dead_queue/replay"

メインのコードキューにアイテムを追加するには、codeを使用します:

curl --request POST \
  --header "PRIVATE-TOKEN: <your_token>" \
  --data "queue=code" \
  "https://gitlab.example.com/api/v4/admin/active_context/dead_queue/replay"