メインコンテンツへジャンプ
Engineering blog

Databricks Vector Search パブリックプレビューのご紹介

アキル・グプタ
セルゲイ・ツァレフ
エリック・ピーター
Share this post

昨日発表した RAG(Retrieval Augmented Generation)に続き、本日、Databricks Vector Searchのパブリックプレビューを発表します。6月に開催されたData + AI Summitでは、限られたお客様を対象としたプライベートプレビューを発表しましたが、今回はすべてのお客様にご利用いただけるようになりました。Databricks Vector Searchは、PDF、Officeドキュメント、Wikiなどの非構造化ドキュメントに対する類似検索を通じて、開発者がRAG(Retrieval Augmented Generation)や生成AIアプリケーションの精度を向上させることを可能にします。Vector Search は Databricks Data Intelligence Platform の一部であり、RAG およびジェネレーティブ AI アプリケーションが Lakehouse に保存された独自データを高速かつ安全に使用し、正確なレスポンスを簡単に提供できるようにします。

Databricks Vector Search は、高速で安全、かつ使いやすいように設計されています。

  • 高速かつ低TCO - Vector Searchは、他のプロバイダよりもレイテンシが最大5倍低く、低TCOで高いパフォーマンスを提供するように設計されています。
  • シンプルで迅速な開発者エクスペリエンス - Vector Searchは、1クリックであらゆるDelta Tableをベクターインデックスに同期することが可能です。
  • 統一されたガバナンス - Vector Searchは、データインテリジェンスプラットフォームと同じUnity Catalogベースのセキュリティとデータガバナンスツールを使用します。
  • サーバーレススケーリング - Vector Searchのサーバーレスインフラストラクチャは、インスタンスやサーバータイプを設定することなく、ワークフローに合わせて自動的にスケールします。

ベクトル検索(Vector Search)とは?

ベクトル検索は、情報検索やRAG(Retrieval Augmented Generation)アプリケーションで使用される手法で、クエリとの類似性に基づいて文書やレコードを検索します。ベクター検索は、「金曜日の夜に似合う青い靴」のような平易な言葉のクエリを入力し、関連する結果を返すことができる理由です。 


技術大手は、製品体験を強化するために長年ベクトル検索を使用してきました。ジェネレーティブAIの出現により、これらの機能はついにすべての組織に民主化されました。
ベクトル検索の仕組みは以下の通りです:

埋め込み: ベクトル検索では、データとクエリは、生成AIモデルからの埋め込みと呼ばれる多次元空間のベクトルとして表現されます。
ベクトル検索を使って、大規模な単語コーパスから意味的に類似した単語を見つけたいという簡単な例を見てみましょう。コーパスに'dog'という単語をクエリすると、'puppy'のような単語が返されます。しかし、'car'と検索すれば、'van'のような単語を検索したいわけです。従来の検索では、同義語や「類似語」のリストを管理する必要がありますが、これは生成や拡張が困難です。ベクトル検索を使うためには、代わりに生成AIモデルを使って、これらの単語をエンベッドと呼ばれるn次元空間のベクトルに変換します。これらのベクトルは、「dog」と「puppy」のような意味的に類似した単語は、「dog」と「car」のような単語よりもn次元空間において近いという性質を持ちます。

ベクトル

類似度の計算: クエリに関連する文書を見つけるために、クエリベクトルと各文書ベクトル間の類似度を計算し、n次元空間内でどれだけ近いかを測定します。これは通常、2つのベクトル間の角度の余弦を測定するコサイン類似度を使用して行われます。効率的な方法で類似ベクトルを見つけるために使用されるアルゴリズムはいくつかあり、HNSWベースのアルゴリズムは一貫してクラス最高のパフォーマンスです。

アプリケーション: ベクトル検索には多くのユースケースがあります:

  • レコメンデーション - パーソナライズされた、コンテキストを意識したレコメンデーションをユーザーに提供します。
  • RAG - RAGアプリケーションがユーザーの質問に答えるために、関連する非構造化ドキュメントを提供します。
  • セマンティック検索 - プレーン・ランゲージの検索クエリを可能にし、関連性の高い結果を提供します。
  • 文書クラスタリング - データ間の類似点と相違点を理解します。

 

なぜDatabricks Vector Searchはお客様に愛されているのでしょうか?

"Databricks の強力なソリューションを活用し、Lippert のカスタマーサポート業務を変革できることを嬉しく思います。私たちのような規模の企業にとって、ダイナミックなコールセンター環境を管理する上では、典型的にオペレーターの入れ替わりが激しい環境の中で、新しいオペレーターを素早く対応させるという大きな課題があります。 Databricks は、この問題への解決の糸口を提供してくれます。ーVector Search を利用してオペレーターのアシストを設定することで、オペレーターが顧客からの問い合わせに対する回答を迅速に見つけられるようにするー 製品マニュアル、YouTubeビデオ、サポート事例などのコンテンツをVector Searchに取り込むことで、Databricksはオペレーターが必要な知識をすぐに得られるようにしています。この革新的なアプローチはLippert社にとって画期的なもので、効率を高め、カスタマーサポート体験を向上させています。" -Chris Nishnick, Artificial Intelligence, Lippert


