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

セマンティックコード検索

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

セマンティックコード検索はAIを使用して、キーワードのマッチングではなく、意味に基づいてリポジトリ内の関連するスニペットを検索します。

セマンティックコード検索では、コードベースをベクター埋め込みに変換し、これらの埋め込みをベクターデータベースに保存します。検索クエリも埋め込みに変換され、コードの埋め込みと比較することで、意味的に最も近い結果を見つけます。このアプローチにより、キーワードが一致しない場合でも関連するコードを見つけることができます。

この機能に対する改善は、エピック18018およびエピック20110で提案されています。

前提条件

  • 次のいずれかが設定されていること:
  • 次の機能をオンにすること:
    • GitLab.comの場合、トップレベルネームスペースに対する実験的機能。
    • GitLab Self-Managedの場合、インスタンスに対するGitLab Duoの実験的機能およびベータ版機能。
  • プロジェクトでGitLab Duoがオンになっていること。
  • サポートされているベクターストアが設定されていること:
    • Elasticsearch 8.0以降。
    • OpenSearch 2.0以降。
  • 管理者アクセス権が必要です。

UIを使用する場合

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

  1. 右上隅で、管理者を選択します。
  2. 設定 > 検索を選択します。
  3. セマンティック検索を展開します。
  4. 拡張検索クラスターに接続を選択します。

Railsコンソールを使用する場合

ElasticsearchまたはOpenSearch用にカスタムベクターストア接続を作成するには、Railsコンソールで、adapteroptionsを使用して接続を作成します。

Elasticsearch

connection = Ai::ActiveContext::Connection.create!(
  name: "elasticsearch",
  options: { url: ["http://your-elasticsearch-url:9200"] },
  adapter_class: "ActiveContext::Databases::Elasticsearch::Adapter"
)
connection.activate!

接続オプション:

オプション必須デフォルト説明
url文字列の配列はいなしElasticsearchクラスターのURLの配列(例: ["http://localhost:9200"])。
client_adapter文字列いいえtyphoeus使用するHTTPアダプター。使用可能な値はtyphoeusnet_httpです。
client_request_timeout整数いいえ30リクエストのタイムアウト(秒)。
retry_on_failure整数いいえ0失敗時の再試行回数。
debugブール値いいえfalseデバッグログを有効にします。

OpenSearch

connection = Ai::ActiveContext::Connection.create!(
  name: "opensearch",
  options: { url: ["http://your-opensearch-url:9200"] },
  adapter_class: "ActiveContext::Databases::Opensearch::Adapter"
)
connection.activate!

接続オプション:

オプション必須デフォルト説明
url文字列の配列はいなしOpenSearchクラスターのURLの配列(例: ["http://localhost:9200"])。
client_adapter文字列いいえtyphoeus使用するHTTPアダプター。使用可能な値はtyphoeusnet_httpです。
client_request_timeout整数いいえ30リクエストのタイムアウト(秒)。
retry_on_failure整数いいえ0失敗時の再試行回数。
debugブール値いいえfalseデバッグログを有効にします。
awsブール値いいえfalseAWS Signature Version 4署名を有効にします。
aws_region文字列いいえなしOpenSearchドメインのAWSリージョン。
aws_access_key文字列いいえなしAWSアクセスキーID。
aws_secret_access_key文字列いいえなしAWSシークレットアクセスキー。

セマンティックコード検索は、GitLab MCPサーバーツールとして利用できます。このツールの使用方法の詳細については、semantic_code_searchを参照してください。

GitLabプロジェクトでセマンティックコード検索を初めて使用する場合:

  • リポジトリ内のコードのインデックスが作成され、ベクター埋め込みに変換されます。
  • これらの埋め込みは、設定済みのベクターストアに保存されます。
  • コードがデフォルトブランチにマージされると、更新は段階的に処理されます。

初回のインデックス作成には、リポジトリのサイズに応じて数分かかる場合があります。