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

ApsaraDB RDS:ApsaraDB RDS for PostgreSQL と Dify を使用した AI アプリケーションの構築

最終更新日:Jun 05, 2026

オープンソース LLM プラットフォームである Dify のリレーショナルデータベースおよびベクトルストアとして ApsaraDB RDS for PostgreSQL を使用し、インテリジェント Q&A アプリケーションを構築します。

ステップ 1: ApsaraDB RDS for PostgreSQL インスタンスの作成

  1. ApsaraDB RDS for PostgreSQL インスタンスの迅速な作成を行います。

  2. ApsaraDB RDS for PostgreSQL インスタンスのアカウントとデータベースの作成を行います。

    次の点に注意してください:

    • アカウントを作成する際、[アカウントタイプ][特権アカウント] に設定します。

    • データベースの作成時に、[承認済みアカウント] を作成した特権アカウントに設定します。

  3. ApsaraDB RDS for PostgreSQL インスタンスのパブリックエンドポイントを有効にします。パブリックエンドポイントの有効化または無効化をご参照ください。

    ECS インスタンスのパブリック IP アドレスを、ApsaraDB RDS for PostgreSQL インスタンスのホワイトリストに追加します。IP アドレスホワイトリストの設定をご参照ください。

  4. 対象データベースのベクトル拡張機能を有効にします。拡張機能の管理をご参照ください。

