すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:PAIおよびApsaraDB RDS for PostgreSQLのEASモジュールを使用して、RAGベースのLLMチャットボットをデプロイする

最終更新日:Jan 10, 2025

Platform for AI (PAI) のElastic Algorithm Service (EAS) モジュールは、さまざまなシナリオのための簡略化された展開方法を提供します。 パラメーターを設定して、RAG (Retrieval-Augmented Generation) ベースのLLM (large language model) チャットボットをデプロイできます。 これにより、サービスのデプロイ時間が大幅に短縮されます。 チャットボットを使用してモデル推論を実行すると、チャットボットはナレッジベースから関連情報を効果的に取得し、取得した情報をLLMアプリケーションからの回答と組み合わせて、正確で有益な回答を提供します。 これにより、Q&Aの品質と全体的なパフォーマンスが大幅に向上します。 チャットボットは、特定のナレッジベースに依存するQ&A、要約、およびその他の自然言語処理 (NLP) タスクに適しています。 このトピックでは、ApsaraDB RDS for PostgreSQLインスタンスにベクターデータベースを構築して、RAGベースのLLMチャットボットをデプロイする方法について説明します。 このトピックでは、モデル推論を実行する方法についても説明します。

背景情報

LLMアプリケーションは、正確でリアルタイムの応答を生成するのに限界がある。 したがって、LLMアプリケーションは、カスタマーサービスやQ&Aシナリオなど、正確な情報が必要なシナリオには適していません。 これらの問題を解決するために、RAG技術を使用してLLMアプリケーションのパフォーマンスを向上させる。 これにより、特定の知識ベースに依存するQ&A、要約、およびその他のNLPタスクの品質が大幅に向上します。

RAGは、Tongyi QianwenなどのLLMアプリケーションを情報検索コンポーネントと組み合わせることにより、回答の精度を向上させ、回答に関する情報量を増やします。 クエリが開始されると、RAGは、情報検索コンポーネントを使用して、知識ベース内のクエリに関連するドキュメントまたは情報フラグメントを見つけ、これらの検索されたコンテンツを元のクエリと統合してLLMアプリケーションに組み込む。 LLMアプリケーションは、その誘導および生成機能を使用して、最新の情報に基づいて事実に基づく回答を生成します。 LLMアプリケーションを再トレーニングする必要はありません。

EASに導入されたチャットボットは、LLMアプリケーションとRAGを統合して、精度と適時性の点でLLMアプリケーションの限界を克服します。 このチャットボットは、さまざまなQ&Aシナリオで正確で有益な回答を提供し、NLPタスクの全体的なパフォーマンスとユーザーエクスペリエンスの向上に役立ちます。

前提条件

  • 仮想プライベートクラウド (VPC) 、vSwitch、およびセキュリティグループが作成されます。 詳細については、「VPCの作成と管理」および「セキュリティグループの作成」をご参照ください。

  • Object Storage Service (OSS) バケットまたはFile Storage NAS (NAS) ファイルシステムを作成して、微調整されたモデルファイルを保存します。 微調整されたモデルを使用してチャットボットをデプロイする場合は、この前提条件を満たす必要があります。 詳細については、「OSSコンソールを使用して開始する」または「ファイルシステムの作成」をご参照ください。

    説明

    Faissを使用してベクターデータベースを構築する場合は、OSSバケットを準備する必要があります。

制限事項

ApsaraDB RDS for PostgreSQLインスタンスとEASは同じリージョンに存在する必要があります。

使用上の注意

この方法は、LLMサービスのトークンの最大数に左右され、RAGベースのLLMチャットボットの基本的な検索機能を理解するのに役立つように設計されています。

  • チャットボットは、LLMサービスのサーバーリソースサイズとトークンのデフォルト数によって制限されます。 チャットボットがサポートする会話の長さも制限されています。

  • 複数回の会話を実行する必要がない場合は、チャットボットのチャット履歴機能を無効にすることを推奨します。 これは、限界に達する可能性を効果的に低減する。 詳細については、「」をご参照ください。RAGベースのチャットボットのチャット履歴機能を無効にするにはどうすればよいですか? このトピックのセクション。

