AiToolGoのロゴ

GKEとCloud SQLを使用したRAGアプリケーションの構築

詳細な議論
技術的
 0
 0
 1
この記事では、Google Kubernetes Engine(GKE)とCloud SQL、およびRayやHugging Faceなどのオープンソースツールを使用して、Retrieval-Augmented Generation(RAG)機能を実行するためのインフラストラクチャを設計するためのリファレンスアーキテクチャを提供します。アーキテクチャのコンポーネント、データフロー、およびさまざまなドメインでの実践的なユースケースを概説しています。
  • 主要ポイント
  • ユニークな洞察
  • 実用的な応用
  • 主要トピック
  • 重要な洞察
  • 学習成果
  • 主要ポイント

    • 1
      RAG対応アプリケーションのための包括的なアーキテクチャ概要
    • 2
      実世界のアプリケーションを示す実践的なユースケース
    • 3
      複数のGoogle Cloudおよびオープンソースツールの統合
  • ユニークな洞察

    • 1
      埋め込みサブシステムにおけるデータフローの詳細な説明
    • 2
      ユーザーインタラクションを強化するためのセマンティック検索の革新的な使用
  • 実用的な応用

    • この記事は、GKEとCloud SQLを使用して生成AIアプリケーションにRAG機能を実装したい開発者にとっての実践的なガイドとして機能します。
  • 主要トピック

    • 1
      RAGアーキテクチャ設計
    • 2
      GKEとCloud SQLの統合
    • 3
      生成AIアプリケーションのユースケース
  • 重要な洞察

    • 1
      RAGアーキテクチャコンポーネントの詳細な探求
    • 2
      多様な業界からの実践的な例
    • 3
      クラウド環境でのパフォーマンスとコストの最適化に関するガイダンス
  • 学習成果

    • 1
      RAG対応生成AIアプリケーションのアーキテクチャを理解する
    • 2
      GKEとCloud SQLをオープンソースツールと統合する方法を学ぶ
    • 3
      実装のための実践的なユースケースとベストプラクティスを探求する
チュートリアル
コードサンプル
ビジュアル
基礎
高度なコンテンツ
実践的なヒント
ベストプラクティス

GKEとCloud SQLによるRAGの紹介

この記事では、Google Kubernetes Engine(GKE)、Cloud SQL、および一般的なオープンソースツールを活用して、Google Cloud上にRetrieval Augmented Generation(RAG)アプリケーションをデプロイするためのリファレンスアーキテクチャを探ります。RAGは、取得した知識に基づいて生成AIの出力を強化し、正確でコンテキストを意識した応答を必要とするアプリケーションに最適です。このガイドは、GKEとCloud SQLに精通しており、AI、機械学習(ML)、大規模言語モデル(LLM)の概念的な理解を持つ開発者を対象としています。アーキテクチャのコンポーネント、データフロー、および堅牢で効率的なRAGシステムを構築するための重要な考慮事項について詳しく説明します。

アーキテクチャ概要:埋め込みサブシステムとサービスサブシステム

アーキテクチャは、埋め込みサブシステムとサービスサブシステムの2つの主要なサブシステムで構成されます。埋め込みサブシステムは、さまざまなソースからデータを取得し、それをベクトル埋め込みに変換し、これらの埋め込みをベクトルデータベースに保存する責任を負います。サービスサブシステムは、ユーザーリクエストを処理し、セマンティック検索を使用してベクトルデータベースから関連情報を取得し、LLMを使用して応答を生成します。この関心の分離により、効率的なデータ処理とスケーラブルなサービス提供が可能になります。

埋め込みサブシステムの詳細なデータフロー

内部および外部の両方のソースからのデータはCloud Storageにアップロードされます。このアップロードは、埋め込みサービスに通知するイベントをトリガーします。次に、埋め込みサービスはデータを取得し、Ray Dataを使用して前処理します(チャンキングやフォーマットが含まれる場合があります)。そして、intfloat/multilingual-e5-smallなどのオープンソースモデルを使用してベクトル埋め込みを生成します。これらの埋め込みは、高次元ベクトルの保存と取得に最適化されたCloud SQL for PostgreSQLベクトルデータベースに書き込まれます。

サービスサブシステムの要求-応答フロー

ユーザーは、Webベースのチャットインターフェイスを通じて自然言語のリクエストを送信します。GKE上で実行されているフロントエンドサーバーは、LangChainを使用してリクエストを埋め込みに変換します。この埋め込みを使用してベクトルデータベースでセマンティック検索を実行し、関連データを取得します。次に、元のリクエストを取得したデータと組み合わせてコンテキスト化されたプロンプトを作成し、推論サーバーに送信します。Hugging Face TGIを搭載した推論サーバーは、オープンソースLLM(例:Mistral-7B-InstructまたはGemma)を使用して応答を生成します。応答は、Responsible AI(RAI)サービスを使用して安全性がフィルタリングされた後、ユーザーに返送されます。

