企業向けのプライベートな質問応答(Q&A)システムは、しばしば回答精度に課題を抱えます。本ガイドでは、Dify と Alibaba Cloud Tablestore を統合して、Retrieval-Augmented Generation(RAG)アプリケーションを構築する方法を説明します。Tablestore はベクトルデータベースとして機能し、高精度なナレッジ取得とインテリジェントな Q&A 機能を実現します。
仕組み
Tablestore は高性能なベクトルデータベースであり、ミリ秒レベルのクエリ応答を提供します。ベクトル取得と全文検索を組み合わせたハイブリッド検索モードをサポートしており、単一テーブルで数百億ものベクターを格納できます。Dify はアプリケーションのオーケストレーションとユーザーインターフェースを提供し、RAG アプリケーションの構築およびデプロイを大幅に簡素化します。
RAG アプリケーションは、以下のコアプロセスを通じてインテリジェントな Q&A を実現します。
-
ナレッジのベクトル化:Dify が企業ドキュメントを自動的にナレッジセグメントに分割し、ベクトル表現に変換して、Tablestore ベクトルデータベースに保存します。
-
類似検索:ユーザーが質問を入力すると、システムは Tablestore から最も関連性の高いナレッジセグメントを迅速に取得します。
-
拡張生成:取得されたナレッジとユーザーの質問を組み合わせて大規模言語モデル(LLM)に送信し、根拠に基づいた正確な回答を生成します。
デプロイ環境の準備
Tablestore インスタンスの作成
Tablestore は RAG アプリケーションのベクトルデータベースとして機能し、ベクトル化されたドキュメント表現を保存して、効率的な類似検索を提供します。
Tablestore コンソールにログインします。ページ上部で、インスタンスのリージョン(例:
中国 (杭州))を選択します。[インスタンスの作成] をクリックし、CU モード(旧称:従量課金モード) を選択します。以下のリストに従ってインスタンスパラメーターを設定します。その他の設定項目はデフォルトのままにしてください。
インスタンス名:インスタンスの名前を入力します。
インスタンスタイプ:[パフォーマンス専有型] を選択します。
[OK] をクリックして、インスタンスを作成します。
ECS インスタンスの作成
ECS インスタンスは Dify アプリケーションの実行環境として機能します。Docker コンテナクラスターをサポートするために十分な計算リソースが必要です。
-
以下のパラメーターを使用して ECS インスタンスを作成します。その他のパラメーターはデフォルトのままにしてください。
-
チャージタイプ:従量課金 を選択します。
-
リージョン:ネットワーク遅延を最小限に抑えるため、本チュートリアルでは 中国 (香港) リージョンを使用します。
-
ネットワークとゾーン:デフォルトの Virtual Private Cloud(VPC)とアベイラビリティゾーンを選択します。
-
インスタンス:[すべてのインスタンスタイプ] をクリックし、
ecs.e-c1m2.largeを検索して選択します。説明このインスタンスタイプが品切れの場合、別のものを選択してください。
-
イメージ:パブリックイメージ の下で、Alibaba Cloud Linux(Alibaba Cloud Linux 3.2104 LTS 64 ビット)を選択します。
-
システムディスク:ESSD Entry ディスクのサイズを 40 GiB に設定します。
-
パブリック IP アドレス:[パブリック IPv4 アドレスを割り当てる] を選択します。
-
帯域幅課金方法:コストを削減するために、[トラフィック課金] を選択します。
-
最大帯域幅:5 Mbps 以上を選択します。
-
セキュリティグループ:[既存のセキュリティグループ] を選択します。
-
ログイン認証情報:[カスタムパスワード] を選択します。ログイン名を root に設定し、ログインパスワード を設定して安全に保管します。
-
Dify のデプロイとアクセス
ステップ 1:Docker 環境のインストール
Dify はコンテナを使用してデプロイされます。マルチサービスコンテナのオーケストレーションをサポートするために、まず ECS インスタンスに Docker および Docker Compose をインストールする必要があります。
-
dnf-plugins-core プラグインをインストールします。
dnf -y install dnf-plugins-core -
公式 Docker リポジトリを構成します。
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo -
Docker Engine および Docker Compose プラグインをインストールします。
dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -
Docker を起動し、ブート時に自動起動を有効にします。
systemctl enable --now docker
ステップ 2:Dify サービスのデプロイ
次に、Dify のソースコードを取得し、ベクトルデータベースとしての Tablestore 接続パラメーターを含む環境変数を構成します。
-
Git バージョン管理ツールをインストールします。
yum -y install git -
公式 Dify ソースコードリポジトリをクローンします。
git clone https://github.com/langgenius/dify.git -
Docker デプロイディレクトリに移動します。
cd dify/docker -
環境構成ファイルのテンプレートをコピーします。
cp .env.example .env -
環境構成ファイルを編集します。
vi .env以下の構成項目を変更します。
パラメーター
説明
VECTOR_STORE
ベクトルデータベースのタイプ。
tablestoreに設定します。TABLESTORE_ENDPOINT
重要デフォルトでは、新規の Tablestore インスタンスのパブリックネットワークアクセスは無効になっています。パブリックエンドポイントを使用するには、Tablestore コンソールにアクセスします。インスタンスの管理 ページで、ネットワーク管理 タブをクリックします。許可されているネットワークタイプ セクションで、インターネット を選択し、設定 をクリックして変更を保存します。
Tablestore コンソールにアクセスします。インスタンスリスト で、インスタンスのエイリアスをクリックして インスタンスの管理 ページを開きます。インスタンス名とエンドポイントをコピーします。デプロイ状況に応じてエンドポイントを選択します。
-
ECS と Tablestore のインスタンスが同じリージョンにある場合、パブリックエンドポイントまたは VPC エンドポイントを使用できます。
-
ECS と Tablestore のインスタンスが異なるリージョンにある場合、パブリックエンドポイントを使用する必要があります。
TABLESTORE_INSTANCE_NAME
TABLESTORE_ACCESS_KEY_ID
AccessKey 管理 ページにアクセスして、Alibaba Cloud アカウントの AccessKey を作成します。ACCESS_KEY_ID および ACCESS_KEY_SECRET をコピーして保存します。
TABLESTORE_ACCESS_KEY_SECRET
-
-
Dify コンテナクラスターを起動します。
docker compose up -d正常に起動した後、以下の出力が表示されます。
✔ Network docker_default Created 0.1s ✔ Network docker_ssrf_proxy_network Created 0.1s ✔ Container docker-sandbox-1 Started 0.8s ✔ Container docker-redis-1 Started 1.0s ✔ Container docker-ssrf_proxy-1 Started 1.3s ✔ Container docker-web-1 Started 1.0s ✔ Container docker-db-1 Started 0.9s ✔ Container docker-plugin_daemon-1 Started 2.4s ✔ Container docker-api-1 Started 2.4s ✔ Container docker-worker-1 Started 2.3s ✔ Container docker-nginx-1 Started 3.8s
ステップ 3:セキュリティグループアクセスルールの構成
インターネットから Dify 管理インターフェースにアクセスするには、ECS セキュリティグループで必要なポートを開く必要があります。
-
ECS コンソールにアクセスします。対象のインスタンスで、 を選択します。
-
セキュリティグループルールを構成します。操作 を [許可] に、プロトコルの種類 を [Web HTTP トラフィックアクセス] に設定します。宛先(現在のインスタンス) フィールドに、Dify サービスポート(デフォルトは 80)を入力し、以下の図のようにルールを追加します。