ステップ 2: Dify のデプロイ

  1. Elastic Compute Service (ECS) インスタンスを作成します。ウィザードを使用したインスタンスの作成をご参照ください。

    • CPU ベースの ECS インスタンスは、オンライン LLM をサポートします。

    • GPU アクセラレーションを備えた ECS インスタンスは、オンラインおよびローカルにデプロイされた LLM の両方をサポートします。

    重要
    • この記事では、Alibaba Cloud Linux 3 を例として使用します。

    • GPU アクセラレーションを備えた ECS インスタンスを使用する場合、イメージの設定時に GPU ドライバーをインストールしてください。これにより、Ollama を使用して LLM をデプロイできます。

  2. ECS インスタンスに Docker をインストールします。

  3. (オプション) GPU アクセラレーションを備えた ECS インスタンスを使用している場合、次のコマンドを実行して container-toolkit コンポーネントをインストールします。

    container-toolkit コンポーネントのインストール

    curl -s -L https://nvidia.github.io/nvidia-container-runtime/centos8/nvidia-container-runtime.repo | \
    sudo tee /etc/yum.repos.d/nvidia-container-runtime.repo
    sudo yum install -y nvidia-container-toolkit
    # Docker を再起動します。
    sudo systemctl restart docker
  4. Dify のソースコードをクローンします。

    git clone https://github.com/langgenius/dify.git

    特定のバージョンをインストールするには、branch パラメータを使用します。利用可能なバージョン:dify。v1.0.0 の例:

    git clone https://github.com/langgenius/dify.git --branch 1.0.0
    説明

    Git がインストールされていない場合は、sudo yum install git -y を実行してインストールしてください。

  5. ApsaraDB RDS for PostgreSQL をデフォルトのデータベースおよびベクトルストアとして設定するため、環境変数を設定します。

    1. ApsaraDB RDS for PostgreSQL をデフォルトのデータベースとして設定します。

      export DB_USERNAME=testdbuser
      export DB_PASSWORD=dbPassword
      export DB_HOST=pgm-****.pg.rds.aliyuncs.com
      export DB_PORT=5432
      export DB_DATABASE=testdb01

      これらの値を実際の設定に置き換えてください。

      パラメータ

      説明

      DB_USERNAME

      ApsaraDB RDS for PostgreSQL インスタンスの特権アカウント。

      DB_PASSWORD

      ApsaraDB RDS for PostgreSQL インスタンスの特権アカウントのパスワード。

      DB_HOST

      ApsaraDB RDS for PostgreSQL インスタンスのパブリックエンドポイント。

      DB_PORT

      ApsaraDB RDS for PostgreSQL インスタンスのパブリックポート。デフォルト値は 5432 です。

      DB_DATABASE

      ApsaraDB RDS for PostgreSQL インスタンス内のデータベース名。

    2. ApsaraDB RDS for PostgreSQL をデフォルトのベクトルデータベースとして設定します。

      export VECTOR_STORE=pgvector
      export PGVECTOR_HOST=pgm-****.pg.rds.aliyuncs.com
      export PGVECTOR_PORT=5432
      export PGVECTOR_USERNAME=testdbuser
      export PGVECTOR_PASSWORD=dbPassword
      export PGVECTOR_DATABASE=testdb01

      これらの値を実際の設定に置き換えてください。

      パラメータ

      説明

      VECTOR_STORE

      ベクトルストアを指定します。PostgreSQL 拡張機能には pgvector を使用します。

      PGVECTOR_USERNAME

      ApsaraDB RDS for PostgreSQL インスタンスの特権アカウント。

      PGVECTOR_PASSWORD

      ApsaraDB RDS for PostgreSQL インスタンスの特権アカウントのパスワード。

      PGVECTOR_HOST

      ApsaraDB RDS for PostgreSQL インスタンスのパブリックエンドポイント。

      PGVECTOR_PORT

      ApsaraDB RDS for PostgreSQL インスタンスのパブリックポート。デフォルト値は 5432 です。

      PGVECTOR_DATABASE

      ApsaraDB RDS for PostgreSQL インスタンス内のデータベース名。

    または、.env ファイルでこれらの設定を行うこともできます。

    .env を使用した ApsaraDB RDS for PostgreSQL の設定

    1. .env.example.env にコピーします。これにより既存のファイルが上書きされます。

      cd /root/dify/docker
      cp .env.example .env
      説明

      Dify のソースコードを取得後、.env.example.env ファイルは /root/dify/docker ディレクトリに自動的に含まれています。

    2. ApsaraDB RDS for PostgreSQL インスタンスの詳細情報を使用して .env を編集します。

      # デフォルトのデータベース設定
      DB_USERNAME=testdbuser
      DB_PASSWORD=dbPassword
      DB_HOST=pgm-****.pg.rds.aliyuncs.com
      DB_PORT=5432
      DB_DATABASE=testdb01
      # デフォルトのベクトルデータベース設定
      VECTOR_STORE=pgvector
      PGVECTOR_HOST=pgm-****.pg.rds.aliyuncs.com
      PGVECTOR_PORT=5432
      PGVECTOR_USERNAME=testdbuser
      PGVECTOR_PASSWORD=dbPassword
      PGVECTOR_DATABASE=testdb01
  6. (オプション) リソースを節約するため、.envdocker-compose.yaml ファイルを編集して、デフォルトのデータベースおよび Weaviate コンテナを無効にします。

    • .env ファイルの編集

      1. (オプション) .env.example.env にコピーします。

        重要

        データベースの設定時にすでにファイルをコピーしている場合は、この手順をスキップしてください。

        cd /root/dify/docker
        cp .env.example .env
      2. .env 内の次の行をコメントアウトします。

        #COMPOSE_PROFILES=${VECTOR_STORE:-weaviate}
    • docker-compose.yaml ファイルの編集

      1. docker-compose.yaml をバックアップします。

        cd /root/dify/docker
        cp docker-compose.yaml docker-compose.yaml.bak
      2. docker-compose.yaml を編集して、デフォルトのデータベースコンテナを無効にします。

        • API サービスセクションで、depends_on: の下にある - db をコメントアウトします。

          # API サービス
          api:
            ......
            depends_on:
              #- db          
              - redis  
        • worker サービスセクションで、depends_on: の下にある - db をコメントアウトします。

          # worker サービス
          # キュー処理用の Celery worker。
          worker:
            ......
            depends_on:
              #- db
              - redis
        • postgres データベース」セクションで、profiles: -pg 設定を追加します。

          # postgres データベース。
          db:
            image: postgres:15-alpine
            profiles:
              - pg 
        • Weaviate ベクトルストア」セクションで、profiles: の下にある - '' をコメントアウトします。

          # Weaviate ベクトルストア。    
          weaviate:
             image: semitechnologies/weaviate:1.19.0
             profiles:
               #- ''
               - weaviate
  7. Dify を起動します。

    cd /root/dify/docker
    docker compose -f docker-compose.yaml up -d

