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

Tablestore:EAS と Tablestore を使用して RAG ベースの LLM チャットボットをデプロイする

最終更新日:May 01, 2025

Retrieval-Augmented Generation(RAG)ベースの大規模言語モデル(LLM)チャットボットを Platform for AI(PAI)にデプロイする場合、ベクトルデータベースとして Tablestore を使用できます。このトピックでは、JSON 構成を使用してデプロイされた RAG ベースの LLM チャットボットのベクトルデータベースとして Tablestore を使用する方法について説明します。

背景情報

EAS

PAI は、モデルの開発とデプロイのためのワンストッププラットフォームを提供します。PAI の Elastic Algorithm Service(EAS) モジュールを使用すると、パブリックリソースグループまたは専用リソースグループを使用して、モデルをオンライン推論サービスとしてデプロイできます。モデルは、リアルタイムの応答を生成するために、異種ハードウェア(CPU および GPU)にロードされます。

Tablestore

Tablestore は、大規模データのストレージと取得のための費用対効果が高く、高性能なシステムです。サービスの安定性とセキュリティ(専用 VPC、99.99% の可用性、12 ナインのデータ信頼性)を確保するために、高い取得率(マルチモーダル取得、スカラーとベクトルの混合取得)と高性能(リアルタイムインデックス作成、ミリ秒単位のクエリ、テーブルあたり最大 100 億ベクトルのサポート)を備えたベクトル取得機能を提供します。

RAG

RAG は、外部ナレッジベースから関連情報を取得し、その情報をユーザー入力と組み合わせ、次に組み合わせた入力を LLM に渡します。これにより、特定のドメインにおける LLM の知識ベースの Q&A 機能が強化されます。次の図は、Tablestore を RAG アプリケーションのベクトルデータベースとして使用する場合のナレッジベースファイルのアップロード、保存、および取得方法を示しています。

image

注意事項

この例では、LLM モデル DeepSeek-R1-Distill-Qwen-1.5Becs.gn7i-c16g1.4xlarge タイプのインスタンスにデプロイされています。EAS の課金方法については、「EAS の課金」をご参照ください。

重要

デプロイプロセスのみをテストする場合は、リソースの予期しない課金を防ぐために、デプロイ後すぐにデプロイされたサービスを削除する必要があります。

手順

ステップ 1:Tablestore ベクトルデータベースを準備する

Tablestore を有効にする

Tablestore が有効になっている場合は、このステップをスキップします。

  1. 製品詳細ページ にログインします。

  2. [Get It Free] をクリックします。

  3. [Table Store (Pay-As-You-Go)] ページで、[Buy Now] をクリックします。

  4. [Confirm Order] ページで、契約をよく読んで、[I Have Read And Agree To Table Store (Pay-As-You-Go) Agreement Of Service] を選択し、[Activate Now] をクリックします。

  5. Tablestore を有効にした後、[Console] をクリックして Tablestore コンソールに移動します。

Tablestore インスタンスを作成する

既存のインスタンスをベクトルデータベースとして選択することもできます。この場合、インスタンス名、Virtual Private Cloud(VPC)エンドポイント、インスタンスへのアクセス権限を持つ AccessKey ペアなどの情報を準備する必要があります。

  1. Tablestore コンソール にログインします。

  2. 上部のナビゲーションバーで、リソースグループとリージョンを選択し、[インスタンスの作成] をクリックします。

  3. [課金方法] ダイアログボックスで、[インスタンス名][インスタンスタイプ] を指定し、[OK] をクリックします。

接続情報を取得する

  1. インスタンス名または [インスタンスの管理] をクリックして、[インスタンスの詳細] タブに移動します。 [インスタンスの詳細] タブで、インスタンスアクセス URL とインスタンス名を確認できます。

    説明

    VPC エンドポイントをインスタンスアクセス URL として使用します。

  2. Tablestore へのアクセス権限を持つ Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ペアを作成します

ステップ 2: EAS を使用して RAG ベースの LLM チャットボットをデプロイする

  1. PAI を有効にし、デフォルトのワークスペースを作成します

    重要

    Tablestore インスタンスと同じリージョンで PAI を有効にする必要があります。

  2. PAI コンソール の左側のナビゲーションウィンドウで、[モデルのデプロイ] > [Elastic Algorithm Service (EAS)] を選択します。

  3. [Elastic Algorithm Service (EAS)] ページで、[サービスのデプロイ] をクリックします。表示されるページで、[JSON デプロイ] をクリックします。

  4. [JSON デプロイ] ページで、デプロイ構成を入力し、[デプロイ] をクリックします。表示されるメッセージで、[OK] をクリックします。

上記の手順を完了すると、システムはすぐに RAG ベースの LLM チャットボットのデプロイを開始します。デプロイプロセス全体には約 5 分かかります。デプロイが完了すると、サービスステータスが [実行中] に変わります。

指定されたベクトルデータテーブルが存在しない場合、システムはデプロイ中に自動的にデータテーブルを作成し、Tablestore インスタンスの検索インデックスを構成します。

サンプル構成ファイルとパラメーターの説明

サンプル構成ファイル

