メインコンテンツまでスキップ

Databricksアプリに一括検索インデックス リソースを追加する

トレンド検索インデックスをDatabricks Apps リソースとして追加すると、アプリケーションでセマンティック検索と類似性に基づく検索が可能になります。 ベクトル検索インデックスは、高次元ベクトル埋め込みを保存およびクエリし、検索拡張生成 (RAG)、セマンティック検索、推奨システムなどのユースケースを強化します。

特権要件

横断検索インデックスにアクセスするには、アプリのサービスプリンシパルは、親カタログに対するUSE CATALOG権限、親スキーマに対するUSE SCHEMA権限、およびインデックスに対するSELECT権限を持っている必要があります。 インデックス リソースを追加すると、 Databricksこれらの権限をアプリのサービスプリンシパルに自動的に付与します。

この自動付与が成功するには、権限ごとに次のいずれかが当てはまる必要があります。

  • USE CATALOGの場合: すべてのアカウント ユーザーがカタログに対してUSE CATALOG権限を持っているか、カタログに対してMANAGE権限を持っています。
  • USE SCHEMAの場合: すべてのアカウント ユーザーがスキーマに対するUSE SCHEMA権限を持っているか、またはスキーマに対するMANAGE権限を持っています。
  • SELECTの場合: すべてのアカウント ユーザーがインデックスに対してSELECT権限を持っているか、またはユーザーがインデックスに対してMANAGE権限を持っています。

これらの権限を使用して地下鉄検索インデックスをクエリする方法の詳細については、 「地下鉄検索インデックスをクエリする方法」を参照してください。

Unity Catalog の特権とセキュリティ保護可能なオブジェクトを参照してください。

トラフィック検索インデックス リソースを追加する

ログイン検索インデックスをリソースとして追加する前に、アプリのリソースの前提条件を確認してください。

  1. アプリを作成または編集するときは、 「構成」 ステップに移動します。

  2. [アプリ リソース] セクションで、 [+ リソースの追加] をクリックします。

  3. リソースの種類として 「サーチインデックス」 を選択します。

  4. ワークスペースで利用可能なインデックスから、「横断検索」インデックスを選択します。 インデックスはUnity Catalogにすでに存在している必要があります。

  5. アプリの権限レベルを選択します:

    • 選択可能: アプリに類似性検索のための地下鉄検索インデックスをクエリする権限を付与します。 SELECT 権限に対応します。
  6. (オプション) アプリ構成でインデックスを参照する方法であるカスタム リソース キーを指定します。デフォルトのキーはvector-search-indexです。

注記

人気検索インデックスは、タイプTABLE_ONLINE_VECTOR_INDEX_REPLICAまたはTABLE_ONLINE_VECTOR_INDEX_DIRECTのUnity Catalogテーブルです。 検索インデックスを選択すると、セマンティック検索操作をサポートする特別に構成されたテーブルが選択されます。

環境変数

暇検索インデックス リソースを使用してアプリをデプロイすると、 Databricks 、 valueFromフィールドを使用して参照できる環境変数を通じて完全な 3 レベルの名前を公開します。

構成例:

YAML
env:
- name: VECTOR_SEARCH_INDEX
valueFrom: vector-search-index # Use your custom resource key if different

アプリケーションでインデックスを使用する:

Python
import os
from databricks.sdk import WorkspaceClient

# Access the vector search index name
index_name = os.getenv("VECTOR_SEARCH_INDEX")

# Initialize workspace client
w = WorkspaceClient()

# Query the vector search index
results = w.vector_search_indexes.query_index(
index_name=index_name,
query_text="What is machine learning?",
num_results=10
)

# Process results
for result in results.manifest.columns:
print(f"Result: {result}")

詳細については、 「環境変数を使用してリソースにアクセスする」を参照してください。

一括検索インデックス リソースを削除する

アプリから検索インデックス リソースを削除すると、アプリのサービスプリンシパルはインデックスにアクセスできなくなります。 インデックス自体は変更されず、適切な権限を持つ他のユーザーやアプリケーションで引き続き利用できます。

ベストプラクティス

地下鉄検索インデックス リソースを使用する場合は、次の点を考慮してください。

  • インデックスが他のテーブルを参照している場合、アプリのサービスプリンシパルが基になるデータソースにアクセスできることを確認してください。
  • クエリのパフォーマンスを監視し、応答時間が低下する場合はインデックス構成または埋め込みモデルを調整します。
  • 埋め込みをソース データと同期させるには、インデックス更新スケジュールを検討してください。
  • 埋め込みモデルに基づいて、適切な類似度メトリクス (コサイン、ユークリッド、ドット製品) を使用します。