このトピックでは、RAGベースのラージランゲージモデル (LLM) チャットボットをデプロイするときに、Retrieval-Augmented Generation (RAG) ベースのLLMチャットボットをApsaraDB RDS for PostgreSQLインスタンスに関連付ける方法について説明します。 このトピックでは、RAGベースのLLMチャットボットが提供する基本機能と、ApsaraDB RDS for 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のカスタマイズが可能になり、パーソナライズと精度が向上します。
ApsaraDB RDS for PostgreSQLの概要
ApsaraDB RDSはPostgreSQLをサポートしています。 PostgreSQLはSQLと完全に互換性があり、JSON、IP、ジオメトリデータなどのさまざまなデータ形式をサポートしています。 ApsaraDB RDS for PostgreSQLは、トランザクション、サブクエリ、マルチバージョン同時実行制御 (MVCC) 、データ整合性チェックなどの機能のサポートに加えて、高可用性、バックアップ、復元などの一連の機能を提供し、O&Mの読み込みを容易にします。 ApsaraDB RDS For PostgreSQLの高度な機能の詳細については、「ApsaraDB RDS for PostgreSQLとは」をご参照ください。
手順
EASは、柔軟なパラメータ構成で自己開発のRAG体系的ソリューションを提供します。 webユーザーインターフェイス (UI) を使用するか、API操作を呼び出してカスタムRAGベースのLLMチャットボットを構成することで、RAGサービスにアクセスできます。 RAGの技術アーキテクチャは、検索と生成に焦点を当てています。
検索: EASは、Milvus、Elasticsearch、Hologres、OpenSearch、AnalyticDB for PostgreSQLなどのオープンソースのFaissおよびAlibaba Cloudサービスを含むさまざまなベクターデータベースを統合します。
世代: EASはQwen、Meta Llama、MistralおよびBaichuanのようなさまざまなオープンソースモデルを支え、またChatGPTを統合します。
この例では、ApsaraDB RDS for PostgreSQLインスタンスを使用して、次の手順を実行してEASおよびApsaraDB RDS for PostgreSQLを使用してRAGベースのLLMチャットボットをデプロイする方法を示します。
ApsaraDB RDS for PostgreSQLを使用したベクターデータベースの準備
ApsaraDB RDS for PostgreSQLインスタンスを作成し、RAGベースのLLMチャットボットがApsaraDB RDS for PostgreSQLインスタンスに関連付けるための設定項目を準備します。
RAGベースのLLMチャットボットをデプロイし、ApsaraDB RDS for PostgreSQLインスタンスに関連付ける
RAGベースのLLMチャットボットをEASにデプロイし、ApsaraDB RDS for PostgreSQLインスタンスに関連付けます。
RAGベースのLLMチャットボットでApsaraDB RDS for PostgreSQLインスタンスに接続し、ビジネスデータファイルをアップロードしてから、ナレッジQ&Aを実行できます。
前提条件
仮想プライベートクラウド (VPC) 、vSwitch、およびセキュリティグループが作成されます。 詳細については、「IPv4 CIDRブロックを使用したVPCの作成」および「セキュリティグループの作成」をご参照ください。
注意事項
この方法は、LLMサービスのトークンの最大数に左右され、RAGベースのLLMチャットボットの基本的な検索機能を理解するのに役立つように設計されています。
チャットボットは、LLMサービスのサーバーリソースサイズとトークンのデフォルト数によって制限されます。 チャットボットがサポートする会話の長さも制限されています。
複数回の会話を実行する必要がない場合は、WebUIページでチャットボットのチャット履歴機能を無効にすることを推奨します。 これは、限界に達する可能性を効果的に低減する。 詳細については、「RAGベースのチャットボットのチャット履歴機能を無効にするにはどうすればよいですか?」をご参照ください。
ApsaraDB RDS for PostgreSQLを使用したベクターデータベースの準備
手順1: ApsaraDB RDS for PostgreSQLインスタンスとデータベースの作成
ApsaraDB RDS for PostgreSQLインスタンスを作成します。
購入ページで、次のパラメータを設定します。 その他のパラメーターについては、「ApsaraDB RDS For PostgreSQLインスタンスの作成」をご参照ください。
データベースエンジン: [PostgreSQL] を選択します。
VPC: 作成した仮想プライベートクラウド (VPC) を選択します。
特権アカウント: 詳細セクションで、[今すぐ設定] を選択し、データベースアカウントとパスワードを設定します。
コンソールの指示に従って、支払いとアクティベーションの操作を完了します。
データベースを作成します。
[インスタンス] ページで、目的のインスタンスを見つけ、[インスタンスID /名前] 列でインスタンスの名前をクリックします。 インスタンスの詳細ページの左側のナビゲーションウィンドウで、[データベース] をクリックします。 表示されるページで、[データベースの作成] をクリックします。
[データベースの作成] パネルで、[データベース名] パラメーターにデータベース名を指定し、[権限付与者] パラメーターに作成した特権アカウントを選択します。 その他のパラメーターについては、「データベースとアカウントの作成」をご参照ください。
パラメーターを設定したら、[作成] をクリックします。
ステップ2: 設定アイテムの準備
データベースに関する接続情報を表示します。
ApsaraDB RDS for PostgreSQLインスタンスの詳細ページの左側のナビゲーションウィンドウで、[データベース接続] をクリックします。 表示されるページで、データベースの内部エンドポイント、パブリックエンドポイント、およびポート番号を表示します。
内部エンドポイントの使用: RAGベースのLLMチャットボットは、データベースと同じVPCにある必要があります。
パブリックエンドポイントの使用: EASがインターネット経由でApsaraDB RDS for PostgreSQLインスタンスにアクセスする場合、EASはインターネットにアクセスできる必要があります。 ApsaraDB RDS for PostgreSQLインスタンスがインターネット経由でEASインスタンスからリクエストを受信できるようにするには、ApsaraDB RDS for PostgreSQLインスタンスのパブリックエンドポイントを申請し、関連するElastic IPアドレス (EIP) または0.0.0.0/0をホワイトリストに追加する必要があります。 以下の手順を実行します。
ApsaraDB RDS for PostgreSQLインスタンスのパブリックエンドポイントを申請します。 詳細については、「パブリックエンドポイントの申請またはリリース」をご参照ください。
EASのインターネットアクセスを有効にするには、NATゲートウェイとEIPを、RAGベースのLLMチャットボットのデプロイ時に設定されたVPCに関連付ける必要があります。 詳細については、「インターネットNATゲートウェイのSNAT機能を使用したインターネットへのアクセス」をご参照ください。
説明RAGベースのLLMチャットボットは、ApsaraDB RDS for PostgreSQLインスタンスと同じVPCまたは別のVPCを使用できます。
ApsaraDB RDS for PostgreSQLインスタンスのパブリックIPアドレスホワイトリストに0.0.0.0/0または前述のEIPを追加します。 詳細については、「IPアドレスホワイトリストの設定」をご参照ください。
特権アカウントとパスワードを表示します。
ApsaraDB RDS for PostgreSQLインスタンスの詳細ページの左側のナビゲーションウィンドウで、[アカウント] をクリックします。 表示されるページで、特権アカウントを表示できます。 パスワードは、インスタンスの作成時に設定されます。 パスワードを忘れた場合は、[パスワードのリセット] をクリックしてパスワードを変更できます。
RAGベースのLLMチャットボットをデプロイし、ApsaraDB RDS for PostgreSQLインスタンスに関連付ける
Platform for AI (PAI) コンソールにログインし、リージョンを選択します。 左側のナビゲーションウィンドウで、モデル展開> Elastic Algorithm Service (EAS) を選択します。 表示されるページで、ワークスペースを選択し、[Elastic Algorithm Service (EAS) の入力] をクリックします。
[Elastic Algorithm Service (EAS)] ページで、[サービスのデプロイ] をクリックします。 [シナリオベースのモデル展開] セクションで、[RAGベースのスマートダイアログ展開] をクリックします。
[RAGベースのLLM Chatbotデプロイ] ページで、次の表に示す主要なパラメーターを設定します。 その他のパラメーターについては、「手順1: RAGサービスのデプロイ」をご参照ください。
パラメーター
説明
基本情報
モデルソース
[オープンソースモデル] を選択します。
モデルタイプ
Qwen1.5-1.8bを選択します。
リソース設定
リソース設定
システムは、選択したモデルタイプに基づいて適切なリソース仕様を推奨します。 他のリソース仕様を使用すると、モデルサービスの起動に失敗することがあります。
ベクトルデータベース设定
Vectorデータベース型
[RDS PostgreSQL] を選択します。
ホストアドレス
ApsaraDB RDS for PostgreSQLインスタンスの内部エンドポイントまたはパブリックエンドポイント。
ポート
ApsaraDB RDS for PostgreSQLインスタンスのポート番号。 例: 5432。
データベース
作成したデータベースの名前。
テーブル名
テーブルの名前。 新しいテーブル名または既存のテーブル名を入力できます。 既存のテーブル名を使用する場合、テーブルスキーマはRAGベースのチャットボットの要件を満たす必要があります。 たとえば、EASを使用してRAGベースのチャットボットをデプロイするときに自動的に作成されるテーブルの名前を入力できます。
[アカウント]
作成した特権アカウント。
Password
作成した特権アカウントのパスワード。
VPC設定 (オプション)
[VPC]
ホストアドレスが内部エンドポイントの場合、ApsaraDB RDS for PostgreSQLインスタンスと同じVPCでRAGベースのチャットボットを設定する必要があります。
ホストアドレスがパブリックエンドポイントの場合、RAGベースのチャットボットにVPCを設定する必要があります。 VPCがインターネットにアクセスできることを確認します。 詳細については、「インターネットNATゲートウェイのSNAT機能を使用したインターネットへのアクセス」をご参照ください。 さらに、ApsaraDB RDS for PostgreSQLインスタンスのパブリックIPアドレスホワイトリストにEIPまたは
0.0.0.0/0
を追加する必要があります。 詳細については、「IPアドレスホワイトリストの設定」をご参照ください。
vSwitch
セキュリティグループ名
パラメーターを設定したら、[デプロイ] をクリックします。
RAGベースのLLMチャットボットの使用
1. ベクターデータベースへの接続
次のセクションでは、RAGベースのLLMチャットボットの使用方法について説明します。 詳細については、「RAGベースのLLMチャットボット」をご参照ください。
RAGベースのチャットボットをデプロイした後、[サービスタイプ] 列の [Webアプリの表示] をクリックしてweb UIに移動します。
ベクトルデータベースが接続されているかどうかを確認します。
システムは、チャットボットのデプロイ時に構成されたベクトルデータベース設定を認識して適用します。 [PostgreSQLの接続] をクリックして、ApsaraDB RDS for PostgreSQLインスタンスが接続されているかどうかを確認します。 接続に失敗した場合は、手順2: 構成項目の準備に基づいて、ベクターデータベースの設定が正しいかどうかを確認します。 設定が正しくない場合は、設定項目を変更して [PostgreSQLの接続] をクリックし、ApsaraDB RDS for PostgreSQLインスタンスを再接続します。
2. ビジネスデータファイルのアップロード
ナレッジベースファイルをアップロードします。 システムは、知識ベースをPAI-RAGフォーマットで、検索のためにベクトルデータベースに自動的に格納する。 データベース内の既存のナレッジベースを使用することもできますが、ナレッジベースはPAI-RAG形式の要件を満たす必要があります。 そうしないと、検索中にエラーが発生する可能性があります。
[アップロード] タブで、チャンクパラメーターを設定します。
次のパラメーターは、ドキュメントチャンクの粒度とQ&A抽出を有効にするかどうかを制御します。
パラメーター
説明
チャンクサイズ
各チャンクのサイズ。 単位はバイトです。 デフォルト値: 500。
チャンク重複
隣接するチャンク間のオーバーラップ。 デフォルト値は 10 です。
QA抽出モデルによるプロセス
Q&A情報を抽出するかどうかを指定します。 [はい] を選択すると、ナレッジファイルがアップロードされた後、システムは自動的に質問と対応する回答をペアで抽出します。 これにより、データクエリでより正確な回答が返されます。
[ファイル] タブまたは [ディレクトリ] タブで、1つ以上のビジネスデータファイルをアップロードします。 ビジネスデータファイルを含むディレクトリをアップロードすることもできます。 サポートされているファイルタイプ: txt、.pdf、Excel (.xlsxまたは.xls)、. csv、Word (.docxまたは.doc) 、Markdown、または. html。 設定例:
[アップロード] をクリックします。 システムは、ビジネスデータファイルをアップロードする前に、ビジネスデータファイルに対してデータクレンジングおよびセマンティックベースのチャンキングを実行する。 データクレンジングは、テキスト抽出およびハイパーリンク置換を含む。
3. ナレッジQ&Aの実行
RAGベースのLLMチャットボットは、ベクターデータベースから返された結果とクエリを選択したプロンプトテンプレートに入力し、テンプレートをLLMアプリケーションに送信して回答を提供します。
ApsaraDB RDS for PostgreSQLが提供する特別な機能
ApsaraDB RDS for PostgreSQLインスタンスリストを表示し、インスタンスが存在するリージョンを選択し、目的のインスタンスを見つけて、[インスタンスID /名前] 列でインスタンスの名前をクリックします。
インスタンスの詳細ページの左側のナビゲーションウィンドウで、[データベース] をクリックします。 表示されるページで、管理するデータベースを見つけ、[操作] 列の [SQLクエリ] をクリックします。
[データベースインスタンスにログイン] ページで、ApsaraDB RDS for PostgreSQLインスタンスの作成時に設定した特権アカウントとパスワードを [データベースアカウント] および [データベースパスワード] パラメーターに入力し、[ログイン] をクリックします。
ログインが成功したら、データベースにログインしたインスタンスにインポートされたビジネスデータファイルのリストを照会します。
関連ドキュメント
EASは、AI生成コンテンツ (AIGC) およびLLMの典型的な最先端のシナリオに簡素化された展開方法を提供します。ComfyUI、Stable Diffusion WebUI、ModelScope、Hugging Face、Triton Inference Server、TensorFlow Servingなどのデプロイ方法を使用して、モデルサービスを簡単にデプロイできます。 詳細については、「シナリオベースのデプロイ」をご参照ください。
さまざまな要件を満たすために、RAGベースのLLMチャットボットのweb UIでさまざまな推論パラメーターを設定できます。 API操作を呼び出すことで、RAGベースのLLMチャットボットを使用することもできます。 実装の詳細とパラメーター設定の詳細については、「RAGベースのLLMチャットボット」をご参照ください。
RAGベースのLLMチャットボットは、OpenSearchとElasticsearchなどの他のタイプのベクターデータベースに関連付けることもできます。
詳細については、「 EASとElasticsearchを使用してRAGベースのLLMチャットボットをデプロイする」または「EASとOpenSearchを使用してRAGベースのLLMチャットボットをデプロイする」をご参照ください。