Databricks

Vector Searchとは?Databricksのベクトル検索

2026-03-21
更新: 2026-03-27
NicheeLab編集部

Databricks Vector Searchは、Unity Catalogと統合されたマネージドベクトルデータベースです。テキストや画像などの非構造化データをベクトル(Embedding)に変換し、 意味的な類似度に基づく検索を提供します。RAG(Retrieval-Augmented Generation)パイプラインの検索コンポーネントとして中核的な役割を担い、 GenAI Engineer試験ではインデックスタイプの選択やクエリ設計が頻出です。

Vector Searchの概要

従来のキーワード検索(BM25等)はクエリとドキュメントの語句一致に依存するため、 「機械学習」と「ML」のような表現の揺れに対応できません。 Vector Searchはテキストを高次元ベクトルに変換し、コサイン類似度やドット積で意味的な近さを計算するため、 同義語・言い換え・多言語にも対応した検索が可能です。

Databricks Vector Searchの特徴

  • マネージド型: インデックスの構築・スケーリング・可用性をDatabricksが自動管理
  • Unity Catalog統合: テーブルレベルのアクセス制御・リネージ追跡がVector Searchにも適用
  • Delta Lake連携: Delta Tableをソースとした自動同期インデックス(Delta Sync Index)を提供
  • Foundation Model API統合: Embeddingの計算をDatabricks内で完結可能
  • メタデータフィルタリング: ベクトル類似度検索にメタデータ条件を組み合わせたハイブリッド検索

インデックスタイプの比較

Vector Searchには2種類のインデックスタイプがあり、データの管理方法とユースケースが異なります。GenAI Engineer試験ではシナリオに応じた適切なインデックスタイプの選択が問われます。

比較項目Delta Sync IndexDirect Vector Access Index
データソースDelta Table(Unity Catalog管理)REST API経由で直接挿入
同期方式ソーステーブルの変更を自動検知・同期手動でupsert/delete APIを呼び出し
Embedding計算自動計算モード(モデル指定)or 事前計算列事前計算済みベクトルのみ受付
更新頻度継続的(Continuous)or トリガーAPIコール時のみ
運用負荷低い(自動同期)高い(同期ロジックの実装が必要)
適用シーン社内ドキュメントRAG、ナレッジベース検索外部システム連携、リアルタイムベクトル投入

Delta Sync Indexの自動計算モードでは、テキスト列を指定するだけでDatabricksが自動的にEmbeddingを計算してインデックスに格納します。事前計算列モードでは、自分でEmbeddingを計算してDelta Tableに格納した列をインデックスの対象として指定します。

エンドポイントの作成

Vector Search Endpointは、インデックスをホストするコンピュートリソースです。エンドポイントを作成し、その上にインデックスを関連付けます。

from databricks.vector_search.client import VectorSearchClient

vsc = VectorSearchClient()

# Vector Search エンドポイントの作成
vsc.create_endpoint(
    name="my_vs_endpoint",
    endpoint_type="STANDARD"
)

# エンドポイントの状態確認
endpoint = vsc.get_endpoint("my_vs_endpoint")
print(endpoint["endpoint_status"]["state"])  # "ONLINE"

インデックスの作成

Delta Sync Index(自動Embedding計算)

# Delta Sync Index の作成(Embeddingを自動計算)
index = vsc.create_delta_sync_index(
    endpoint_name="my_vs_endpoint",
    index_name="catalog.schema.doc_index",
    source_table_name="catalog.schema.documents",
    primary_key="doc_id",
    pipeline_type="TRIGGERED",          # "TRIGGERED" or "CONTINUOUS"
    embedding_source_column="content",  # テキスト列を指定
    embedding_model_endpoint_name="databricks-gte-large-en"
)

# インデックスの状態確認
print(index.describe()["status"]["ready"])  # True

Delta Sync Index(事前計算Embedding)

# 事前計算した Embedding 列を持つ Delta Table からの Index 作成
index = vsc.create_delta_sync_index(
    endpoint_name="my_vs_endpoint",
    index_name="catalog.schema.doc_index_precomputed",
    source_table_name="catalog.schema.documents_with_embeddings",
    primary_key="doc_id",
    pipeline_type="TRIGGERED",
    embedding_dimension=1024,
    embedding_vector_column="embedding_vector"
)

Direct Vector Access Index

# Direct Vector Access Index の作成
index = vsc.create_direct_access_index(
    endpoint_name="my_vs_endpoint",
    index_name="catalog.schema.realtime_index",
    primary_key="item_id",
    embedding_dimension=1024,
    embedding_vector_column="embedding",
    schema={
        "item_id": "string",
        "embedding": "array<float>",
        "category": "string",
        "title": "string"
    }
)

# ベクトルの直接挿入
index.upsert([
    {"item_id": "001", "embedding": [0.1, 0.2, ...], "category": "tech", "title": "..."},
    {"item_id": "002", "embedding": [0.3, 0.1, ...], "category": "science", "title": "..."}
])

類似度検索クエリ

インデックスに対してクエリを実行し、類似度の高い上位K件のドキュメントを取得します。テキストクエリ(自動Embedding計算)またはベクトルクエリ(事前計算済み)のいずれかを使用できます。

# テキストクエリによる類似度検索(Delta Sync Index + 自動Embedding計算)
results = index.similarity_search(
    query_text="Databricksのクラスター管理について",
    columns=["doc_id", "content", "source_url"],
    num_results=5
)

# 検索結果の処理
for doc in results["result"]["data_array"]:
    print(f"Score: {doc[-1]:.4f} | ID: {doc[0]} | Content: {doc[1][:100]}...")

