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

ApsaraDB RDS:ApsaraDB RDS for PostgreSQL と Dify プラットフォームに基づく AI アプリケーションの構築

最終更新日:Nov 09, 2025

Dify は、LLM アプリケーション開発のためのオープンソースプラットフォームであり、BaaS (Backend as a Service) と LLMOps を統合して、本番環境に対応した生成 AI アプリケーションの迅速な開発を可能にします。このトピックでは、ApsaraDB RDS for PostgreSQL と Dify プラットフォームを使用してインテリジェント Q&A アプリケーションを作成する手順について説明します。

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

  1. ApsaraDB RDS for PostgreSQL インスタンスを迅速に作成する

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

    その中で:

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

    • データベースを作成する際、[承認済みアカウント] に作成した特権アカウントを選択します。

  3. ApsaraDB RDS for PostgreSQL インスタンスのパブリックエンドポイントを申請します。具体的な操作については、「パブリックエンドポイントの有効化または無効化」をご参照ください。

    ECS インスタンスのパブリック IP アドレスを ApsaraDB RDS for PostgreSQL のホワイトリストに追加します。具体的な操作については、「ホワイトリストの設定」をご参照ください。

  4. ApsaraDB RDS for PostgreSQL のターゲットデータベースに対してベクタープラグインを有効にします。詳細な操作については、「プラグインの管理」をご参照ください。

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

  1. ECS インスタンスを作成します。詳細については、「ECS インスタンスのカスタム購入」をご参照ください。

    • ECS インスタンスの CPU バージョンは、オンライン AI 大規模モデルの追加をサポートしています。

    • ECS インスタンスの GPU バージョンは、オンラインおよび ECS ローカル AI 大規模モデルの両方の追加をサポートしています。

    重要
    • このトピックでは、Alibaba Cloud Linux 3 を例として使用します。

    • GPU バージョンの ECS インスタンスを購入した場合、イメージを設定する際に、対応する GPU ドライバーをインストールする必要があります。GPU バージョンの ECS インスタンスを使用することで、Ollama を使用して ECS に大規模モデルをデプロイできます。

  2. ECS に Docker をインストールします。詳細については、「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 パラメーターを使用してバージョンブランチを指定し、特定のバージョンをインストールできます。たとえば、バージョン v1.0.0 をインストールするには、次のコマンドを使用できます。Dify のブランチバージョンについては、「dify」をご参照ください。

    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_USER=testdbuser
      export PGVECTOR_PASSWORD=dbPassword
      export PGVECTOR_DATABASE=testdb01

      実際の状況に応じて、コード内のパラメーター値を置き換えてください。

      パラメーター

      説明

      VECTOR_STORE

      ベクタープラグインを使用します。

      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 ファイルを使用して、ApsaraDB RDS for PostgreSQL をデフォルトのデータベースおよびベクターストアとして設定することもできます。

    .env を介して ApsaraDB RDS for PostgreSQL をデフォルトのデータベースおよびベクターストアとして設定する

    1. 次のコマンドを実行して、Dify のサンプルファイル .env.example を使用して既存の .env ファイルを上書きします。

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

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

    2. .env ファイルを編集して、次のパラメーターを ApsaraDB RDS for PostgreSQL インスタンスの関連情報として設定します。

      # デフォルトのデータベース構成情報
      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_USER=testdbuser
      PGVECTOR_PASSWORD=dbPassword
      PGVECTOR_DATABASE=testdb01
  6. (オプション) ECS でデフォルトのデータベースと Weaviate コンテナーを実行しないようにしてトラフィックとストレージスペースを節約したい場合は、.envdocker-compose.yaml ファイルを編集して、デフォルトのデータベースと Weaviate コンテナーを無効にします。

    • .env ファイルの編集

      1. (オプション) 次のコマンドを実行して、Dify のサンプルファイル .env.example を使用して既存の .env ファイルを上書きします。

        重要

        ApsaraDB RDS for PostgreSQL をデフォルトのデータベースおよびベクターストアとして設定する際にこの操作をすでに完了している場合は、このステップをスキップしてください。

        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  
        • ワーカーサービスの depends_on: の下にある - db をコメントアウトして、設定項目を無効にします。

          # ワーカーサービス
          # キューを処理するための Celery ワーカー。
          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. ページ上のプロンプトに従って、[管理者アカウントの設定] (つまり、メールアドレス、ユーザー名、パスワード) を行い、Dify プラットフォームに登録してサービスを使用します。

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

このトピックでは、Tongyi Qianwen を例として使用します。

  1. Dify プラットフォームにログオンします。

  2. 右上隅で、[ユーザー名] > [設定] をクリックします。

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

  4. Tongyi Qianwen の [設定] ページで、リンクをクリックして Alibaba Cloud Bailian の API キーを取得します。

  5. 取得した API キーを入力した後、[保存] をクリックします。

image

ECS の GPU バージョンを購入した場合、ECS 上に Tongyi Qianwen の LLM サービスをデプロイできます。