{
  "SupportedInstanceTypes": [
      "ecs.gn7i-c16g1.4xlarge",
      "ecs.gn7i-c32g1.16xlarge",
      "ecs.gn7i-c32g1.32xlarge",
      "ecs.gn7i-c32g1.8xlarge",
      "ecs.gn7i-c8g1.2xlarge",
      "ecs.gn7i-c8g1.2xlarge.limit",
      "ecs.gn8is-2x.8xlarge",
      "ecs.gn8is-4x.16xlarge",
      "ecs.gn8is-8x.32xlarge",
      "ecs.gn8is.2xlarge",
      "ecs.gn8is.4xlarge",
      "ecs.gn8v.6xlarge",
      "ecs.gn8v-2x.12xlarge",
      "ecs.gn8v-4x.24xlarge",
      "ecs.gn8v-8x.48xlarge",
      "ml.gu7i.c128m752.4-gu30",
      "ml.gu7i.c16m60.1-gu30",
      "ml.gu7i.c32m188.1-gu30",
      "ml.gu7i.c64m376.2-gu30",
      "ml.gu7i.c8m30.1-gu30",
      "ml.gu8is.c128m1024.8-gu60",
      "ml.gu8is.c16m128.1-gu60",
      "ml.gu8is.c32m256.2-gu60",
      "ml.gu8is.c64m512.4-gu60",
      "ml.gu8v.c192m1024.8-gu120",
      "ml.gu8v.c24m128.1-gu120",
      "ml.gu8v.c48m256.2-gu120",
      "ml.gu8v.c96m512.4-gu120"
  ],
  "cloud": { // クラウド設定
      "computing": { // 計算リソース設定
          "instances": [ // インスタンス設定
              {
                  "type": "ecs.gn7i-c16g1.4xlarge" // インスタンスタイプ
              }
          ]
      },
      "networking": { // ネットワーク設定
          "security_group_id": "sg-bp****************dj", // セキュリティグループ ID
          "vpc_id": "vpc-bp*****************po", // VPC ID
          "vswitch_id": "vsw-bp*****************eu" // vSwitch ID
      }
  },
  "containers": [ // コンテナ設定
      {
          "image": "eas-registry-vpc.cn-hangzhou.cr.aliyuncs.com/pai-eas/pai-rag:0.2.0-nginx", // イメージ名
          "port": 8680, // ポート番号
          "script": "/docker-entrypoint.sh nginx" // 実行スクリプト
      },
      {
          "env": [ // 環境変数
              {
                  "name": "PAIRAG_RAG__SETTING__interactive", // 環境変数名
                  "value": "false" // 環境変数値
              }
          ],
          "image": "eas-registry-vpc.cn-hangzhou.cr.aliyuncs.com/pai-eas/pai-rag:0.2.0-ui", // イメージ名
          "port": 8002, // ポート番号
          "script": "pai_rag ui" // 実行スクリプト
      },
      {
          "env": [ // 環境変数
              {
                  "name": "PAIRAG_RAG__INDEX__VECTOR_STORE__type", // 環境変数名:ベクトルデータベースのタイプ
                  "value": "tablestore" // 環境変数値:tablestore に固定
              },
              {
                  "name": "PAIRAG_RAG__INDEX__VECTOR_STORE__endpoint", // 環境変数名:Tablestore インスタンスのエンドポイント
                  "value": "https://d0********9c.cn-hangzhou.vpc.tablestore.aliyuncs.com" // 環境変数値:Tablestore インスタンスのエンドポイント
              },
              {
                  "name": "PAIRAG_RAG__INDEX__VECTOR_STORE__instance_name", // 環境変数名:Tablestore インスタンス名
                  "value": "d0********9c" // 環境変数値:Tablestore インスタンス名
              },
              {
                  "name": "PAIRAG_RAG__INDEX__VECTOR_STORE__access_key_id", // 環境変数名:Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID
                  "value": "LT********************u7" // 環境変数値:Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID
              },
              {
                  "name": "PAIRAG_RAG__INDEX__VECTOR_STORE__access_key_secret", // 環境変数名:Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey シークレット
                  "value": "nI**************************GF" // 環境変数値:Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey シークレット
              },
              {
                  "name": "PAIRAG_RAG__INDEX__VECTOR_STORE__table_name", // 環境変数名:ベクトルを格納するソーステーブルの名前
                  "value": "pai_rag" // 環境変数値:ベクトルを格納するソーステーブルの名前
              },
              {
                  "name": "PAIRAG_RAG__DATA_READER__enable_image_ocr", // 環境変数名:画像 OCR の有効化
                  "value": "false" // 環境変数値:false
              },
              {
                  "name": "PAIRAG_RAG__LLM__source", // 環境変数名:LLM のソース
                  "value": "PaiEas" // 環境変数値:PaiEas
              },
              {
                  "name": "PAIRAG_RAG__LLM__endpoint", // 環境変数名:LLM のエンドポイント
                  "value": "http://127.0.0.1:8000" // 環境変数値:LLM のエンドポイント
              },
              {
                  "name": "PAIRAG_RAG__LLM__token", // 環境変数名:LLM のトークン
                  "value": "abc" // 環境変数値:LLM のトークン
              },
              {
                  "name": "PAIRAG_RAG__EMBEDDING__source", // 環境変数名:埋め込みのソース
                  "value": "HuggingFace" // 環境変数値:HuggingFace
              },
              {
                  "name": "PAIRAG_RAG__EMBEDDING__model_name", // 環境変数名:埋め込みモデル名
                  "value": "bge-small-zh-v1.5" // 環境変数値:埋め込みモデル名
              }
          ],
          "image": "eas-registry-vpc.cn-hangzhou.cr.aliyuncs.com/pai-eas/pai-rag:0.2.0", // イメージ名
          "port": 8001, // ポート番号
          "script": "pai_rag serve" // 実行スクリプト
      },
      {
          "image": "eas-registry-vpc.cn-hangzhou.cr.aliyuncs.com/pai-eas/sglang:v0.4.1.post6-cu124_netcat_accelerated", // イメージ名
          "port": 8000, // ポート番号
          "script": "gpu_count=$(nvidia-smi --query-gpu=count --format=csv,noheader | wc -l); python3 -m sglang.launch_server --model-path /model_dir --host 0.0.0.0 --port 8000 --tp $gpu_count --trust-remote-code --enable-metrics --served-model-name DeepSeek-R1-Distill-Qwen-1.5B" // 実行スクリプト
      }
  ],
  "labels": { // ラベル
      "PAI_RAG_VERSION": "0.1_custom", // PAI RAG バージョン
      "system_eas_deployment_type": "rag", // EAS デプロイタイプ
      "system_eas_rag_open_source_model_acc_type": "SGLang-Accelerate:Single-Node-Standard", // オープンソースモデルのアクセラレーションタイプ
      "system_eas_rag_open_source_model_name": "DeepSeek-R1-Distill-Qwen-1.5B" // オープンソースモデル名
  },
  "metadata": { // メタデータ
      "cpu": 16, // CPU 数
      "enable_webservice": true, // Web サービスの有効化
      "gpu": 1, // GPU 数
      "instance": 1, // インスタンス数
      "memory": 60000, // メモリサイズ(MB)
      "name": "rag_tablestore", // サービス名
      "rpc": { // RPC 設定
          "keepalive": 900000000 // キープアライブ時間(ナノ秒)
      },
      "shm_size": 100 // 共有メモリサイズ(MB)
  },
  "storage": [ // ストレージ設定
      {
          "mount_path": "/model_dir/", // マウントパス
          "oss": { // OSS 設定
              "endpoint": "cn-hangzhou-internal.oss-data-acc.aliyuncs.com", // OSS エンドポイント
              "path": "oss://pai-quickstart-cn-hangzhou/modelscope/models/DeepSeek-R1-Distill-Qwen-1.5B/" // OSS パス
          },
          "properties": { // プロパティ
              "resource_type": "model", // リソースタイプ
              "resource_use": "base" // リソースの使用
          }
      }
  ]
}