手順1: RDSインスタンスでのベクターデータベースの構築

RAGを使用すると、RDSインスタンスにベクターデータベースを構築できます。 ベクターデータベースを構築するときは、後続の操作でベクターデータベースに接続するために使用される必要なパラメーター設定を保存する必要があります。

  1. RDSインスタンスを作成します。 詳細は、インスタンスの作成をご参照ください。

    VPCを介した通信を有効にするには、RDSインスタンスをRAGベースのLLMチャットボットと同じリージョンに配置することを推奨します。

  2. RDSインスタンスのアカウントとデータベースを作成します。 詳細については、「データベースとアカウントの作成」をご参照ください。

    • アカウントを作成するときに、[アカウントタイプ][特権アカウント] を選択します。

    • データベースを作成するときに、[権限付与者] ドロップダウンリストから作成した特権アカウントを選択します。

  3. データベース接続を設定します。

    1. [インスタンス] ページに移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。

    2. 左側のナビゲーションウィンドウで、データベースの接続.

    3. [データベース接続] ページで、データベースのエンドポイントとポートを表示します。

  4. shared_preload_librariesパラメーターのRunning Parameter Valueにpg_jiebaを追加します。 たとえば、[Running Parameter Value]'pg_stat_statements,auto_explain,pg_cron 'に変更します。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスのパラメーターの変更」をご参照ください。

    説明

    ApsaraDB RDS for PostgreSQLは、pg_jieba拡張機能を使用して中国語テキストをセグメント化します。 この拡張機能は、キーワードベースの検索とリコールに使用できます。 詳細については、「pg_jieba拡張機能の使用」をご参照ください。

