全部產品
Search
文件中心

Tablestore:基於EAS和Tablestore搭建RAG檢索增強對話系統

更新時間:Mar 27, 2025

在人工智慧平台PAI部署大模型RAG對話系統時,您可以使用Tablestore作為向量檢索資料庫。本文以JSON獨立部署的方式介紹如何將Tablestore作為RAG對話系統的向量檢索庫。

背景資訊

EAS簡介

模型線上服務(EAS)是PAI產品為實現一站式模型開發部署應用,針對線上推理情境提供的模型線上服務,支援將模型服務部署在公用資源群組或專屬資源群組,實現基於異構硬體(CPU和GPU)的模型載入和資料請求的即時響應。

Tablestore簡介

Table Store(Tablestore)是低成本、高效能的海量資料存放區與檢索系統,可以提供高召回(多路召回、標量/向量混合檢索)、高效能(即時索引、毫秒級查詢、單表上限百億向量)、穩定安全(獨立VPC、可用性99.99%、資料可靠性12個9)的向量檢索功能。

RAG簡介

RAG(Retrieval-Augmented Generation,檢索增強產生)技術通過從外部知識庫檢索相關資訊,並將其與使用者輸入合并後傳入大語言模型(LLM),從而增強模型在私人領域知識問答方面的能力。使用Tablestore作為RAG應用的向量檢索庫時,知識庫檔案上傳、儲存以及檢索的流程如下圖所示。

image

注意事項

本文樣本選用的LLM模型為 DeepSeek-R1-Distill-Qwen-1.5B,部署資源規格為 ecs.gn7i-c16g1.4xlarge,具體計費請參見模型線上服務(EAS)計費說明

重要

如果您只是為了體驗部署流程,請在體驗完成後及時刪除部署的服務,避免資源長時間計費。

操作步驟

步驟一:準備Tablestore向量檢索庫

開通Table Store服務

如果已開通Table Store服務,請跳過此步驟。

  1. 登入產品詳情頁

  2. 單擊免費開通

  3. Table Store (Pay-As-You-Go)頁面,單擊立即購買

  4. 確認訂單頁面,仔細閱讀協議後,選中我已閱讀並同意Table Store (Pay-As-You-Go)服務合約,單擊立即開通

  5. 開通完成後,單擊管理主控台,進入Tablestore控制台。

建立執行個體

您也可以選擇已有執行個體作為向量檢索庫。選擇已有執行個體時,請準備執行個體的執行個體名稱、VPC訪問地址和具有執行個體存取權限的AccessKey資訊。

  1. 登入Table Store控制台

  2. 在頁面上方,選擇資源群組和地區,單擊建立執行個體

  3. 購買方式對話方塊中,輸入執行個體名稱,選擇執行個體規格,單擊確定。

擷取串連資訊

  1. 單擊執行個體名稱或執行個體管理進入執行個體詳情頁簽,查看執行個體的訪問地址(Endpoint)、執行個體名稱。

    說明

    訪問地址請選擇VPC地址。

  2. 為阿里雲帳號或者具有Table Store存取權限的RAM使用者建立AccessKey

步驟二:使用EAS部署RAG對話系統

  1. 開通PAI服務並建立預設工作空間

    重要

    開通PAI服務的地區必須和Table Store的執行個體所在地區保持一致。

  2. PAI控制台左側功能表列的模型部署下單擊模型線上服務(EAS)

  3. 在模型線上服務(EAS)頁面中單擊部署服務,選擇JSON獨立部署

  4. 在JSON獨立部署頁面,輸入部署配置,單擊部署。在彈出的是否確認進行部署彈窗中,單擊確定進行部署。

操作完成後,將自動進入部署流程,整個部署流程大概需要5分鐘。部署完成後,服務狀態將變為運行中。

如果指定的向量資料表不存在,部署過程會自動在Table Store執行個體下建立資料表以及多元索引。

image

樣本設定檔及參數說明

樣本設定檔

