Dify は、LLM アプリケーション開発のためのオープンソースプラットフォームであり、BaaS (Backend as a Service) と LLMOps を統合して、本番環境に対応した生成 AI アプリケーションの迅速な開発を可能にします。このトピックでは、ApsaraDB RDS for PostgreSQL と Dify プラットフォームを使用してインテリジェント Q&A アプリケーションを作成する手順について説明します。
ステップ 1: ApsaraDB RDS for PostgreSQL インスタンスの作成
-
RDS インスタンスのアカウントとデータベースを作成します。詳細については、「アカウントとデータベースの作成」をご参照ください。
その中で:
-
アカウントを作成する際、[アカウントタイプ] を [特権アカウント] として選択します。
-
データベースを作成する際、[承認済みアカウント] に作成した特権アカウントを選択します。
-
-
ApsaraDB RDS for PostgreSQL インスタンスのパブリックエンドポイントを申請します。具体的な操作については、「パブリックエンドポイントの有効化または無効化」をご参照ください。
ECS インスタンスのパブリック IP アドレスを ApsaraDB RDS for PostgreSQL のホワイトリストに追加します。具体的な操作については、「ホワイトリストの設定」をご参照ください。
-
ApsaraDB RDS for PostgreSQL のターゲットデータベースに対してベクタープラグインを有効にします。詳細な操作については、「プラグインの管理」をご参照ください。
ステップ 2: Dify のデプロイ
-
ECS インスタンスを作成します。詳細については、「ECS インスタンスのカスタム購入」をご参照ください。
-
ECS インスタンスの CPU バージョンは、オンライン AI 大規模モデルの追加をサポートしています。
-
ECS インスタンスの GPU バージョンは、オンラインおよび ECS ローカル AI 大規模モデルの両方の追加をサポートしています。
重要-
このトピックでは、Alibaba Cloud Linux 3 を例として使用します。
-
GPU バージョンの ECS インスタンスを購入した場合、イメージを設定する際に、対応する GPU ドライバーをインストールする必要があります。GPU バージョンの ECS インスタンスを使用することで、Ollama を使用して ECS に大規模モデルをデプロイできます。
-
-
ECS に Docker をインストールします。詳細については、「Docker のインストール」をご参照ください。
-
(オプション) GPU バージョンの ECS インスタンスを購入した場合、次のコマンドを実行して container-toolkit コンポーネントをインストールします。
-
次のコマンドを実行して、Dify のソースコードを取得します。
git clone https://github.com/langgenius/dify.gitbranchパラメーターを使用してバージョンブランチを指定し、特定のバージョンをインストールできます。たとえば、バージョン v1.0.0 をインストールするには、次のコマンドを使用できます。Dify のブランチバージョンについては、「dify」をご参照ください。git clone https://github.com/langgenius/dify.git --branch 1.0.0説明Git コマンドがインストールされていない場合は、
sudo yum install git -yを実行してインストールします。 -
環境変数を設定して、ApsaraDB RDS for PostgreSQL をデフォルトのデータベースおよびベクターストアとして設定します。
-
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 インスタンス内のデータベース名。
-
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 をデフォルトのデータベースおよびベクターストアとして設定することもできます。 -
-
(オプション) ECS でデフォルトのデータベースと Weaviate コンテナーを実行しないようにしてトラフィックとストレージスペースを節約したい場合は、
.envとdocker-compose.yamlファイルを編集して、デフォルトのデータベースと Weaviate コンテナーを無効にします。 -
-
次のコマンドを実行して、Dify イメージを起動します。
cd /root/dify/docker docker compose -f docker-compose.yaml up -d
ステップ 3: Dify サービスへのアクセス
-
ブラウザで
http://<ECS パブリック IP アドレス>/installにアクセスして、Dify サービスにアクセスします。説明アクセスに失敗した場合は、ページを数回リフレッシュしてください。Dify はストレージテーブルの構造と関連情報を初期化しています。
-
ページ上のプロンプトに従って、[管理者アカウントの設定] (つまり、メールアドレス、ユーザー名、パスワード) を行い、Dify プラットフォームに登録してサービスを使用します。
ステップ 4: AI モデルの追加と設定
このトピックでは、Tongyi Qianwen を例として使用します。
-
Dify プラットフォームにログオンします。
-
右上隅で、[ユーザー名] > [設定] をクリックします。
-
[設定] ページで、[モデルプロバイダー] > [Tongyi Qianwen] > [(設定)] を選択します。
-
Tongyi Qianwen の [設定] ページで、リンクをクリックして Alibaba Cloud Bailian の API キーを取得します。
-
取得した API キーを入力した後、[保存] をクリックします。