ステップ2: RAGベースのチャットボットのデプロイ

  1. EASページに移動します。

    1. Platform for AI (PAI) コンソールにログインします。

    2. 左側のナビゲーションペインで、[ワークスペース] をクリックします。 [ワークスペース] ページで、モデルを配置するワークスペースを見つけ、その名前をクリックして [ワークスペースの詳細] ページに移動します。

      使用できるワークスペースがない場合は、作成する必要があります。 詳細については、「ワークスペースの作成」をご参照ください。

    3. 左側のナビゲーションウィンドウで、[モデル展開] > [Elastic Algorithm Service (EAS)] を選択して、[Elastic Algorithm Service (EAS)] ページに移動します。image

  2. [Elastic Algorithm Service (EAS)] ページで、[サービスのデプロイ] をクリックします。 [シナリオベースのモデル展開] セクションで、[RAGベースのスマートダイアログ展開] をクリックします。6eea7736f88e6ec8b3b900e4d028bb48

  3. RAGベースのLLM Chatbotデプロイページで、パラメーターを設定します。 次の表では、さまざまなセクションの主要なパラメーターについて説明します。

    • 基本情報

      パラメーター

      説明

      サービス名

      サービスの名前です。

      モデルソース

      モデルのソース。 有効な値: オープンソースモデルおよびカスタム微調整モデル

      モデルタイプ

      モデルタイプ。 ビジネス要件に基づいてモデルタイプを選択できます。

      モデルソースをカスタム微調整モデルに設定した場合、モデルタイプのパラメータの数量と精度を設定する必要があります。

      モデル設定

      モデルソースをカスタム微調整モデルに設定した場合、微調整モデルファイルを格納するパスを設定する必要があります。 有効な値:

      説明

      モデルファイル形式がHugging Face transformersと互換性があることを確認してください。

      • OSSのマウント: 微調整されたモデルファイルが保存されているOSSパスを選択します。

      • NASのマウント: 微調整されたモデルファイルが保存されているNASファイルシステムと、NASファイルシステムのソースパスを選択します。

    • リソース設定

      パラメーター

      説明

      リソース設定

      • モデルソースをオープンソースモデルに設定した場合、システムはデフォルト値として選択されたモデルタイプに基づいてインスタンスタイプを自動的に選択します。

      • モデルソースをカスタム微調整モデルに設定した場合、モデルに一致するインスタンスタイプを選択する必要があります。 詳細については、「EASでのLLMアプリケーションのデプロイ」をご参照ください。

      推論の加速

      推論アクセラレーションは、A10またはGU30インスタンスにデプロイされているQwen、Llama2、ChatGLM、またはBaichuan2モデルに対して有効にできます。 次の推論アクセラレーションメソッドが提供されます。

      • BladeLLM推論アクセラレーション: BladeLLM推論アクセラレーションエンジンは、高い同時実行性と低いレイテンシを保証します。 BladeLLMを使用すると、費用対効果の高い方法でLLM推論を高速化できます。

      • オープンソースvLLM推論アクセラレーション

    • ベクトルデータベース设定

      パラメーター

      説明

      Vectorデータベース型

      ベクトルデータベースのエンジンタイプ。 [RDS PostgreSQL] を選択します。

      ホストアドレス

      RDSインスタンスの内部エンドポイントまたはパブリックエンドポイント。

      • 内部エンドポイント: RAGアプリケーションとデータベースが同じリージョンにある場合、内部エンドポイントを使用してRAGアプリケーションをRDSインスタンスに接続できます。

      • パブリックエンドポイント: RAGアプリケーションとデータベースが異なるリージョンにある場合、RDSインスタンスのパブリックエンドポイントを申請する必要があります。 詳細については、「パブリックエンドポイントの申請またはリリース」をご参照ください。

      ポート

      ポート番号 デフォルト値: 5432

      データベース

      RDSインスタンスに作成するデータベースの名前。

      テーブル名

      新しいテーブルまたは既存のテーブルの名前。 既存のテーブルの名前を入力する場合、テーブルスキーマはRAGベースのLLMチャットボットの要件を満たす必要があります。 たとえば、EASを使用してRAGベースのLLMチャットボットをデプロイするときに自動的に作成されるテーブルの名前を入力できます。

      [アカウント]

      RDSインスタンスの特権アカウント

      Password

      特権アカウントのパスワード。

    • VPC設定

      パラメーター

      説明

      [VPC]

      • ホストアドレスが内部エンドポイントの場合、RAGベースのLLMチャットボットのRDSインスタンスのVPCを選択する必要があります。

      • ホストアドレスがパブリックエンドポイントの場合、RAGベースのLLMチャットボット用にVPCとvSwitchを設定し、VPC用にNATゲートウェイとelastic IPアドレス (EIP) を作成する必要があります。 これにより、RAGベースのLLMチャットボットにインターネット経由でアクセスできるようになります。 RDSインスタンスのIPアドレスホワイトリストにEIPを追加する必要があります。 詳細については、「インターネットNATゲートウェイのSNAT機能を使用したインターネットへのアクセス」および「IPアドレスホワイトリストの設定」をご参照ください。

      vSwitch

      セキュリティグループ名

      セキュリティグループ。

      重要

      このセキュリティグループはシステムアクセス制御にのみ使用されるため、created_by_rdsという名前のセキュリティグループは使用しないでください。

  4. [デプロイ] をクリックします。

    [サービスステータス] 列の値が [実行中] に変わると、RAGベースのチャットボットがデプロイされます。

ステップ3: web UIでモデル推論を実行する

このセクションでは、web UIでRAGベースのチャットボットをデバッグする方法について説明します。 web UIでRAGベースのチャットボットのQ&Aパフォーマンスをテストした後、Platform for AI (PAI) が提供するAPI操作を呼び出して、RAGベースのチャットボットをビジネスシステムに適用できます。 詳細については、このトピックの「手順4: API操作を呼び出してモデル推論を実行する」をご参照ください。

1. RAGベースのチャットボットの設定

  1. RAGベースのチャットボットをデプロイした後、[サービスタイプ] 列の [Webアプリの表示] をクリックしてweb UIに移動します。

  2. 機械学習モデルを設定します。

    • 埋め込みモデル名: 4つのモデルが利用可能です。 デフォルトでは、最適なモデルが選択されています。

    • 埋め込みディメンション: 埋め込みモデル名パラメーターを設定すると、システムは自動的にこのパラメーターを設定します。

  3. ベクトルデータベースが接続されているかどうかを確認します。

    システムは、チャットボットのデプロイ時に構成されたベクトルデータベース設定を自動的に認識して適用します。 設定は変更できません。 [PostgreSQLの接続] をクリックして、RDSインスタンスのベクターデータベースが接続されているかどうかを確認します。