自動データ取り込み

ベクターデータベースが情報を格納する前に、データ取り込みパイプラインが必要です。このパイプラインでは、さまざまなソースからの未処理の生データをクリーニングし、処理(解析/チャンク)し、AIモデルを組み込んでから、データベースにベクターとして格納する必要があります。 別のデータ取り込みパイプラインを構築して維持するこのプロセスは、高価で時間がかかり、貴重なエンジニアリングリソースの時間を奪います。 Databricks Vector SearchはDatabricks Data Intelligence Platformと完全に統合されており、新たなデータパイプラインを構築・維持することなく、自動的にデータを取り込み、そのデータを埋め込むことができます。

Delta Sync APIは、ソースデータとベクターインデックスを自動的に同期します。ソースデータが追加、更新、削除されると、対応するベクターインデックスが自動的に更新されます。Vector Searchは、失敗を管理し、再試行を処理し、バッチサイズを最適化します。 これらの最適化により、エンベッディング・モデル・エンドポイントの利用率が向上するため、総所有コストが削減されます。

簡単な3ステップでベクトルインデックスを作成する例を見てみましょう。全てのVector Search機能は、REST API、Python SDK、またはDatabricks UIから利用可能です。

ステップ 1. UI または REST API/SDK を使用して、ベクトル・インデックスの作成とクエリに使用するベクトル検索エンドポイントを作成します。

ベクトル・インデックス
from databricks.vector_search.client import VectorSearchClient
vsc = VectorSearchClient()
vsc.create_endpoint(name="endpoint", endpoint_type="STANDARD")

ステップ2.  ソースデータでデルタテーブルを作成した後、埋め込むデルタテーブルのカラムを選択し、データの埋め込みを生成するために使用されるModel Servingエンドポイントを選択します。 

埋め込みモデルには、以下のようなものがあります:

  • ファインチューニングしたモデル
  • 既製のオープンソースモデル(E5、BGE、InstructorXLなど)
  • API経由で利用可能な独自の埋め込みモデル(OpenAI、Cohere、Anthropicなど)

 

検索インデックス
#The table we'd like to index
source_table_fullname = "acme.product.documentation"

#Name of the vector index
vs_index_fullname = "acme.product.documentation_vs_index"
#Name of the embedding remote endpoint
embedding_model_endpoint_name="embeddings_endpoint"

index=vsc.create_delta_sync_index(
endpoint_name=vs_endpoint_name,
 index_name=vs_index_fullname,
       source_table_name=source_table_fullname,
       pipeline_type="CONTINUOUS",
       primary_key="id",
       embedding_model_endpoint_name=proxy_endpoint_name,
       embedding_source_column="content"
   )

Vector Searchは、Delta Tableでエンベッディングを管理したり、REST APIを使用してデータ取り込みパイプラインを作成したいお客様のために、高度なモードも提供しています。 例については、Vector Searchのドキュメントをご覧ください。

 

ステップ3. インデックスの準備ができたら、クエリを作成して、クエリに関連するベクトルを見つけることができます。これらの結果は、RAG(Retrieval Augmented Generation)アプリケーションに送信できます。

question = "How can I track billing usage on my workspaces?"

results = index.similarity_search(
 query_text=question,
 columns=["url", "content"],
 num_results=1)
"この製品は使いやすく、数時間で稼働させることができました。全てのデータは既にDeltaにあるので、Vector Searchとdelta syncの統合された管理エクスペリエンスは素晴らしいです。"
—- Alex Dalla Piazza (EQT Corporation)“

一元化されたガバナンス

企業組織は、ユーザーがGenerative AIモデルを使用して、アクセスすべきでない機密データを提供できないように、データに対する厳格なセキュリティとアクセス制御を必要とします。しかし、現在のVectorデータベースは、強固なセキュリティとアクセス制御を備えていないか、データ・プラットフォームとは別のセキュリティ・ポリシーを構築して維持する必要があります。複数のセキュリティとガバナンスのセットを持つことは、コストと複雑さを増し、確実に維持するためにエラーが発生しやすくなります。

Databricks Vector Searchは、Unity Catalogとの統合によって可能になったData Intelligence Platformの残りの部分を保護するのと同じセキュリティ制御とデータガバナンスを活用します。ベクターインデックスは、Unityカタログ内のエンティティとして保存され、同じ統一インターフェースを活用してデータに対するポリシーを定義し、エンベッディングをきめ細かく制御します。

ガバナンス

高速クエリ・パフォーマンス