使用される主要なGoogle Cloudおよびオープンソース製品

このアーキテクチャは、いくつかの主要なGoogle Cloudおよびオープンソース製品を活用しています。Google Kubernetes Engine(GKE)はコンテナオーケストレーションプラットフォームを提供します。Cloud Storageはスケーラブルなオブジェクトストレージを提供します。pgvector拡張機能で強化されたCloud SQL for PostgreSQLは、ベクトルデータベースとして機能します。オープンソースツールには、LLMサービング用のHugging Face Text Generation Inference(TGI)、分散コンピューティング用のRay、LLM搭載アプリケーションの構築用のLangChainが含まれます。

ユースケース:パーソナライゼーション、臨床支援、法律調査

RAGはさまざまなシナリオに適用できます。パーソナライズされた製品レコメンデーションでは、チャットボットが過去のユーザーデータを利用してより関連性の高い提案を提供できます。臨床支援では、医師がRAGを使用して患者の履歴や外部ナレッジベースにアクセスし、診断を改善できます。法律調査では、弁護士が規制や判例を迅速に照会でき、内部契約やケースレコードからのデータによって強化されます。

代替設計オプション:Vertex AIとAlloyDB

完全に管理されたベクトル検索ソリューションについては、Vertex AIとVector Searchの使用を検討してください。あるいは、AlloyDB for PostgreSQLなどの他のGoogle Cloudデータベースのベクトルストレージ機能を利用することもできます。これらの代替案は、管理オーバーヘッドとパフォーマンスの点で異なるトレードオフを提供します。

セキュリティ、プライバシー、コンプライアンスに関する考慮事項

セキュリティは最優先事項です。GKE Autopilotの組み込みセキュリティ機能を利用してください。アクセス制御にはIdentity-Aware Proxy(IAP)を実装してください。Cloud KMSを使用して、保存データと転送中のデータを暗号化してください。Cloud SQLについては、SSL/TLSまたはCloud SQL Authプロキシを使用して安全な接続を強制してください。Sensitive Data Protectionを使用して、Cloud Storage内の機密データを特定および匿名化してください。VPC Service Controlsを活用して、データ漏洩を防いでください。適切なデータストレージリージョンを指定することで、データ居住性要件への準拠を確保してください。

信頼性と高可用性設計

リージョナルGKEクラスターを使用し、高可用性でCloud SQLインスタンスを構成することで、高可用性を確保してください。データの冗長性のために、Cloud Storageのリージョナルまたはマルチリージョナルストレージオプションを利用してください。オートスケーリングイベント中の可用性を確保するために、GPUリソースの予約済み容量の使用を検討してください。

コスト最適化戦略

GKE Autopilotの効率を活用してコストを最適化してください。予測可能なワークロードについては、Committed Use Discountsを検討してください。GKEノードにはSpot VMを使用して、コンピューティングコストを削減してください。Cloud SQLについては、高可用性が必要ない場合はスタンドアロンインスタンスを使用してください。Cloud SQLのコスト分析インサイトを使用して、過剰にプロビジョニングされたインスタンスを特定してください。データアクセス頻度と保持要件に基づいて適切なCloud Storageクラスを選択してください。

パフォーマンスチューニングと最適化

パフォーマンス要件に基づいて、GKE Podに適切なコンピューティングカテゴリを選択してください。推論サーバーと埋め込みサービスにはGPUマシンタイプを使用してください。十分なCPUとメモリを割り当てることで、Cloud SQLのパフォーマンスを最適化してください。より高速な近似最近傍(ANN)ベクトル検索のために、IVFFlatまたはHNSWインデックスを使用してください。Cloud SQLのQuery Insightsツールを使用して、パフォーマンスのボトルネックを特定および解決してください。Cloud Storageへの大きなファイルのアップロードについては、並列複合アップロードを検討してください。

デプロイメントと次のステップ

このアーキテクチャをデプロイするためのサンプルコードベースがGitHubで利用可能です。このコードは実験用であり、本番環境での使用を想定していません。Cloud SQLをプロビジョニングし、GKEにRay、JupyterHub、Hugging Face TGIをデプロイし、サンプルチャットボットアプリケーションをデプロイします。実験後は、未使用のリソースを削除することを忘れないでください。GKEのベストプラクティスを確認し、Google CloudのGenerative AIのグラウンディングオプションを調査し、Vertex AIとVector SearchまたはAlloyDBを使用したアーキテクチャを学習することで、さらに探求してください。アーキテクチャの原則と推奨事項については、AIおよび機械学習のWell-Architected Frameworkを参照してください。

 元のリンク: https://cloud.google.com/architecture/rag-capable-gen-ai-app-using-gke?hl=zh-cn

コメント(0)

user's avatar

      関連ツール