2. 指定したビジネスデータファイルのアップロード

[アップロード] タブで、ビジネスデータファイルをアップロードします。 TXT、PDF、XLSX、XLS、CSV、DOCX、DOC、Markdown、およびHTMLの形式でファイルをアップロードできます。

image

  1. セマンティックベースのチャンキングパラメータを設定します。

    次のパラメーターを設定して、ドキュメントチャンキングの粒度を制御し、自動Q&A抽出を有効にします。

    パラメーター

    説明

    チャンクサイズ

    各チャンクのサイズ。 単位はバイトです。 デフォルト値: 500。

    チャンク重複

    隣接するチャンク間の重複部分。 デフォルト値は 10 です。

    QA抽出モデルによるプロセス

    Q&A情報を抽出するかどうかを指定します。 [はい] を選択すると、ビジネスデータファイルがアップロードされた後、システムは自動的に質問と対応する回答をペアで抽出します。 これにより、データクエリでより正確な回答が返されます。

  2. [ファイル] タブで、1つ以上のビジネスデータファイルをアップロードします。 [ディレクトリ] タブで、業務データファイルを含むディレクトリをアップロードすることもできます。 たとえば、rag_chatbot_test_doc.txtファイルをアップロードできます。

  3. システムは、ビジネスデータファイルをアップロードする前に、ビジネスデータファイルに対してデータクレンジングおよびセマンティックベースのチャンキングを実行する。 データクレンジングは、テキスト抽出およびハイパーリンク置換を含む。

    image

3. モデル推論パラメーターの設定

[チャット] タブで、Q&Aポリシーを設定します。

検索ベースのクエリのQ&Aポリシーの設定

image

パラメーター

説明

ストリーミング出力

ストリーミングモードで結果を返すかどうかを指定します。 ストリーミング出力を選択した場合、結果はストリーミングモードで返されます。

検索モデル

検索メソッド。 有効な値:

  • 埋め込みのみ: ベクトルデータベースベースの検索が使用されます。

  • キーワードのみ: キーワードベースの検索が使用されます。

  • ハイブリッド: ベクトルデータベースベースの検索とキーワードベースの検索を組み合わせたマルチモーダル検索が使用されます。

説明

ほとんどの複雑なシナリオでは、ベクトルデータベースベースの検索によりパフォーマンスが向上します。 しかしながら、コーパスが乏しいいくつかの垂直フィールドにおいて、または正確なマッチングが必要とされるシナリオにおいて、ベクトルデータベースベースの検索は、疎および密なベクトルに基づく従来の検索と同じ有効性を達成しない場合がある。 疎ベクトルと密ベクトルに基づく検索は、ユーザークエリと知識ファイル間のキーワードの重複を計算し、より簡単で効率的です。

ApsaraDB RDS for PostgreSQLは、pg_jieba拡張機能を使用して中国語テキストをセグメント化します。 この拡張機能は、キーワードベースの検索とリコールに使用できます。 詳細については、「pg_jieba拡張機能の使用」をご参照ください。

Rerankerタイプ

ほとんどのベクターデータベースは、データの精度を損ない、高いコンピューティング効率を提供します。 その結果、ベクトルデータベースから返される上位K個の結果は、最も関連性が高くない可能性があります。 この場合、simple-weighted-rerankerまたはmodel-based-rerankerモデルを使用して、ベクトルデータベースから返される上位K件の結果に対して高精度の再ランク付け操作を実行し、より関連性の高い正確なナレッジファイルを取得できます。

説明

初めてモデルを使用する場合は、モデルが読み込まれるまでしばらく待つ必要があります。

トップK

ベクトルデータベースから返される最も関連性の高い結果の数。

^ a b c slee

^ a b c / / / / 値が大きいほど類似度が高いことを示す。

RAGベースのクエリのQ&Aポリシーの設定 (取得 + LLM)