-
[OK] をクリックして、セキュリティグループルールを保存します。
ステップ 4:Dify 管理インターフェースへのアクセス
ブラウザで http://server_ip にアクセスします。ここで、server_ip はご利用の ECS インスタンスのパブリック IP アドレスです。初回アクセス時には初期化ページにリダイレクトされます。画面の指示に従って管理者アカウントを設定してください。設定後、自動的にログインされます。

RAG アプリケーションの構築と検証
ステップ 1:モデルと API キーの構成
RAG アプリケーションには、質問を理解して回答を生成するための大規模言語モデル(LLM)と、テキストをベクトル表現に変換するための埋め込みモデルが必要です。
-
モデルプロバイダーをインストールし、API キーを構成します。
-
Dify ホームページで、ユーザーのアバターをクリックし、ドロップダウンメニューから [設定] をクリックします。
-
設定ページで、[モデルプロバイダー] をクリックし、Tongyi を選択して、[インストール] をクリックします。
-
インストールが完了したら、構成対象のモデル一覧で [セットアップ] をクリックします。

-
画面の指示に従って Alibaba Cloud Model Studio の API キー を取得し、構成に記入してセットアップを完了します。その後、[保存] をクリックします。

-
-
デフォルトのシステムモデルを構成します。
-
モデルプロバイダーページで、モデル一覧 の右側にある [システムモデル設定] をクリックします。
-
以下の推奨に従ってモデルを設定します。必要に応じて他のモデルを選択することもできます。
-
システム推論モデル:qwen3-max-preview を選択します。
-
埋め込みモデル:text-embedding-v4 を選択します。
-
リランクモデル:gte-rerank-v2 を選択します。
-
音声認識モデル:paraformer-realtime-v2 を選択します。
-
音声合成モデル:tts-1 を選択します。
-
-
モデルの構成後、ESC キーを押して Dify ホームページに戻ります。
ステップ 2:ナレッジベースの作成
ナレッジベースは RAG アプリケーションの中核となるコンポーネントであり、企業ドキュメントを保存してインテリジェントな取得機能を提供します。Dify はドキュメントを自動的に分割・ベクトル化し、Tablestore に保存します。
-
Dify ホームページで、[ナレッジ] をクリックし、[ナレッジの作成] をクリックします。

