Retrieval Augmented Generation(RAG)は、Gen AIアプリケーションのコンテキストとして関連データを提供する効率的なメカニズムです。 ほとんどのRAGアプリケーションは、通常、ドキュメントやWiki、サポートチケットなどの非構造化データから関連するコンテキストを検索するためにベクトルインデックスを使用します。 昨日、私たちはDatabricks Vector Search Public Previewを発表しました。 しかし、これ らのテキストベースのコンテキストを、関連性のあるパーソナライズされた構造化データで補強することで、Gen AIの応答品質をさらに向上させることができます。 小売業のウェブサイトで、顧客が"最近の注文はどこですか?" と問い合わせる、Gen AIツールを想像してみてください。 このAIは、クエリが特定の購買に関するものであることを理解し、LLMを使用して応答を生成する前に、注文品目の最新の出荷情報を収集しなければなりません。 このようなスケーラブルなアプリケーションを開発するには、構造化データと非構造化データの両方を扱う技術とGen AIの機能を統合する、多大な労力が必要となります。
Databricks Data Intelligence Platformから構造化データを提供する低遅延のリアルタイムサービスである、Databricks Feature & Function Servingのパブリックプレビューを発表できることを嬉しく思います。Unity Cataloから任意のPython関数を呼び出すことで、事前に計算されたMLの特徴(フィーチャー)に即座にアクセスしたり、 リアルタイムデータ変換を実行したりできます。 検索されたデータは、リアルタイムのルールエンジン、古典的なML、およびGen AIアプリケーションで使用できます。
構造化データに対してFeature and Function Serving (AWS)(Azure) を、非構造化データに対してDatabricks Vector Search (AWS)(Azure) と連携して使用することで、Gen AIアプリケーションの実用化が大幅に簡素化されます。ユーザーはこれらのアプリケーションをDatabricksで直接構築・展開し、既存のデータパイプライン、ガバナンス、その他のエンタープライズ機能を利用することができます。Databricksの様々な業界のお客様は、これらの技術をオープンソースのフレームワークと共に使用し、以下の表のような強力なGen AIアプリケーションを構築しています。
業種 | ユースケース |
小売・消費財 |
|
教育 |
|
金融サービス |
|
旅行・ホスピタリティ |
|
医療・ライフサイエンス |
|
保険会社 |
|
テクノロジー・製造 |
|
メディア・エンターテイメント |
|
構造化データをRAGアプリケーションに提供する
構造化データがどのようにGen AIアプリケーションの品質を高めるのに役立つかを示すために、旅行計画チャットボットの例を使用します。 この例では、ユーザーの嗜好(例:"オーシャンビュー" または"ファミリーフレンドリー" )と、ホテルに関する非構造化情報をペアにして、マッチするホテルを検索する方法を示しています。 通常、ホテルの価格は需要や季節によってダイナミックに変化します。 Gen AIアプリケーションに内蔵された価格計算機能により、ユーザーの予算内で推奨商品が提供されます。 ボットを動かすGen AIアプリケーションは、Databricks Vector SearchとDatabricks Feature and Function Servingをビルディングブロックとして使用し、LangChainのエージェントAPIを使用して、必要なパーソナライズされたユーザー嗜好、予算、ホテル情報を提供します。
*ユーザーの好みと予算を考慮した旅行計画ボット
このRAGチェーン・アプリケーションのNotebookです。このアプリケーションは、Notebook内でローカルに実行することも、チャットボットのユーザー・インターフェースからアクセス可能なエンドポイントとしてデプロイすることもできます。
リアルタイムのエンドポイントとしてデータや機能にアクセスする
Unity CatalogのFeature Engineeringでは、すでにプライマリキーを持つ任意のテーブルを使用して、トレーニングやサービングのために特徴(フィーチャー)を提供することができます。 Databricks Model Servingは、Python関数を使用してオンデマンドでフィーチャーを計算することをサポートしています。 Databricks Model Servingと同じ技術を使用して構築されたフィーチャーエンドポイントとファンクションエンドポイントは、事前に計算されたフィーチャーにアクセスしたり、オンデマンドで計算したりすることができます。 簡単な構文で、有向非巡回グラフを計算してRESTエンドポイントとしてフィーチャーを提供するためにエンコードできるfeature spec functionをUnity Catalogで定義できます。
from databricks.feature_engineering import (
FeatureFunction,
FeatureLookup,
FeatureEngineeringClient,
)
features = [
# Lookup columns `latitude` and `longitude` from `restarants` table in UC using the input `restaurant_id` as key
FeatureLookup(
table_name="main.default.restaurants",
lookup_key="restaurant_id",
features=["latitude”, “longitude"]
),
# Calculate a new feature called `distance` using resturant and user's current location
FeatureFunction(
udf_name="main.default.distance",
output_name="distance",
# bind the function parameter with input from other features or from request.
input_bindings={"user_latitude": "user_latitude", "user_longitude": "user_longitude",
"restaurant_latitude": "latitude", "restaurant_longitude": "longitude"},
),
]
fe = FeatureEngineeringClient()
# Create a feature spec with the features listed above.
# The FeatureSpec can be accessed in UC as a Function.
fe.create_feature_spec(
name="main.default.restaurant_features",
features=features,
)
このfeature spec functionは、RESTエンドポイントとしてリアルタイムで提供することができます。 すべてのエンドポイントは、機能、機能、カスタムトレーニングモデル、基礎モデルを含む、左のナビゲーションタブからアクセスできます。 このAPIを使ってエンドポイントをプロビジョニングします。
from databricks.feature_engineering.entities.feature_serving_endpoint import (
ServedEntity,
EndpointCoreConfig,
)
fe.create_feature_serving_endpoint(
name="restaurant-features",
config=EndpointCoreConfig(
served_entities=ServedEntity(
feature_spec_name="main.default.restaurant_features",
workload_size="Small",
scale_to_zero_enabled=True
)
)
)
エンドポイントは、以下のようにUIワークフローを使用して作成することもできます。
エンドポイントに問い合わせることで、リアルタイ ムで機能にアクセスできるようになりました:
curl \
-u token:$DATABRICKS_TOKEN \
-X POST \
-H "Content-Type: application/json" \
-d '{"dataframe_records": [{"user_latitude": 37.9711, "user_longitude": -122.3940, "restaurant_id": 5}]}' \
https://<databricks-instance>/serving-endpoints/restaurant-features/invocations
リアルタイムのAIアプリケーションに構造化データを提供するには、事前に計算されたデータを運用データベースに展開する必要がある。 例えば、DynamoDBやCosmos DBは、Databricks Model Servingでフィーチャーを提供するために一般的に使用されています。 Databricks Online Tables (AWS) (Azure) は、低レイテンシのデータ検索に最適化されたデータ形式への事前計算機能の同期を簡素化する新 機能です。 主キーを持つ任意のテーブルをオンライン・テーブルとして同期させることができ、システムは自動パイプラインを設定してデータの鮮度を確保します。
Databricks Online Tablesを使用することで、主キーを持つUnity Catalog テーブルをGen AIアプリケーションのフィーチャーに使用することができます。
次のステップ
上記のNotebook の例を使用して、RAG アプリケーションをカスタマイズしてください。
Databricks Generative AI Webセミナーにお申し込みください。
Feature & Function Serving (AWS)(Azure) はパブリック・プレビューで利用可能です。 APIドキュメントと追加例を参照ください。
Databricksオンラインテーブル (AWS)(Azure) はGated Public Previewとして利用可能です。 有効化のお申し込みは、こちらのフォームをご利用ください。
今週初めに行われた概要発表(質の高いRAG申請を行う)
Databricksと共有したいユースケースをお持ちですか? [email protected]までお問い合わせください。