ステップ 3: Dify サービスへのアクセス

  1. ブラウザで http://<ECS インスタンスのパブリック IP アドレス>/install を開き、Dify のインストールを開始します。

    説明

    ページの読み込みに失敗した場合は、ページを更新してください。Dify がまだ初期化中の可能性があります。

  2. 指示に従って、[管理者アカウントの設定] を行ってください (メールアドレス、ユーザー名、パスワード)。

ステップ 4: AI モデルの追加と設定

この例では Qwen を使用します。

  1. Dify にログインします。

  2. [ユーザー名] > [設定] をクリックします。

  3. [設定] ページで、[モデルプロバイダー] > [Qwen] > [設定] を選択します。

  4. Qwen の [設定] ページで、リンクをクリックして Alibaba Cloud Model Studio から API キーを取得します。

  5. API キーを貼り付け、[保存] をクリックします。

GPU アクセラレーションを備えた ECS インスタンスでは、Qwen LLM をローカルにデプロイできます。

ECS への Qwen LLM サービスのデプロイ

  1. ollama コンテナを作成し、ポート 11434 をホストにマッピングします。

    docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

    コンテナ ID が返されます:

    a2201932a0c10da50845a85fc8e00c2178d8b4d0936a92f383b284a7ce51****
  2. コンテナ内でシェルを開き、モデルをデプロイします。この例では qwen2.5-coder:7brjmalagon/gte-qwen2-7b-instruct:f16 を使用します。

    docker exec -it a2201932a0c10da50845a85fc8e00c2178d8b4d0936a92f383b284a7ce51**** /bin/bash
    ollama pull qwen2.5-coder:7b
    ollama pull rjmalagon/gte-qwen2-7b-instruct:f16
  3. TCP ポート 11434/11434 を許可する [インバウンド] セキュリティグループのルールを追加します。 送信元をご使用の IP アドレスに制限するか、テスト用に 0.0.0.0/0 を使用します。

  4. Dify にログインします。

  5. [ユーザー名] > [設定] > [モデルプロバイダー] > [Ollama] > [モデルの追加]を選択します。

  6. 2 つのモデルを構成するため、[LLM]qwen2.5-coder:7b に、[テキスト埋め込み] モデルを rjmalagon/gte-qwen2-7b-instruct:f16 に設定します。

    [モデル名]qwen2.5-coder:7b および rjmalagon/gte-qwen2-7b-instruct:f16 にそれぞれ設定します。[ベース URL]http://<public_IP_address_of_your_ECS_instance>:11434 に設定します。その他のパラメーターはデフォルト設定を使用します。

ステップ 5: ナレッジベースの作成

ナレッジベースにより、Q&A アプリケーションがドメイン固有の質問に正確に回答できるようになります。

前提条件

ナレッジベース用のコーパスファイルを準備します。サポートされる形式:TXT、MARKDOWN、MDX、PDF、HTML、XLSX、XLS、DOCX、CSV、MD、HTM。最大ファイルサイズ:15 MB。

操作手順

  1. [ナレッジ] > [ナレッジの作成] > [テキストからインポート] > [ファイルの選択] > [次へ] の順にクリックして、ファイルをアップロードします。

    サポートされる形式:TXT、MARKDOWN、MDX、PDF、HTML、XLSX、XLS、DOCX、CSV、MD、HTM。最大ファイルサイズ:15 MB。

  2. [次へ] をクリックし、画面の指示に従って [テキストのチャンク化とクリーニング] を行ってください。

    デフォルト設定のままにします。ナレッジベースは自動的にドキュメントをチャンク化、クリーニング、インデックス化します。

