このトピックでは、RAG サービスをデプロイするときに RDS PostgreSQL インスタンスを関連付ける方法について説明します。また、RAG チャットボットの基本的な特徴と RDS PostgreSQL の特別な特徴についても説明します。
背景情報
EAS の概要
Elastic Algorithm Service (EAS) は PAI のオンラインモデルサービスプラットフォームであり、モデルをオンライン推論サービスまたは AI を活用した Web アプリケーションとしてデプロイできます。EAS は、自動スケーリングやブルーグリーンデプロイメントなどの特徴を提供します。これらの特徴により、多数の同時リクエストを処理できる安定したオンラインモデルサービスを開発するコストが削減されます。さらに、EAS は、リソースグループ管理やモデルのバージョン管理などの特徴、および包括的な O&M とモニタリングなどの機能を提供します。詳細については、「EAS の概要」をご参照ください。
RAG の概要
AI 技術の急速な発展に伴い、生成 AI はテキスト生成や画像生成など、さまざまな分野で目覚ましい成果を上げています。しかし、LLM が広く使用されるにつれて、次のような固有の制限が徐々に現れてきます。
分野知識の制限: ほとんどの場合、LLM は大規模な一般データセットを使用してトレーニングされます。この場合、LLM は専門的な垂直分野に対して、深く的を絞った処理を行うのに苦労します。
情報更新の遅延: トレーニングデータセットの静的な性質により、LLM はリアルタイムの情報や知識の更新にアクセスして取り込むことができません。
誤解を招く出力: LLM はハルシネーションを起こしやすく、もっともらしく見えても事実と異なる出力を生成する傾向があります。これは、データのバイアスやモデル固有の制限などの要因に起因します。
これらの課題に対処し、LLM の機能と精度を向上させるために、RAG が開発されました。RAG は外部のナレッジベースを統合して、LLM のハルシネーションの問題を大幅に軽減し、LLM が最新の知識にアクセスして適用する能力を向上させます。これにより、LLM をカスタマイズして、よりパーソナライズされ、精度を高めることができます。
RDS PostgreSQL の概要
Alibaba Cloud Relational Database Service (RDS) は PostgreSQL エンジンをサポートしています。PostgreSQL の利点には、SQL 仕様の完全な実装と、JSON、IP、幾何データなど、豊富な種類のデータの型をサポートしていることが挙げられます。トランザクション数、サブクエリ、Multi-Version Concurrency Control (MVCC)、データ整合性チェックなどの特徴を完全にサポートすることに加えて、RDS PostgreSQL は高可用性、バックアップ、回復などの重要な特徴も統合しており、O&M ワークロードを削減します。RDS PostgreSQL の高度な特徴の詳細については、「RDS PostgreSQL」をご参照ください。
プロシージャ
EAS は、柔軟なパラメーター構成を備えた自己開発の RAG 体系的ソリューションを提供します。Web ユーザーインターフェース (UI) を使用するか、API 操作を呼び出して RAG サービスにアクセスし、カスタムの RAG ベースの LLM チャットボットを構成できます。RAG の技術アーキテクチャは、取得と生成に焦点を当てています。
取得: EAS は、オープンソースの Faiss や、Milvus、Elasticsearch、Hologres、OpenSearch、AnalyticDB for PostgreSQL などの Alibaba Cloud サービスを含む、さまざまなベクトルデータベースを統合しています。
生成: EAS は、Qwen、Meta Llama、Mistral、Baichuan などのさまざまなオープンソースモデルをサポートし、ChatGPT も統合しています。
このトピックでは、RDS PostgreSQL を例として、EAS と RDS PostgreSQL を使用して LLM ベースの RAG チャットボットを構築する方法について説明します。プロシージャは次のとおりです。
まず、RDS PostgreSQL インスタンスを作成し、デプロイメント中に RAG サービスをインスタンスに関連付けるために必要な設定項目を準備する必要があります。
RAG サービスをデプロイして RDS PostgreSQL インスタンスに関連付ける
EAS プラットフォームに RAG サービスをデプロイし、RDS PostgreSQL インスタンスに関連付けることができます。
RAG チャットボットで RDS PostgreSQL に接続し、エンタープライズナレッジベースファイルをアップロードし、ナレッジベースの Q&A を実行できます。
前提条件
VPC (virtual private cloud)、vSwitch、およびセキュリティグループが作成されていること。詳細については、「IPv4 CIDR ブロックを持つ VPC の作成」および「セキュリティグループの作成」をご参照ください。
注意事項
このソリューションは、サーバーリソースのサイズと LLM サービスのデフォルトのトークン制限によって制限され、サポートされる会話の長さが制限されます。このガイドは、RAG チャットボットの基本的な取得機能をテストするのに役立ちます。
ベクトルデータベースの準備: RDS PostgreSQL
ステップ 1: RDS PostgreSQL インスタンスとデータベースの作成
RDS PostgreSQL インスタンスを作成します。
購入ページで、次の主要なパラメーターを構成します。その他のパラメーターについては、「RDS PostgreSQL インスタンスの作成」をご参照ください。
[エンジン]: [PostgreSQL] を選択します。
[VPC]: 作成した VPC を選択します。
[特権アカウント]: [追加設定] セクションで、特権アカウントを構成します。[今すぐ設定] を選択し、データベースアカウントとパスワードを構成します。
コンソールの指示に従って、支払いとアクティベーションを完了します。
データベースを作成します。
作成したインスタンスの名前をクリックします。左側のナビゲーションウィンドウで、[データベース管理] をクリックし、次に [データベースの作成] をクリックします。
[データベースの作成] パネルで、[データベース (DB) 名] を構成します。[承認済みアカウント] には、作成した特権アカウントを選択します。その他のパラメーターの詳細については、「アカウントとデータベースの作成」をご参照ください。
パラメーターを構成したら、[作成] をクリックします。
ステップ 2: 設定項目の準備
データベースエンドポイントを取得します。
RDS PostgreSQL インスタンスの詳細ページの左側のナビゲーションウィンドウで、[データベース接続] を選択して、データベースの内部エンドポイント、パブリックエンドポイント、および対応するポート番号を表示します。

