Databricks Vector Searchは、Unity Catalogと統合されたマネージドベクトルデータベースです。テキストや画像などの非構造化データをベクトル(Embedding)に変換し、 意味的な類似度に基づく検索を提供します。RAG(Retrieval-Augmented Generation)パイプラインの検索コンポーネントとして中核的な役割を担い、 GenAI Engineer試験ではインデックスタイプの選択やクエリ設計が頻出です。
従来のキーワード検索(BM25等)はクエリとドキュメントの語句一致に依存するため、 「機械学習」と「ML」のような表現の揺れに対応できません。 Vector Searchはテキストを高次元ベクトルに変換し、コサイン類似度やドット積で意味的な近さを計算するため、 同義語・言い換え・多言語にも対応した検索が可能です。
Vector Searchには2種類のインデックスタイプがあり、データの管理方法とユースケースが異なります。GenAI Engineer試験ではシナリオに応じた適切なインデックスタイプの選択が問われます。
| 比較項目 | Delta Sync Index | Direct 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を自動計算)
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# 事前計算した 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 の作成
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"]}
)| モデル | 提供元 | 次元数 | Foundation Model API対応 | 特徴 |
|---|---|---|---|---|
| GTE-large-en | Databricks | 1024 | 対応 | Delta Sync Indexの自動計算で指定可能 |
| BGE-large-en | BAAI(オープンソース) | 1024 | Model Servingで利用可 | セルフホスト可能、コスト効率良い |
| text-embedding-3-large | OpenAI | 3072 | External Modelで利用可 | 高精度、可変次元数 |
| Cohere embed-v3 | Cohere | 1024 | External Modelで利用可 | 多言語対応、検索/分類用の最適化 |
Delta Sync Indexの自動Embedding計算モードを使う場合、Foundation Model APIで提供されているモデル(GTE等)をembedding_model_endpoint_name で指定します。外部モデルを使いたい場合はExternal Model機能でエンドポイントを作成し、 事前にEmbeddingを計算してDelta Tableに格納する事前計算列モードを選択します。
Vector Search / GenAI Engineer
問題 1
あるチームが社内ドキュメント(Delta Table に格納済み)を使ったRAGチャットボットを構築しています。ドキュメントは日次でETLパイプラインにより更新され、Embeddingの計算はDatabricksプラットフォーム内で完結させたいと考えています。最も適切なVector Searchの構成はどれですか?
正解: 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の自動同期処理にも別途コンピュートコストが発生する点に注意が必要です。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Databricks資格一覧|全7試験・難易度・勉強法
Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...
Databricks試験の難易度ランキング|全7資格を徹底比較
Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...
Databricks資格の勉強方法|最短合格ルートと学習時間の目安
Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...
Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略
Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...
Databricks Data Engineer Professional完全解説|上級試験の攻略法
Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...