ナレッジベースとインデックスの確認

ApsaraDB RDS for PostgreSQL でナレッジベースの内容とインデックスを確認します。

  1. Dify が使用する ApsaraDB RDS for PostgreSQL インスタンスに接続します。

  2. ナレッジベース ID をクエリします。

    SELECT * FROM datasets;
  3. データセット ID からテーブル名を導出します:ハイフン (-) をアンダースコア (_) に置き換え、プレフィックス embedding_vector_index_ とサフィックス _nod を追加します。クエリ例:

    SELECT * FROM embedding_vector_index_6b169753_****_****_be66_9bddc44a4848_nod;
  4. ナレッジベースのインデックスを確認します。

    Dify はデフォルトで HNSW インデックスを作成し、pgvector の類似性検索を高速化します。検索クエリは次のようになります:

    SELECT 
        meta, 
        text, 
        embedding <=> $1 AS distance 
    FROM 
        embedding_vector_index_6b169753_****_****_be66_9bddc44a4848_nod 
    ORDER BY 
        distance 
    LIMIT 
        $2;

    インデックスパラメータが再現率の要件を満たしていることを確認します。mef_construction、再現率の関係については、pgvector パフォーマンステスト (HNSW インデックスベース) に記載されています。

    SELECT *
    FROM pg_indexes
    WHERE tablename = 'embedding_vector_index_6b169753_****_****_be66_9bddc44a4848_nod';

    インデックスが存在しない場合、またはデフォルトパラメータが再現率の要件を満たさない場合は、手動で作成します。

    1. (オプション) 既存のインデックスを削除します。

      DROP INDEX IF EXISTS embedding_vector_index_6b169753_****_****_be66_9bddc44a4848_nod;
    2. インデックスを作成します。

      CREATE INDEX ON embedding_vector_index_6b169753_****_****_be66_9bddc44a4848_nod 
      USING hnsw (embedding vector_cosine_ops)
      WITH (m = '16', ef_construction = '100');
    説明

    embedding_vector_index_6b169753_****_****_be66_9bddc44a4848_nod は例です。実際のテーブル名に置き換えてください。

ステップ 6: インテリジェント Q&A アプリケーションの作成

この例では、Question Classifier + Knowledge + Chatbot テンプレートを使用します。

  1. [スタジオ] > [テンプレートから作成] をクリックします。

  2. 「質問クラシファイア + ナレッジ + チャットボット」テンプレートを見つけ、[このテンプレートを使用] をクリックします。

  3. アプリケーション名とアイコンを設定して、[作成]をクリックします。

  4. [Studio] ページで、新規アプリケーションのカードをクリックしてアプリケーションオーケストレーションページを開きます。

  5. アプリケーションワークフローを設定します:Answer モジュールを削除し、ナレッジ検索モジュールを 1 つだけ残し、Question Classifier と LLM モジュールの AI モデルを Qwen に変更します。

    Qwen モデルを設定する際、Top P 値を 1 未満に設定します。

    [qwen-vl-max-0809] モデルを選択した後、モデル名の横にある設定アイコンをクリックしてパラメータ設定パネルを開き、[Top P]0.8 に設定します。

  6. Question Classifier モジュールを編集して、質問カテゴリを定義します。PostgreSQL ナレッジベースの場合:

    • PostgreSQL 関連の質問:ナレッジベースと Qwen にルーティングして、要約された回答を得ます。

    • その他の質問:Qwen に直接ルーティングします。

  7. ナレッジ検索モジュールに PostgreSQL ナレッジベースを追加します。

    [ナレッジ検索] ノードで、[クエリ変数]sys.query に設定し、[ナレッジベース][pg] を選択し、検索モードを [高品質・ベクトル検索] に設定します。

  8. [プレビュー] をクリックしてアプリケーションをテストし、次に [公開] をクリックしてデプロイします。