Improve your RAG application response quality with real-time structured data | Databricks Blogの翻訳です。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
Retrieval Augmented Generation (RAG)は、生成AIアプリケーションにおいてコンテキストとして適切なデータを提供する効率的なメカニズムです。多くのRAGアプリケーションは、ドキュメント、Wiki、サポートチケットのような非構造化データから適切なコンテキストを検索するためにベクトルインデックスを活用します。昨日、我々はまさにこの助けとなるDatabricks Vector Searchのパブリックプレビューを発表しました。しかし、適切かつパーソナライズされた構造化データを用いて、これらのテキストベースのコンテキストを拡張することで、生成AIのレスポンス品質を強化することができます。顧客が「私の最近の注文はどこですか?」と問い合わせる小売ウェブサイトの生成AIツールを創造してください。このAIは、レスポンスの生成にLLMを使う前に、この問い合わせは特定の注文に関するものであることを理解し、ラインアイテムに対する最新の出荷情報を収集する必要があります。これらのスケーラブルなアプリケーションの開発には膨大な作業や、生成AIの能力と構造化データ、非構造化データの両方を取り扱うためのテクノロジーとのインテグレーションが必要となります。
Databricksデータインテリジェンスプラットフォームから構造化データをサービングするために設計された、低レーテンシーのリアルタイムサービスであるDatabricks Feature & Function Servingのパブリックプレビューを発表できることを嬉しく思っています。計算済みのML特徴量に即座にアクセスでき、Unity Catalogから任意のPython関数をサービングすることでリアルタイムのデータ変換処理を実行することができます。そして、取得されたデータは、リアルタイムのルールエンジン、従来のML、生成AIアプリケーションで活用することができます。
構造化データのためのFeature & Function Serving(AWS)(Azure)と非構造化データのためのDatabricks Vector Search(AWS)(Azure)を苦r見合わせることで、生成AIアプリケーションにおけるプロダクション化を劇的にシンプルにすることができます。ユーザーは、Databricksで直接これらのアプリケーションを構築、デプロイすることができ、既存のデータパイプライン、ガバナンス、その他のエンタープライズ機能を活用することができます。
さまざまな業界のDatabricksのお客様は、以下の表に示すようにパワフルな生成AIアプリケーションを構築するためにオープンソースのフレームワークとこれらのテクノロジーを活用しています。
業界 | ユースケース |
---|---|
小売 |
|
教育 |
|
金融サービス |
|
旅行とホスピタリティ |
|
ヘルスケアとライフサイエンス |
|
保険 |
|
テクノロジーと製造 |
|
メディアエンターテイメント |
|
RAGアプリケーションへの構造化データのサービング
生成AIアプリケーションの品質改善に構造化データがどのように役立つのかをデモンストレーションするために、以下の旅行計画チャットbotのサンプルを使用します。この例では、マッチするホテルを検索するために、ユーザーの嗜好(オーシャンビュー、家族に優しいなど)がどのようにホテルに関する非構造化の情報と組み合わされるのかを示しています。通常、ホテルの価格は需要と季節性によって動的に変化します。生成AIに組み込まれた価格計算機は、レコメンデーションがユーザーの予算に収まるようにします。ボットを強化する生成AIアプリケーションは、LangChainのエージェントAPIを用いて、必要となるパーソナライズされたユーザー嗜好と予算、ホテルの情報を提供するためのビルディングブロックとして、Databricks Vector SearchとDatabricks Feature & Function Servingを活用します。
ユーザーの嗜好と予算を考慮する旅行計画ボット
上述したこのRAGチェーンアプリケーションの完全なノートブックにアクセスすることができます。このアプリケーションはノートブック内でローカルに稼働することもできますし、チャットbotのユーザーインタフェースでアクセスできるエンドポイントとしてデプロイすることもできます。
リアルタイムエンドポイントとしてあなたのデータと関数にアクセス
Unity Catalogの特徴量エンジニアリングによって、トレーニングとサービングのための特徴量をサービングするための主キーと任意のテーブルを活用できるようになっています。サービングでは、特徴量をオンデマンドで計算するPython関数がサポートされています。Databricksモデルサービングと同じテクノロジーを用いて構築されており、計算済みの特徴量やオンデマンドでの計算のために、特徴量と関数のエンドポイントを活用することができます。シンプルな構文によって、RESTエンドポイントとして特徴量を計算し、サービングする有効非循環グラフをエンコードできる、Unity Catalogにおけるfeature spec functionを定義することができます。
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モデルサービングで特徴量をサービングする際によく使われています。Databricks Online Tables(AWS)(Azure)は、計算済み特徴量の低レーテンシーのデータ検索に最適化されたデータフォーマットへの同期をシンプルにする新機能です。オンラインテーブルとして主キーを持つ任意のテーブルを同期することができ、データの鮮度を確実にするためにシステムが自動パイプラインをセットアップします。
Databricks Online Tablesを用いることで、生成AIアプリケーションに特徴量をサービングするために、主キーを持つすべてのUnity Catalogのテーブルを使用することができます。
次のステップ
あなたのRAGアプリケーションをカスタマイズするために、上で説明したサンプルノートブックをご活用ください。
オンデマンド視聴できるDatabricks Generative AI Webinarをご覧ください。
Feature & Function Serving(AWS)(Azure)はパブリックプレビューです。APIドキュメントやその他のサンプルをご覧ください。
Databricks Online Tables(AWS)(Azure)はゲーテッドのパブリックプレビューです。有効化するにはこちらのフォームにサインアップください。
今週前半の発表(高品質なRAGアプリケーション)をご一読ください。
Databricksに共有したいユースケースがありますか?feature-serving@databricks.comにコンタクトください。