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

セマンティック検索

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

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

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

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

前提条件

  • 次のいずれかを設定します:
  • 次の機能をオンにします:
    • GitLab.comの場合、トップレベルネームスペースの実験機能をオンにします。
    • GitLabセルフマネージドの場合、インスタンスのGitLab Duoの実験機能とbetaベータ機能をオンにします。
  • プロジェクトに対して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リクエストのtimeoutタイムアウト(秒単位)。
retry_on_failure整数いいえ0fail失敗時の再試行回数。
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リクエストのtimeoutタイムアウト(秒単位)。
retry_on_failure整数いいえ0fail失敗時の再試行回数。
debugブール値いいえfalseデバッグロギングを有効にします。
awsブール値いいえfalseAWS署名バージョン4署名を有効にします。
aws_region文字列いいえなしOpenSearchドメインのAWSリージョン。
aws_access_key文字列いいえなしAWSアクセスキーID。
aws_secret_access_key文字列いいえなしAWSシークレットアクセスキー。

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

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

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

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