-
[空のナレッジを作成したい] をクリックします。空のナレッジの作成 ダイアログボックスで、ナレッジベースの名前(例:Tablestore)を入力し、[作成] をクリックします。

-
ナレッジベース詳細ページで、[ファイルを追加] をクリックし、サンプルファイル Model_Studio_Series_Mobile_Phone_Product_Introduction.docx をアップロードして、[次へ] をクリックし、テキストチャンクおよびクリーニング設定に進みます。

-
ナレッジ処理パラメーターを構成します。インデックス方式 を [高品質] に、取得設定 を hybrid search に設定します。パラメーターを構成後、[保存 & 処理] をクリックします。[ドキュメントに移動] をクリックして、ドキュメントの処理状況を確認できます。

Tablestore コンソールにアクセスして、ベクトルデータベースに保存されたナレッジデータを確認できます。

ステップ 3:Q&A アシスタントの作成とテスト
最後に、Chatbot アプリケーションを作成します。ナレッジベース追加前後の回答を比較することで、RAG アプリケーションの取得拡張機能を検証できます。
-
Dify ホームページで、[スタジオ] をクリックし、[空白から作成] をクリックします。

-
初心者向け テンプレートを選択し、Chatbot アプリケーションタイプを選択して、アプリケーションの名前を入力し、[作成] をクリックします。

-
Chatbot に
What are the Model Studio phone models?のような質問をしてテストします。この時点では、アシスタントの回答が不正確または不完全である可能性があります。
-
アプリケーションの オーケストレーション ページで、ナレッジ の横にある [追加] をクリックし、作成したナレッジベースを選択して、画面の指示に従って [再起動] をクリックし、デバッグエリアをリセットします。

-
同じ質問を Chatbot に再度投げかけます。ナレッジベースのコンテンツにより、アシスタントは正確かつ詳細な回答を提供できるようになります。

本番環境での考慮事項
ベストプラクティス
本番環境で Dify アプリケーションの高可用性を確保するため、ACK を使用したデプロイを推奨します。実装計画の詳細については、「Dify を迅速にデプロイして AI アプリケーション開発を効率化する」ソリューションをご参照ください。ACK ベースの本番デプロイオプションを選択してください。
リスク軽減
-
アクセス制御:RAM ユーザー を使用してリソースアクセスを管理します。権限範囲を厳密に制御し、Tablestore および ECS に対して必要な操作権限のみを付与します。
-
操作監査:ActionTrail を有効にして、重要なリソースへのすべてのアクセスおよび変更を記録します。これにより、すべての操作がトレース可能になります。
-
データバックアップ:誤った操作や人的ミスによるデータ損失を防ぐため、Tablestore のデータバックアップを定期的に作成します。
リソースのクリーンアップ
チュートリアル後にリソースを本番で使用しない場合は、不要な課金を回避するためにクリーンアップを行ってください。
-
ECS インスタンスのリリース
ECS コンソールにアクセスし、対象のインスタンスを見つけ、 を選択します。画面の指示に従ってインスタンスをリリースします。
-
Tablestore データテーブルの削除
Tablestore コンソールにアクセスします。インスタンスリスト で、対象インスタンスのエイリアスをクリックします。インスタンスの管理 ページで、対象データテーブルの [インデックス] をクリックし、インデックス ページで多次元インデックスを削除します。データテーブル一覧に戻り、同じデータテーブルで を選択して削除します。
-
Tablestore インスタンスのリリース
Tablestore コンソールにアクセスします。インスタンス一覧で対象インスタンスを見つけ、操作列の [リリース] をクリックします。
[OK] をクリックしてインスタンスをリリースします。本人確認を求められた場合は、画面の指示に従ってください。