image

  • PAIは、様々なプロンプトポリシーを提供する。 事前定義されたプロンプトテンプレートを選択するか、またはより良い推論結果を得るためのカスタムプロンプトテンプレートを指定できます。

  • RAG (取得 + LLM) クエリモードでは、ストリーミング出力、取得モード、およびリランカータイプのパラメーターを設定できます。 詳細については、「RAGベースのLLMチャットボット」をご参照ください。

4。 モデル推論の実行

検索

チャットボットは、ベクターデータベースから上位K件の関連結果を返します。

image

LLM

チャットボットはLLMアプリケーションのみを使用して回答を生成します。

image

RAG (検索 + LLM)

チャットボットは、ベクターデータベースから返された結果とクエリを選択したプロンプトテンプレートに入力し、テンプレートをLLMアプリケーションに送信して回答を提供します。

image

手順4: API操作を呼び出してモデル推論を実行

  1. RAGベースのチャットボットの呼び出し情報を取得します。

    1. RAGベースのチャットボットの名前をクリックして、[サービスの詳細] ページに移動します。

    2. [基本情報] セクションで、[エンドポイント情報の表示] をクリックします。

    3. [呼び出しメソッド] ダイアログボックスの [パブリックエンドポイント] タブで、サービスエンドポイントとトークンを取得します。

  2. WebUIを介してベクターデータベースに接続し、ナレッジベースファイルをアップロードします。

    生成されたテーブルの構造 (PAI-RAG形式に準拠) に基づいて、ナレッジベースをベクトルベースにアップロードすることもできます。

  3. APIを介してサービスを呼び出します。

    PAIでは、さまざまなクエリモードで次のAPI操作を使用して、RAGベースのチャットボットを呼び出すことができます。検索モードではservice/query/retrieval、llmモードではservice/query /LLM、RAGモードではservice/queryです。 サンプルコード:

    cURLコマンド

    • シングルラウンド会話リクエストを開始する

      • 方法1: service/query/retrieval操作を呼び出します。

        curl -X 'POST'  '<service_url>service/query/retrieval' -H 'Authorization: <service_token>' -H 'accept: application/json' -H 'Content-Type: application/json'  -d '{"question": "What is PAI?"}'
        # Replace <service_url> and <service_token> with the service endpoint and service token that you obtained in Step 1.

      • 方法2: /service/query/llm操作を呼び出します。

        curl -X 'POST'  '<service_url>service/query/llm' -H 'Authorization: <service_token>' -H 'accept: application/json'  -H 'Content-Type: application/json'  -d '{"question": "What is PAI?"}'
        # Replace <service_url> and <service_token> with the service endpoint and service token that you obtained in Step 1.

        {"question":"What is PAI?" 、"temperature": 0.9} など、他の調整可能な推論パラメーターを追加できます。

      • 方法3: service/query操作を呼び出します。

        curl -X 'POST'  '<service_url>service/query' -H 'Authorization: <service_token>' -H 'accept: application/json'  -H 'Content-Type: application/json'  -d '{"question": "What is PAI?"}'
        # Replace <service_url> and <service_token> with the service endpoint and service token that you obtained in Step 1.

        {"question":"What is PAI?" 、"temperature": 0.9} など、他の調整可能な推論パラメーターを追加できます。

    • マルチラウンド会話検索要求を開始する

      マルチラウンドの会話検索リクエストは、RAGおよびLLMクエリモードでのみ開始できます。 次のサンプルコードは、RAGクエリモードでマルチラウンド会話検索リクエストを開始する方法の例を示しています。

      # Send the request.  
      curl -X 'POST'  '<service_url>service/query' -H 'Authorization: <service_token>' -H 'accept: application/json'  -H 'Content-Type: application/json'  -d '{"question": "What is PAI?"}'
      
      # Provide the session ID returned for the request. This ID uniquely identifies a conversation in the conversation history. After the session ID is provided, the corresponding conversation is stored and is automatically included in subsequent requests to call an LLM. 
      curl -X 'POST'  '<service_url>service/query' -H 'Authorization: <service_token>' -H 'accept: application/json'  -H 'Content-Type: application/json'  -d '{"question": "What are the benefits of PAI?","session_id": "ed7a80e2e20442eab****"}'
      
      # Provide the chat_history parameter, which contains the conversation history between you and the chatbot. The parameter value is a list in which each element indicates a single round of conversation in the {"user":"Inputs","bot":"Outputs"} format. Multiple conversations are sorted in chronological order. 
      curl -X 'POST'  '<service_url>service/query' -H 'Authorization: <service_token>' -H 'accept: application/json'  -H 'Content-Type: application/json'  -d '{"question":"What are the features of PAI?", "chat_history": [{"user":"What is PAI", "bot":"PAI is an AI platform provided by Alibaba Cloud..."}]}'
      
      # If you provide both the session_id and chat_history parameters, the conversation history is appended to the conversation that corresponds to the specified session ID.  
      curl -X 'POST'  '<service_url>service/query' -H 'Authorization: <service_token>' -H 'accept: application/json'  -H 'Content-Type: application/json'  -d '{"question":"What are the features of PAI?", "chat_history": [{"user":"What is PAI", "bot":"PAI is an AI platform provided by Alibaba Cloud..."}], "session_id": "1702ffxxad3xxx6fxxx97daf7c"}'

    Python

    • 次のサンプルコードは、単一ラウンドの会話検索リクエストを開始する方法の例を示しています。

      import requests
      
      EAS_URL = 'http://xxxx.****.cn-beijing.pai-eas.aliyuncs.com'
      headers = {
          'accept': 'application/json',
          'Content-Type': 'application/json',
          'Authorization': 'MDA5NmJkNzkyMGM1Zj****YzM4M2YwMDUzZTdiZmI5YzljYjZmNA==',
      }
      
      
      def test_post_api_query_llm():
          url = EAS_URL + '/service/query/llm'
          data = {
             "question":"What is PAI?"
          }
          response = requests.post(url, headers=headers, json=data)
      
          if response.status_code != 200:
              raise ValueError(f'Error post to {url}, code: {response.status_code}')
          ans = dict(response.json())
          print(f"======= Question =======\n {data['question']}")
          print(f"======= Answer =======\n {ans['answer']} \n\n")
      
      
      def test_post_api_query_retrieval():
          url = EAS_URL + '/service/query/retrieval'
          data = {
             "question":"What is PAI?"
          }
          response = requests.post(url, headers=headers, json=data)
      
          if response.status_code != 200:
              raise ValueError(f'Error post to {url}, code: {response.status_code}')
          ans = dict(response.json())
          print(f"======= Question =======\n {data['question']}")
          print(f"======= Answer =======\n {ans['docs']}\n\n")
      
      
      def test_post_api_query_rag():
          url = EAS_URL + '/service/query'
          data = {
             "question":"What is PAI?"
          }
          response = requests.post(url, headers=headers, json=data)
      
          if response.status_code != 200:
              raise ValueError(f'Error post to {url}, code: {response.status_code}')
          ans = dict(response.json())
          print(f"======= Question =======\n {data['question']}")
          print(f"======= Answer =======\n {ans['answer']}")
          print(f"======= Retrieved Docs =======\n {ans['docs']}\n\n")
      # LLM
      test_post_api_query_llm()
      # Retrieval
      test_post_api_query_retrieval()
      # RAG (Retrieval + LLM)
      test_post_api_query_rag()
      

      EAS_URLパラメーターをRAGベースのチャットボットのエンドポイントに設定します。 エンドポイントの末尾にあるスラッシュ (/) を削除してください。 [権限付与] パラメーターをRAGベースのチャットボットのトークンに設定します。

    • マルチラウンド会話検索要求を開始する

      マルチラウンド会話検索リクエストは、RAG (検索 + LLM) およびLLMクエリモードでのみ開始できます。 サンプルコード:

      import requests
      
      EAS_URL = 'http://xxxx.****.cn-beijing.pai-eas.aliyuncs.com'
      headers = {
          'accept': 'application/json',
          'Content-Type': 'application/json',
          'Authorization': 'MDA5NmJkN****jNlMDgzYzM4M2YwMDUzZTdiZmI5YzljYjZmNA==',
      }
      
      
      def test_post_api_query_llm_with_chat_history():
          url = EAS_URL + '/service/query/llm'
          # Round 1 query
          data = {
             "question":"What is PAI?"
          }
          response = requests.post(url, headers=headers, json=data)
      
          if response.status_code != 200:
              raise ValueError(f'Error post to {url}, code: {response.status_code}')
          ans = dict(response.json())
          print(f"=======Round 1: Question =======\n {data['question']}")
          print(f"=======Round 1: Answer =======\n {ans['answer']} session_id: {ans['session_id']} \n")
         
          # Round 2 query
          data_2 = {
             "question": "What are the benefits of PAI?",
             "session_id": ans['session_id']
          }
          response_2 = requests.post(url, headers=headers, json=data_2)
      
          if response.status_code != 200:
              raise ValueError(f'Error post to {url}, code: {response.status_code}')
          ans_2 = dict(response_2.json())
          print(f"=======Round 2: Question =======\n {data_2['question']}")
          print(f"=======Round 2: Answer =======\n {ans_2['answer']} session_id: {ans_2['session_id']} \n\n")
      
      
      def test_post_api_query_rag_with_chat_history():
          url = EAS_URL + '/service/query'
         
          # Round 1 query
          data = {
             "question":"What is PAI?"
          }
          response = requests.post(url, headers=headers, json=data)
      
          if response.status_code != 200:
              raise ValueError(f'Error post to {url}, code: {response.status_code}')
          ans = dict(response.json())
      
          print(f"=======Round 1: Question =======\n {data['question']}")
          print(f"=======Round 1: Answer =======\n {ans['answer']} session_id: {ans['session_id']}")
          print(f"=======Round 1: Retrieved Docs =======\n {ans['docs']}\n")
      
          # Round 2 query
          data = {
             "question":"What are the features of PAI?",
             "session_id": ans['session_id']
          }
          response = requests.post(url, headers=headers, json=data)
      
          if response.status_code != 200:
              raise ValueError(f'Error post to {url}, code: {response.status_code}')
          ans = dict(response.json())
      
          print(f"=======Round 2: Question =======\n {data['question']}")
          print(f"=======Round 2: Answer =======\n {ans['answer']} session_id: {ans['session_id']}")
          print(f"=======Round 2: Retrieved Docs =======\n {ans['docs']}")
      # LLM
      test_post_api_query_llm_with_chat_history()
      # RAG (Retrieval + LLM)
      test_post_api_query_rag_with_chat_history()
      

      EAS_URLパラメーターをRAGベースのチャットボットのエンドポイントに設定します。 エンドポイントの末尾にあるスラッシュ (/) を削除してください。 [権限付与] パラメーターをRAGベースのチャットボットのトークンに設定します。

