Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Can't RAGs be cheaper?

SatakeYusuke
August 23, 2024
380

Can't RAGs be cheaper?

日々お話しているお客様より一番言われることとして、「RAGって運用費もっと安く出来ないの?」という言葉を7万回ぐらい聞いてきました。 そこで、自分が構築するならどうやったら出来るだけ安くなるのか最適解を探してみました。 Buildで発表された新機能であるCosmosDBを使ってRAGを組むとどうなるのか、パフォーマンスやコストの観点から調査してみました!

SatakeYusuke

August 23, 2024
Tweet

Transcript

  1. @fe_js_engineer @fe_js_engineer satyus 佐竹祐亮 / Yusuke Satake Microsoft Japan for

    Startups ← new!! Ex- Microsoft MVP for AI Platform (2024/5 ~ 2024/7) Experience • 日本マイクロソフト • 佐竹塾 経営 • プログラミングスクール 経営 • PoC部 運営 Expertise  学習塾 &プログラミングスクール経営  DXコンサルタント  プリセールス  Account Executive
  2. はじめに  「RAGってもっと安くならないの?」 この仕事をしてから7万回ぐらい言われているような気がします。 コストとパフォーマンス…切っても切り離せないトレードオフの関係ですが、パフォー マンスをある程度まで抑えてしまえば、コストもかなり抑えれるのではないかと思 う今日この頃です  そんな時にCosmosDB for

    NoSQLでベクトル検索が可能になるという発表が Buildであったので、CosmosDBでRAGを作るとどれぐらい安く作れるのか検証し てみました。  本発表は個人的な見解であり、所属する会社・組織とは全く関係ありません のでご了承ください。
  3. Cosmos DB for NoSQL  フル マネージドの NoSQLデータベースサービス ベクトル検索機能がPreview 

    従来は、RAGにおける検索部分はAzure AI Searchに任すことが多かったが、 料金が高く、可用性が高くはない。  より安く、DBに直接ベクトル検索できるようになった。  ※Cosmos DBはベクトル検索のみ。 一方でAI Searchには、ハイブリッド検索や、セマンティック検索がある。 ベクトル検索だけでは検索精度が出ない場合には、有用な選択肢。
  4. ベクトル検索  コンテンツを数値情報に変換し、コンテンツ同士の類似度を算出する検索方法。 検索対象 ベクトル値 文書1 文書2 文書3 文書4 [

    -2, -1, 0, 1 ] [ 2, 3, 4, 5 ] [ 6, 7, 8, 9 ] [ -2, 0, 4, 7 ] XXXのYYYとは? クエリ [ 2, 3, 4, 6 ] ベクトル 値 最も近い類似度の検索対象 は文書2!!!
  5. 各リソースのお値段はこんな感じ (8/21時点では$298.35/月) https://azure.microsoft.com/ja-jp/pricing/calculator/ リソース 設定値 値段 App Service Basic (Linux,

    サイズS, ACU合計100, メモリ1.75GB) $13.87 Functions 従量課金価格, 300万回呼び出し, 実行時間1s, リソー ス使用量512 MB / 1,024 MB, $17.60 AI Search basic (15 GB/パーティション、最大 3 個のレプリカ、最大 3 個のパーティション、最大 9 個の検索ユニット) $75.14 OpenAI Service GPT-4-32k, input 0.06$/1k, output 0.12$/1k Input & output 1m token/月 $180 Blob Storage ページ BLOB (非管理対象ディスクを含む)、標準、LRS 冗長性, 汎用 v1, 100 GB 容量, 100 非管理対象ディ スクの操作、10,000 ページ BLOB の書き込み操作、 10,000 追加 IO ユニットの書き込み、10,000 ページ BLOB の読み取り操作、10,000 追加 IO ユニットの読み 取り、10,000 ページ BLOB の削除操作 $11.74 やはり、AI関連のリソースが まぁまぁいいお値段することを確 認
  6. 各リソースのお値段はこんな感じ (8/21時点では$88.01/月) https://azure.microsoft.com/ja-jp/pricing/calculator/ リソース 設定値 値段 Static Web Apps Standard

    (汎用アプリ運用) $13.87→$9 Functions 従量課金価格, 300万回呼び出し, 実行時間1s, リソー ス使用量512 MB / 1,024 MB, $17.60 CosmosDB Serverless, RU 5×100万, トランザクションストレージ 100GB $75.14→$29.67 OpenAI Service GPT-4o, input 0.005$/1k, output 0.015$/1k Input & output 1m token/月 $180→$20 Blob Storage ページ BLOB (非管理対象ディスクを含む)、標準、LRS 冗長性, 汎用 v1, 100 GB 容量, 100 非管理対象ディ スクの操作、10,000 ページ BLOB の書き込み操作、 10,000 追加 IO ユニットの書き込み、10,000 ページ BLOB の読み取り操作、10,000 追加 IO ユニットの読み 取り、10,000 ページ BLOB の削除操作 $11.74
  7. 両者比較するとこんな感じ https://azure.microsoft.com/ja-jp/pricing/calculator/ リソース 値段 リソース 値段 Static Web Apps $9

    App Service $13.87 Functions $17.60 Functions $17.60 CosmosDB $29.67 AI Search $75.14 OpenAI Service $20 OpenAI Service $180 Blob Storage $11.74 Blob Storage $11.74 $88.01/月 $298.35/月 ベクトル検索で精度が十分であるならば、AI Search→CosmosDBに変更することで$50程度 節約することが可能 そしてやはりGPT-4oは安い…!!
  8. パフォーマンスを高めるDeploy方法:PTU  PTU(Provisioned Throughput Units) とは、Azure OpenAIのデプロイ方法 の一つで、指定されたスループット(一定時間内に処理できるリクエストの量) を予約する仕組みのことです。 契約することで専用のコンピューティングリソースを利用レイテンシーの安定性が

    高いデプロイ方法となります。 Global Batch Global Standard Standard PTU オフライン スコアリング 遅延に敏感ではなく数時間 で完了できるワークロード。 データ処理の場所に関する 要件がないユース ケース向け。 MS 推奨 GlobalStandard では、 Standard よりも高い既定 クォータとより多くのモデルを 利用できます。 データ処理の場所に関する 要件がない運用アプリケー ション向け。 データ所在地の要件がある お客様向け。 中程度以下のボリューム用 に最適化。 大きくて一貫したボリューム 用のリアルタイム スコアリン グ。 最高のコミットメントと制限 が含まれます。
  9. StandardとPTUで何が違うのか  StandardとPTUの違いは主に以下の3つの観点で見ることが出来ます。 • スケーラビリティ • パフォーマンス • コスト 項目

    Standard PTU スケーラビリティ トークン数の上限値あり 必要な量を事前に確保 毎月予約量を変更可能 パフォーマンス 共有のコンピューティングリソースを利用 レイテンシーのばらつき・遅れの可能性あり 専用のコンピューティングリソースを利用 レイテンシーの安定性が高い コスト 毎月のトークン利用数に応じた支払い コスト予測 = 複雑 事前に予約したユニット数支払い コスト予測 = 簡単
  10. 事前に購入するPTUを計算したい  AI Studioから以下の3つの項目を用いて購入すべきPTUの計算が可能  Peak calls per min(1分あたりにどれぐらい呼び出されるか) 

    Tokens in prompt call (inputのトークンはどれぐらいか)  Tokens in model response (outputのトークンはどれぐらいか) 計算ツール : https://oai.azure.com/