内部エンドポイントを使用する: RAG サービスはデータベースと同じ VPC 内にある必要があります。
パブリックエンドポイントを使用する: EAS がインターネット経由で RDS PostgreSQL インスタンスにアクセスする場合、EAS サービスはインターネットにアクセスできる必要があります。PostgreSQL インスタンスが EAS インスタンスからのパブリックリクエストを受信できるようにするには、PostgreSQL インスタンスのパブリックエンドポイントをリクエストし、関連する EIP (Elastic IP Address) または 0.0.0.0/0 をホワイトリストに追加する必要があります。プロシージャは次のとおりです。
RDS PostgreSQL インスタンスのパブリックエンドポイントをリクエストします。詳細については、「パブリックエンドポイントの有効化または無効化」をご参照ください。
EAS のインターネットアクセスを有効にするには、RAG サービスをデプロイするときに使用する VPC に NAT Gateway と EIP をアタッチする必要があります。詳細については、「インターネット NAT Gateway の SNAT 機能を使用してインターネットにアクセスする」をご参照ください。
説明RAG サービスは、RDS PostgreSQL インスタンスと同じ VPC または異なる VPC を使用できます。
RDS PostgreSQL インスタンスのパブリックエンドポイントのホワイトリストに 0.0.0.0/0 または EIP を追加します。詳細については、「ホワイトリストの設定」をご参照ください。
特権アカウントとパスワードを取得します。
RDS PostgreSQL インスタンスの詳細ページの左側のナビゲーションウィンドウで、[アカウント管理] を選択します。このページで、作成した特権アカウントを表示できます。対応するパスワードは、インスタンスの作成時に設定されました。パスワードを忘れた場合は、[パスワードのリセット] をクリックして変更できます。
RAG サービスをデプロイして RDS PostgreSQL インスタンスに関連付ける
PAI コンソールにログインし、ワークスペースを選択してから、[EAS に入る] をクリックします。
[推論サービス] タブで、[サービスのデプロイ] をクリックします。次に、[シナリオベースのモデルデプロイ] セクションで、[RAG ベースの LLM チャットボットのデプロイ] をクリックします。
[LLM 用 RAG チャットボットのデプロイ] ページで、次の主要なパラメーターを構成します。その他のパラメーターについては、「ステップ 1: RAG サービスをデプロイする」をご参照ください。
パラメーター
説明
基本情報
バージョン
[統合 LLM デプロイメント] を選択します。
RAG バージョン
[pai-rag:0.3.4] を選択します。
モデルタイプ
[qwen1.5-1.8b] を選択します。
リソース情報
デプロイメントリソース
システムは、選択したモデルタイプに基づいて適切なリソース仕様を自動的に推奨します。他のリソース仕様を使用すると、モデルサービスが起動に失敗する可能性があります。
ベクトルデータベース設定
バージョンタイプ
[RDS PostgreSQL] を選択します。
ホスト
このパラメーターを RDS PostgreSQL インスタンスの内部またはパブリックエンドポイントに設定します。
ポート
このパラメーターを RDS PostgreSQL インスタンスのポート番号 (例: 5432) に設定します。
データベース
作成したデータベースの名前を入力します。
テーブル名
新しいテーブル名または既存のテーブル名を入力します。既存のテーブルの場合、テーブルスキーマは PAI-RAG の要件を満たす必要があります。たとえば、EAS を使用して RAG サービスをデプロイしたときに自動的に作成されたテーブルの名前を入力できます。
アカウント
作成した特権アカウントを入力します。
パスワード
特権アカウントに対応するパスワードを入力します。
OSS パス
現在のリージョンにある既存の OSS ストレージディレクトリを選択します。ナレッジベースは、OSS パスをマウントすることによって管理されます。
VPC
VPC
ホストに内部エンドポイントを使用する場合、RAG サービスは RDS PostgreSQL インスタンスと同じ VPC に構成する必要があります。
ホストにパブリックエンドポイントを使用する場合、RAG サービス用に VPC を構成する必要があります。VPC がインターネットにアクセスできることを確認する必要があります。詳細については、「インターネット NAT Gateway の SNAT 機能を使用してインターネットにアクセスする」をご参照ください。また、アタッチされた EIP または
0.0.0.0/0を RDS PostgreSQL インスタンスのパブリックアクセスホワイトリストに追加する必要もあります。詳細については、「ホワイトリストの設定」をご参照ください。
VSwitch
セキュリティグループ名
パラメーターを構成したら、[デプロイ] をクリックします。
RAG チャットボットを使用する
1. ベクトルデータベースの構成を確認する
次のセクションでは、RAG ベースの LLM チャットボットの使用方法について説明します。詳細については、「LLM 用 RAG チャットボット」をご参照ください。
ターゲット RAG サービスの名前をクリックし、ページの右上隅にある [Web アプリの表示] をクリックします。
PostgreSQL ベクトルデータベースが正しく構成されているかどうかを確認します。
システムは、デフォルトのナレッジベースを自動的に構成し、RAG サービスをデプロイしたときに構成したベクトルデータベース設定を適用します。[ベクトルデータベース構成] セクションで、PostgreSQL の構成が正しいかどうかを確認します。設定項目を正しい値に変更してから、[ナレッジベースの更新] をクリックできます。
2. エンタープライズナレッジベースファイルをアップロードする
[ナレッジベース] タブの [ファイル管理] タブで、ナレッジベースファイルをアップロードします。
ナレッジベースがアップロードされると、システムはファイルを PAI-RAG フォーマットでベクトルデータベースに自動的に保存します。同じ名前のナレッジベースファイルの場合、FAISS 以外のベクトルデータベースは元のファイルを上書きします。サポートされているファイルタイプには、.html、.htm、.txt、.pdf、.pptx、.md、Excel (.xlsx または .xls)、.jsonl、.jpeg、.jpg、.png、.csv、および Word (.docx) が含まれます。たとえば、rag_chatbot_test_doc.txt です。
3. ナレッジベースの Q&A を実行する
[チャット] タブで、ナレッジベース名とインテントを選択します。[ナレッジベースのクエリ] を選択して、より多くのツールを使用します。その後、ナレッジベースの Q&A を実行できます。
RDS PostgreSQL の特別な特徴のサポート
RDS インスタンスリストに移動し、インスタンスが配置されているリージョンに切り替えてから、インスタンス名をクリックしてインスタンスの詳細ページに移動します。
左側のナビゲーションウィンドウで [データベース管理] を選択し、ターゲットデータベースの [アクション] 列にある [SQL クエリ] をクリックします。
RDS PostgreSQL インスタンスを作成したときに設定した特権アカウントとパスワードである [データベースアカウント] と [データベースパスワード] を入力し、[ログイン] をクリックします。
ログイン後、データベースインスタンスにインポートされたナレッジベースのリストをクエリできます。

参考資料
EAS は、AI 生成コンテンツ (AIGC) と LLM の典型的な最先端シナリオ向けに簡素化されたデプロイメントメソッドを提供します。ComfyUI、Stable Diffusion WebUI、ModelScope、Hugging Face、Triton Inference Server、TensorFlow Serving などのデプロイメントメソッドを使用して、モデルサービスを簡単にデプロイできます。詳細については、「シナリオベースのデプロイメント」をご参照ください。
RAG ベースの LLM チャットボットの Web UI でさまざまな推論パラメーターを構成して、多様な要件を満たすことができます。API 操作を呼び出して RAG ベースの LLM チャットボットを使用することもできます。実装の詳細とパラメーター設定の詳細については、「LLM 用 RAG チャットボット」をご参照ください。
RAG ベースの LLM チャットボットは、OpenSearch、Elasticsearch などの他のベクトルデータベースに関連付けることもできます。詳細については、「EAS と Elasticsearch を使用して RAG ベースの LLM チャットボットをデプロイする」、または「EAS と OpenSearch を使用して RAG ベースの LLM チャットボットをデプロイする」をご参照ください。