その他の機能

RDSインスタンスのベクトルデータベースとして使用されているデータベースに接続すると、インポートされたナレッジベースのコンテンツを表示できます。 データベースへの接続方法の詳細については、「ApsaraDB RDS For PostgreSQLインスタンスへの接続」をご参照ください。

image

関連ドキュメント

EASを使用して、次のアイテムを展開することもできます。

  • web UIまたはAPI操作を使用して呼び出すことができるLLMアプリケーションをデプロイできます。 LLMアプリケーションがデプロイされたら、LangChainフレームワークを使用してエンタープライズナレッジベースをLLMアプリケーションに統合し、インテリジェントなQ&Aおよび自動化機能を実装します。 詳細については、「EASでのLLMの迅速なデプロイ」をご参照ください。

  • ComfyUIおよびStable video Diffusionモデルを使用して、AIビデオ生成モデルサービスをデプロイできます。 これにより、ソーシャルメディアプラットフォームでの短いビデオ生成やアニメーションなどのタスクを完了できます。 詳細については、「ComfyUIを使用したAIビデオ生成モデルサービスのデプロイ」をご参照ください。

よくある質問

RAGベースのチャットボットのチャット履歴機能を無効にするにはどうすればよいですか?

RAGベースのチャットボットのweb UIページで、[チャット履歴] を選択しないでください。image