# ベクトルクエリによる類似度検索(Direct Vector Access Index)
results = index.similarity_search(
    query_vector=[0.1, 0.2, 0.3, ...],  # 事前計算済みベクトル
    columns=["item_id", "title", "category"],
    num_results=10
)

メタデータフィルタリング

ベクトル類似度検索にメタデータ条件を追加することで、検索結果を特定のカテゴリや期間に限定できます。RAGパイプラインにおいて、ユーザーの権限に基づいたドキュメントフィルタリングやカテゴリ絞り込みに活用します。

# メタデータフィルタリング付き検索
results = index.similarity_search(
    query_text="セキュリティポリシーについて",
    columns=["doc_id", "content", "department", "updated_at"],
    num_results=5,
    filters={"department": "engineering", "updated_at >=": "2026-01-01"}
)

# 複数条件のフィルタリング
results = index.similarity_search(
    query_text="データパイプラインの設計",
    columns=["doc_id", "content", "category"],
    num_results=5,
    filters={"category IN": ["architecture", "data-engineering"]}
)

Embeddingモデルの比較

モデル提供元次元数Foundation Model API対応特徴
GTE-large-enDatabricks1024対応Delta Sync Indexの自動計算で指定可能
BGE-large-enBAAI(オープンソース)1024Model Servingで利用可セルフホスト可能、コスト効率良い
text-embedding-3-largeOpenAI3072External Modelで利用可高精度、可変次元数
Cohere embed-v3Cohere1024External Modelで利用可多言語対応、検索/分類用の最適化

Delta Sync Indexの自動Embedding計算モードを使う場合、Foundation Model APIで提供されているモデル(GTE等)をembedding_model_endpoint_name で指定します。外部モデルを使いたい場合はExternal Model機能でエンドポイントを作成し、 事前にEmbeddingを計算してDelta Tableに格納する事前計算列モードを選択します。

GenAI Engineer試験の出題ポイント

  • インデックスタイプの選択: シナリオに応じたDelta Sync vs Direct Vector Accessの判断
  • Embeddingモード: 自動計算モードと事前計算列モードの使い分け
  • pipeline_type: CONTINUOUSとTRIGGEREDの違い(リアルタイム性 vs コスト)
  • メタデータフィルタリング: セキュリティ・カテゴリ絞り込みの実装パターン
  • Unity Catalog統合: Vector SearchインデックスへのACL適用

サンプル問題

Vector Search / GenAI Engineer

問題 1

あるチームが社内ドキュメント(Delta Table に格納済み)を使ったRAGチャットボットを構築しています。ドキュメントは日次でETLパイプラインにより更新され、Embeddingの計算はDatabricksプラットフォーム内で完結させたいと考えています。最も適切なVector Searchの構成はどれですか?

  1. Direct Vector Access Indexを作成し、ETLパイプラインの最後にREST APIでベクトルをupsertする
  2. Delta Sync Indexを自動Embedding計算モードで作成し、pipeline_typeをTRIGGEREDに設定する
  3. Delta Sync Indexを事前計算列モードで作成し、外部のEmbedding APIを手動で呼び出す
  4. Direct Vector Access Indexを作成し、Foundation Model APIでEmbeddingを計算後にバッチ挿入する

正解: B

ソースがDelta Tableで日次更新されるため、Delta Sync Indexが適しています。Databricksプラットフォーム内でEmbedding計算を完結させたいという要件には、自動Embedding計算モード(embedding_source_columnでテキスト列を指定し、embedding_model_endpoint_nameでFoundation Model APIのモデルを指定)が最適です。日次更新であればTRIGGEREDで十分です。Direct Vector Access Index(A・D)はDelta Tableとの自動同期ができず手動管理が必要になります。事前計算列モード(C)は外部APIの管理が追加で必要になり要件に合いません。

よくある質問

Delta Sync IndexとDirect Vector Access Indexはどう使い分けますか?

Delta Sync Indexは、ソースとなるDelta Tableが更新されると自動的にインデックスが同期されるため、社内ドキュメント検索やRAGパイプラインなど定期的にデータが更新されるユースケースに適しています。Direct Vector Access IndexはREST APIで直接ベクトルを挿入・更新するため、外部システムからリアルタイムにベクトルを投入したい場合や、Databricks外で計算済みのEmbeddingを使いたい場合に選択します。

Vector SearchのエンドポイントとIndexの関係は何ですか?

Vector Search Endpointは、複数のVector Search Indexをホストするコンピュートリソースです。1つのエンドポイントに複数のインデックスを関連付けることで、リソースを効率的に共有できます。エンドポイントの作成はワークスペース単位で行い、インデックスはUnity Catalog配下のテーブルに対して作成します。エンドポイントのスケーリングはDatabricksが自動管理します。

Vector Searchの料金体系はどうなっていますか?

Vector Searchはサーバーレスコンピュートとして提供され、エンドポイントの稼働時間に対してDBU(Databricks Unit)で課金されます。インデックスのサイズやクエリ量に応じてエンドポイントが自動スケールするため、利用量に比例したコストになります。Delta Sync Indexの自動同期処理にも別途コンピュートコストが発生する点に注意が必要です。

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Databricks

Databricks資格一覧|全7試験・難易度・勉強法

Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...

Databricks

Databricks試験の難易度ランキング|全7資格を徹底比較

Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...

Databricks

Databricks資格の勉強方法|最短合格ルートと学習時間の目安

Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...

Databricks

Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略

Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...

Databricks

Databricks Data Engineer Professional完全解説|上級試験の攻略法

Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...

Databricksの記事一覧 (109件)
© 2026 NicheeLab All rights reserved.