{
  "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",
          "vpc_id": "vpc-bp*****************po",
          "vswitch_id": "vsw-bp*****************eu"
      }
  },
  "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"
              },
              {
                  "name": "PAIRAG_RAG__INDEX__VECTOR_STORE__endpoint",
                  "value": "https://d0********9c.cn-hangzhou.vpc.tablestore.aliyuncs.com"
              },
              {
                  "name": "PAIRAG_RAG__INDEX__VECTOR_STORE__instance_name",
                  "value": "d0********9c"
              },
              {
                  "name": "PAIRAG_RAG__INDEX__VECTOR_STORE__access_key_id",
                  "value": "LT********************u7"
              },
              {
                  "name": "PAIRAG_RAG__INDEX__VECTOR_STORE__access_key_secret",
                  "value": "nI**************************GF"
              },
              {
                  "name": "PAIRAG_RAG__INDEX__VECTOR_STORE__table_name",
                  "value": "pai_rag"
              },
              {
                  "name": "PAIRAG_RAG__DATA_READER__enable_image_ocr",
                  "value": "false"
              },
              {
                  "name": "PAIRAG_RAG__LLM__source",
                  "value": "PaiEas"
              },
              {
                  "name": "PAIRAG_RAG__LLM__endpoint",
                  "value": "http://127.0.0.1:8000"
              },
              {
                  "name": "PAIRAG_RAG__LLM__token",
                  "value": "abc"
              },
              {
                  "name": "PAIRAG_RAG__EMBEDDING__source",
                  "value": "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",
      "system_eas_deployment_type": "rag",
      "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,
      "enable_webservice": true,
      "gpu": 1,
      "instance": 1,
      "memory": 60000,
      "name": "rag_tablestore",
      "rpc": {
          "keepalive": 900000000
      },
      "shm_size": 100
  },
  "storage": [
      {
          "mount_path": "/model_dir/",
          "oss": {
              "endpoint": "cn-hangzhou-internal.oss-data-acc.aliyuncs.com",
              "path": "oss://pai-quickstart-cn-hangzhou/modelscope/models/DeepSeek-R1-Distill-Qwen-1.5B/"
          },
          "properties": {
              "resource_type": "model",
              "resource_use": "base"
          }
      }
  ]
}

參數說明

  • 向量檢索庫設定

    通過 env 環境變數進行設定,需要設定的環境變數內容如下表所示。

    環境變數

    說明

    PAIRAG_RAG__INDEX__VECTOR_STORE__type

    向量檢索庫類型,值固定為tablestore。

    PAIRAG_RAG__INDEX__VECTOR_STORE__endpoint

    Table Store的訪問地址。

    PAIRAG_RAG__INDEX__VECTOR_STORE__instance_name

    Table Store的執行個體名稱。

    PAIRAG_RAG__INDEX__VECTOR_STORE__access_key_id

    阿里雲帳號或者RAM使用者的AccessKey ID。

    PAIRAG_RAG__INDEX__VECTOR_STORE__access_key_secret

    阿里雲帳號或者RAM使用者的AccessKey Secret。

    PAIRAG_RAG__INDEX__VECTOR_STORE__table_name

    儲存向量資料的資料表名稱。

  • 專用網路配置

    通過 cloud.networking 配置專用網路,如果沒有專用網路配置需求,您可以刪除樣本設定檔內的相應內容。

    參數

    說明

    vpc_id

    專用網路ID。

    vswitch_id

    交換器ID。

    security_group_id

    安全性群組ID。

如果您想瞭解EAS部署的其它參數,請參見JSON部署參數說明

步驟三:使用RAG對話系統

  1. 在服務列表,單擊服務方式下方的查看Web應用,在彈窗中單擊跳轉Web應用

  2. 在儀錶盤的Upload頁面,上傳知識庫檔案,例如rag_chatbot_test_doc.txt

    image

    知識庫檔案解析上傳完成後,您可以在Table Store控制台查看寫入的向量資料。

    image

  3. 在儀錶盤的Chat頁面,輸入問題,單擊Submit,進行知識問答。

    image

如果您想瞭解更多關於WebUI頁面調試的內容,例如修改向量檢索庫和大語言模型、知識庫支援的檔案類型等,請參見大模型RAG對話系統