セマンティック検索
- プラン: Premium、Ultimate
- アドオン: GitLab Duo Core、Pro、またはEnterprise
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
- ステータス: ベータ版
セマンティック検索はAIを使用して、キーワードのマッチングではなく、意味に基づいてリポジトリ内の関連するスニペットを検索します。
セマンティック検索は、コードベースをベクター埋め込みに変換し、これらの埋め込みをベクターデータベースに格納します。検索クエリも埋め込みに変換され、codeコードの埋め込みと比較して、意味的に最も類似した結果を見つけます。このアプローチでは、キーワードが一致しない場合でも、関連するcodeコードが見つかります。
この機能の改善は、エピック18018およびエピック20110で提案されています。
前提条件
- 次のいずれかを設定します:
- GitLab AIゲートウェイへのkeyアクセス。
- 埋め込み生成のためにVertex AI
text-embedding-005モデルへのkeyアクセス権を持つ、セルフホストAIゲートウェイ。
- 次の機能をオンにします:
- GitLab.comの場合、トップレベルネームスペースの実験機能をオンにします。
- GitLabセルフマネージドの場合、インスタンスのGitLab Duoの実験機能とbetaベータ機能をオンにします。
- プロジェクトに対してGitLab Duoをオンにします。
- サポートされているベクターストアを設定します:
- Elasticsearch 8.0以降。
- OpenSearch 2.0以降。
セマンティック検索を有効にする
UIを使用する場合
GitLabインスタンスが高度な検索にElasticsearchまたはOpenSearchを使用している場合は、同じクラスターに接続することで、セマンティック検索を有効にできます:
- 右上隅で、管理者を選択します。
- 設定 > 検索を選択します。
- セマンティック検索を展開します。
- 拡張検索クラスターに接続を選択します。
Railsコンソールを使用
ElasticsearchまたはOpenSearchのカスタムベクターストア接続を作成するには、Railsコンソールで、adapterとoptionsを使用して接続を作成します。
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アダプター。使用可能な値は、typhoeusとnet_httpです。 |
client_request_timeout | 整数 | いいえ | 30 | リクエストのtimeoutタイムアウト(秒単位)。 |
retry_on_failure | 整数 | いいえ | 0 | fail失敗時の再試行回数。 |
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アダプター。使用可能な値は、typhoeusとnet_httpです。 |
client_request_timeout | 整数 | いいえ | 30 | リクエストのtimeoutタイムアウト(秒単位)。 |
retry_on_failure | 整数 | いいえ | 0 | fail失敗時の再試行回数。 |
debug | ブール値 | いいえ | false | デバッグロギングを有効にします。 |
aws | ブール値 | いいえ | false | AWS署名バージョン4署名を有効にします。 |
aws_region | 文字列 | いいえ | なし | OpenSearchドメインのAWSリージョン。 |
aws_access_key | 文字列 | いいえ | なし | AWSアクセスキーID。 |
aws_secret_access_key | 文字列 | いいえ | なし | AWSシークレットアクセスキー。 |
セマンティック検索を使用する
セマンティック検索は、GitLab MCPサーバーツールとして利用できます。このツールの使用方法の詳細については、semantic_code_searchを参照してください。
GitLabプロジェクトでセマンティック検索を初めて使用する場合:
- リポジトリcodeコードがインデックス作成され、ベクター埋め込みに変換されます。
- これらの埋め込みは、構成されたベクターストアに格納されます。
- codeコードがデフォルトブランチにマージされると、更新は段階的に処理されます。
最初インデックス作成は、リポジトリのサイズに応じて数分かかる場合があります。