ECS の GPU バージョンを購入した場合、ECS 上に Tongyi Qianwen の LLM サービスをデプロイできます。
ステップ 5: ナレッジベースの作成
専用のナレッジベースにより、インテリジェント Q&A アプリケーションはより正確かつ専門的に質問に答えることができます。
前提条件
ナレッジベース用のコーパスファイルが準備されていることを確認してください。サポートされているファイル形式は、TXT、MARKDOWN、MDX、PDF、HTML、XLSX、XLS、DOCX、CSV、MD、HTM で、各ファイルは 15 MB を超えないようにしてください。
手順
-
順番に、[ナレッジベース] > [ナレッジベースの作成] > [既存のテキストをインポート] > [ファイルを選択] > [次へ] をクリックして、準備したファイルをナレッジベースにアップロードします。

-
[次へ] をクリックした後、ページのガイドに従って [テキストのセグメント化とトラフィックスクラブ] を実行します。
デフォルト設定を使用できます。これにより、アップロードされたドキュメントが自動的にスクラブ、セグメント化、インデックス付けされ、インテリジェント Q&A アプリケーションの情報取得および参照能力が向上します。
ナレッジベースの検証と ApsaraDB RDS for PostgreSQL を介したインデックスの確認
ナレッジベースを設定した後、ApsaraDB RDS for PostgreSQL データベースでその内容を検証し、各ナレッジベーステーブルのインデックスを確認します。
-
Dify が利用する ApsaraDB RDS for PostgreSQL データベースに接続します。ApsaraDB RDS for PostgreSQL インスタンスへの接続手順については、「リファレンスドキュメント」をご参照ください。
-
以下のコマンドを実行して、ナレッジベースに対応する ID を表示します。
SELECT * FROM datasets; -
ターゲット ID の
-を_に置き換え、プレフィックスembedding_vector_index_とサフィックス_nodを追加して、ナレッジベースを格納するテーブル名を形成します。たとえば、以下のコマンドを実行して、ApsaraDB RDS for PostgreSQL 内のターゲットナレッジベースのデータを表示します。SELECT * FROM embedding_vector_index_6b169753_****_****_be66_9bddc44a4848_nod; -
ナレッジベースのインデックスを確認します。
デフォルトでは、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';インデックスが自動的に作成されない場合、またはデフォルトのパラメーターが取得率の要件を満たさない場合は、以下のコマンドを実行して手動でインデックスを作成します。
-
(オプション) 既存のインデックスを削除します。
DROP INDEX IF EXISTS embedding_vector_index_6b169753_****_****_be66_9bddc44a4848_nod; -
インデックスを作成します。
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 アプリケーションの作成
このガイドでは、アプリケーションテンプレートから質問分類器 + ナレッジ + チャットボットテンプレートを例として使用します。
-
[Studio] > [アプリケーションテンプレートから作成] をクリックします。

-
質問分類器 + ナレッジ + チャットボットテンプレートを見つけて、[このテンプレートを使用] をクリックします。
-
アプリケーション名とアイコンを設定した後、[作成] をクリックします。
-
[Studio] ページで、新しく作成されたアプリケーションカードを選択して、アプリケーションオーケストレーションページにアクセスします。
-
回答モジュールを削除し、ナレッジ取得モジュールを 1 つ保持し、質問分類器と LLM モジュールの AI モデルを Tongyi Qianwen に更新して、アプリケーションのワークフローを設定します。

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

-
ニーズに合わせて質問分類器モジュールをカスタマイズします。たとえば、ナレッジベースに PostgreSQL の情報が含まれている場合、次のように設定できます。
-
PostgreSQL に関する質問については、ナレッジベースと Tongyi Qianwen 大規模モデルを組み合わせて分析と要約を行います。
-
PostgreSQL に関連しない質問については、Tongyi Qianwen 大規模モデルを使用して回答を提供します。

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

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