ECS 上に Tongyi Qianwen の LLM サービスをデプロイする

  1. 次のコマンドを実行して、ollama という名前のコンテナーを作成し、外部ネットワークがホストのポート 11434 を介してコンテナーのポート上のサービスにアクセスできるようにします。

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

    コンテナー ID を返します:

    a2201932a0c10da50845a85fc8e00c2178d8b4d0936a92f383b284a7ce51****
  2. ターゲットコンテナーに入り、次のコマンドを実行して大規模モデルをデプロイします。このトピックでは、Tongyi Qianwen の qwen2.5-coder:7b および rjmalagon/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. ECS セキュリティグループを設定して、[インバウンド方向]11434/11434 のポートを追加し、ECS パブリック IP の権限付与ポリシーを権限付与オブジェクトとして付与します。

  4. Dify プラットフォームにログオンします。

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

  6. [LLM] モデルを qwen2.5-coder:7b として、[テキスト埋め込み] モデルを rjmalagon/gte-qwen2-7b-instruct:f16 としてそれぞれ追加します。

    それぞれについて、[モデル名] はそれぞれ qwen2.5-coder:7brjmalagon/gte-qwen2-7b-instruct:f16 です。[ベース URL]http://<ECS パブリック IP アドレス>:11434 です。他のパラメーターにはデフォルト設定を使用します。

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

専用のナレッジベースにより、インテリジェント Q&A アプリケーションはより正確かつ専門的に質問に答えることができます。

前提条件

ナレッジベース用のコーパスファイルが準備されていることを確認してください。サポートされているファイル形式は、TXT、MARKDOWN、MDX、PDF、HTML、XLSX、XLS、DOCX、CSV、MD、HTM で、各ファイルは 15 MB を超えないようにしてください。

手順

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

    image

  2. [次へ] をクリックした後、ページのガイドに従って [テキストのセグメント化とトラフィックスクラブ] を実行します。

    デフォルト設定を使用できます。これにより、アップロードされたドキュメントが自動的にスクラブ、セグメント化、インデックス付けされ、インテリジェント Q&A アプリケーションの情報取得および参照能力が向上します。

ナレッジベースの検証と ApsaraDB RDS for PostgreSQL を介したインデックスの確認

ナレッジベースを設定した後、ApsaraDB RDS for PostgreSQL データベースでその内容を検証し、各ナレッジベーステーブルのインデックスを確認します。

  1. Dify が利用する ApsaraDB RDS for PostgreSQL データベースに接続します。ApsaraDB RDS for PostgreSQL インスタンスへの接続手順については、「リファレンスドキュメント」をご参照ください。

  2. 以下のコマンドを実行して、ナレッジベースに対応する ID を表示します。

    SELECT * FROM datasets;
  3. ターゲット ID の -_ に置き換え、プレフィックス embedding_vector_index_ とサフィックス _nod を追加して、ナレッジベースを格納するテーブル名を形成します。たとえば、以下のコマンドを実行して、ApsaraDB RDS for PostgreSQL 内のターゲットナレッジベースのデータを表示します。

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

    デフォルトでは、Dify プラットフォームは pgvector プラグインを使用してベクター類似性クエリを強化するために、各ナレッジベースに HNSW インデックスを作成します。システムは、ベクター類似性クエリにデフォルトで以下の SQL 文を使用します。

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

    ナレッジベーステーブルのインデックスとそのデフォルトパラメーターが取得率の要件を満たしているかどうかを確認するには、次の文を使用します。HNSW インデックスパラメーター m および ef_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 アプリケーションの作成

このガイドでは、アプリケーションテンプレートから質問分類器 + ナレッジ + チャットボットテンプレートを例として使用します。

  1. [Studio] > [アプリケーションテンプレートから作成] をクリックします。

    image

  2. 質問分類器 + ナレッジ + チャットボットテンプレートを見つけて、[このテンプレートを使用] をクリックします。

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

  4. [Studio] ページで、新しく作成されたアプリケーションカードを選択して、アプリケーションオーケストレーションページにアクセスします。

  5. 回答モジュールを削除し、ナレッジ取得モジュールを 1 つ保持し、質問分類器と LLM モジュールの AI モデルを Tongyi Qianwen に更新して、アプリケーションのワークフローを設定します。

    image

    Tongyi Qianwen 大規模モデルを設定する際は、Top P 値が 1 未満に設定されていることを確認してください。

    image

  6. ニーズに合わせて質問分類器モジュールをカスタマイズします。たとえば、ナレッジベースに PostgreSQL の情報が含まれている場合、次のように設定できます。

    • PostgreSQL に関する質問については、ナレッジベースと Tongyi Qianwen 大規模モデルを組み合わせて分析と要約を行います。

    • PostgreSQL に関連しない質問については、Tongyi Qianwen 大規模モデルを使用して回答を提供します。

    image

  7. 以前に作成した PostgreSQL 関連のナレッジベースを追加して、ナレッジ取得モジュールを更新します。

    image

  8. 右上隅の [プレビュー] をクリックして、Q&A デモをテストします。デモが正しく動作したら、[公開] をクリックしてアプリケーションをリリースします。