パラメーターの説明

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

    環境変数 を使用してベクトルデータベース設定を追加する必要があります。次の表に、必要な環境変数を示します。

    環境変数

    説明

    PAIRAG_RAG__INDEX__VECTOR_STORE__type

    ベクトルデータベースのタイプ。 tablestore に固定されています。

    PAIRAG_RAG__INDEX__VECTOR_STORE__endpoint

    Tablestore インスタンスのエンドポイント。

    PAIRAG_RAG__INDEX__VECTOR_STORE__instance_name

    Tablestore インスタンスの名前。

    PAIRAG_RAG__INDEX__VECTOR_STORE__access_key_id

    Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID。

    PAIRAG_RAG__INDEX__VECTOR_STORE__access_key_secret

    Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey シークレット。

    PAIRAG_RAG__INDEX__VECTOR_STORE__table_name

    ベクトルを格納するソーステーブルの名前。

  • VPC 設定

    cloud.networking を使用して VPC 設定を追加する必要があります。特定の VPC が不要な場合は、サンプル構成ファイルから関連設定を削除します。

    パラメーター

    説明

    vpc_id

    VPC ID。

    vswitch_id

    vSwitch ID。

    security_group_id

    セキュリティグループ ID。

EAS デプロイのその他のパラメーターの詳細については、「JSON デプロイのパラメーター」をご参照ください。

ステップ 3:RAG ベースの LLM チャットボットを使用する

  1. サービスリストで、デプロイされたサービスを見つけ、サービスの種類 列の [Web アプリの表示] をクリックします。表示されるダイアログボックスで、[Web アプリ] をクリックします。

  2. PAI-RAG ダッシュボードの [アップロード] タブで、ナレッジベースファイルをアップロードします。

    image

    ナレッジベースファイルが解析されてアップロードされると、Tablestore コンソール でファイルに書き込まれたベクトルデータを表示できます。

  3. PAI-RAG ダッシュボードの [チャット] タブで、質問を入力し、[送信] をクリックして会話を開始します。

ベクトルデータベース、LLM、ナレッジベースでサポートされているファイルタイプの変更など、Web UI デバッグの詳細については、「RAG ベースの LLM チャットボット」をご参照ください。