市場が成熟しているため、多くのベクターデータベースは少量のデータによる概念実証(POC)では良い結果を示しています。しかし、本番環境で使用するには、パフォーマンスやスケーラビリティが不十分なことがよくあります。すぐに使えるパフォーマンスが低いため、ユーザーは検索インデックスのチューニングや拡張方法を考えなければなりません。ワークロードを理解し、どのようなコンピュートインスタンスを選択し、どのような構成を使用するかについて難しい選択を迫られます。

Databricks Vector Searchは、LLMが最小限のレイテンシで適切な結果を迅速に返すので、データベースのチューニングやスケーリングに必要な作業はゼロです。Vector Searchは、フィルタリングの有無にかかわらず、クエリが非常に高速になるように設計されています。他の主要なベクトルデータベースと比較して、最大5倍のパフォーマンスを発揮します。 設定も簡単で、想定されるワークロードのサイズ(例:1秒あたりのクエリ数)、必要なレイテンシ、想定されるエンベッディングの数をお知らせいただくだけで、あとは私たちにお任せください。 インスタンスタイプ、RAM/CPU、ベクターデータベースの内部構造を理解する必要はありません。 

何千ものお客様がすでにDatabricks上で実行しているAIワークロードをサポートするために、私たちはDatabricks Vector Searchのカスタマイズに多くの労力を費やしました。この最適化には、セマンティック検索に最適なハードウェアをベンチマークして特定すること、基礎となる検索アルゴリズムとネットワークオーバーヘッドを最適化すること、スケールで最高のパフォーマンスを提供することなどが含まれます。

 

速い

次のステップ

私たちのドキュメントを読み、具体的にVector Searchインデックスを作成することから始めましょう。

Vector Searchの価格についてもっと読む

独自のRAGアプリケーションのデプロイを開始する(デモ)

Databricks Generative AIWebセミナーに申し込む

今週初めに発表された概要を 読む

Databricks 無料トライアル

関連記事

Platform blog

Databricksで高品質のRAGアプリケーションを作成する

RAG(Retrieval-Augmented-Generation )は、独自のリアルタイムデータを LLM(Large Language Model) アプリケーションに組み込む強力な方法として、急速に台頭してきた。 本日Databricksユーザーが企業データを使用して高品質な本番LLMアプリケーションを構築するためのRAGツール群を発表できることを嬉しく思う。 LLMは、新しいアプリケーションを迅速にプロトタイプ化する能力において、大きなブレークスルーをもたらした。 しかし、RAGアプリケーションを構築している何千もの企業と仕事をした結果、彼らの最大の課題は、これらのアプリケーションを 本番で用いることができる品質にすること であることがわかった。 顧客向けアプリケーションに要求される品質基準を満たすためには、AIの出力は正確で、最新で、そして企業のコンテキストを認識し、安全でなければならない。 高品質なRAGアプリケーションを構築するためには、開発者はデータとモデル出力の品質を理解するための豊富なツール
Engineering blog

Databricks Model Servingを使用したプライベートLLMのデプロイ

翻訳:Saki Kitaoka. - Original Blog Link Databricks Model ServingのGPUおよびLLM最適化サポートのパブリックプレビューを発表できることを嬉しく思います!この発表により、LLMやVisionモデルを含む、あらゆるタイプのオープンソースまたは独自のカスタムAIモデルをLakehouseプラットフォーム上にデプロイできるようになります。Databricks Model Servingは、LLM Serving用にモデルを自動的に最適化し、設定なしでクラス最高のパフォーマンスを提供します。 Databricks Model Servingは、統合データおよびAIプラットフォーム上で開発された初のサーバーレスGPUサービング製品です。これにより、データの取り込みから微調整、モデルのデプロイ、モニタリングに至るまで、GenAIアプリケーションの構築とデプロイをすべて単一のプラットフォーム上で行うことができます。 Azure上のユーザーは、Model Serving
Engineering blog

生成AIのために更新されたMLOPS大全

昨年、私たちは「MLOps Big Book of MLOps」を発表し、機械学習オペレーション(MLOps)の指針となる原則、設計上の考慮事項、リファレンス・アーキテクチャを概説した。 それ以来、DatabricksはMLOpsを簡素化する重要な機能を追加し、ジェネレーティブAIはMLOpsプラットフォームとプロセスに新たな要件をもたらした。 私たちは、これらの製品のアップデートとジェネレーティブAIの要件をカバーするMLOpsのビッグブックの新バージョンを発表できることを嬉しく思います。 このブログ記事では、eBookの主な更新を紹介する。ガバナンス、サービング、モニタリングに関する最新情報を提供し、それに付随する設計上の決断について議論する。 これらのアップデートは、改良されたリファレンス・アーキテクチャに反映されている。 また、LLMOps(大規模言語モデルのためのMLOps)に関する新しいセクションを設け、MLOpsの意味合い、LLMを搭載したアプリケーションの主要コンポーネント、LLM固有のリファレン
エンジニアリングのブログ一覧へ