この統合が重要な理由
InterSystemsは、IRISにネイティブにAI機能をさらに推し進めています――ベクタ検索、MCPのサポート、そしてエージェント型AI機能です。このロードマップは重要であり、後退する意図はありません。
しかしAIの状況は、エコシステム統合をますます不可欠にする形でも進化しています。Dify のような、オープンソースのプロダクション品質LLMオーケストレーションプラットフォームは、エンタープライズのAIスタックにおいて真剣な存在感を持つようになりました。特に日本では、Difyの導入はもはやスタートアップや趣味の領域に限られていません。大企業にまで広がり、従業員が社内のAIワークフローの基盤として使っています。新しい能力を単独でゼロから作り込むのと同じくらい、開発者やチームがすでにいる場所で合流することが価値を持ちます。
この統合が目指しているのはまさにそれです。IRISは、得意なこと――信頼性が高く、クエリ可能で、SQLでアクセスできるデータに、組み込みの処理ロジックを備えること――を担当し、DifyはLLMオーケストレーション、RAGパイプライン、エージェント型ワークフローを担当します。両者が組み合わさることで、IRISの利用者は、自分たちのデータ基盤と、周囲で勢いを増しているAIツールのどちらを選ばなければならない、という状況から解放されます。
この統合はOSSプルリクエストとしてDifyに提供され、Dify v1.11.2でマージされました(#29480)。その後、いくつかのフォローアップ修正がマージされています(下記で説明します)。本記事ではセットアップ手順を説明します。
まず、この投稿を英語のDeveloper Communityに出すよう後押ししてくれた @megumi.Kakechi に感謝します――その後押しがなければ、この記事は日本語だけの記事のまま残っていたでしょう。あわせて、この統合を実際に手で試し、後続のリリースに含めることになった修正内容の形作りに役立つ、非常に貴重なフィードバックを提供してくれた @tomohiro.Iwamoto と @Mihoko.Iijima にも感謝します。
OSSの背景: その貢献(コントリビュート)の道のり自体が気になる方は、Zennで記事を書きました:「このDB、もっと知られてもいいのでは?」からOSSコントリビュートに至った話(日本語)
前提条件
| ツール | メモ |
|---|---|
| Docker / Docker Compose | 最近のバージョンであれば可 |
| Git | Difyリポジトリをクローンするため |
セットアップ
1. Difyリポジトリをクローンする
> git clone https://github.com/langgenius/dify.git
> cd dify/docker
2. 環境ファイルを用意する
> cp .env.example .env
3. ベクタストアとしてIRISを有効化する
.envを開き、次の1行を変更します:
# 変更前(デフォルト)
VECTOR_STORE=weaviate
変更後
VECTOR_STORE=iris
これが最低限です。IRISの接続設定(デフォルト値)はローカル利用向けに事前設定されています。既存のIRISインスタンスに接続する、またはセットアップをカスタマイズする場合に関連するパラメータは以下です:
| パラメータ | デフォルト | 説明 |
|---|---|---|
IRIS_HOST |
iris | コンテナのサービス名 |
IRIS_SUPER_SERVER_PORT |
1972 | SuperServerポート |
IRIS_WEB_SERVER_PORT |
52773 | マネジメントポータルポート |
IRIS_USER |
_SYSTEM | ログインユーザー名 |
IRIS_PASSWORD |
Dify@1234 | 初回起動時に自動設定 |
IRIS_DATABASE |
USER | 対象ネームスペース |
IRIS_SCHEMA |
dify | Difyテーブル用のSQLスキーマ |
IRIS_TEXT_INDEX |
true | 全文検索インデックスを有効化 |
IRIS_TEXT_INDEX_LANGUAGE |
en | テキストのインデックス作成に使用する言語 |
IRIS_MIN_CONNECTION |
1 | 接続プールの最小値 |
IRIS_MAX_CONNECTION |
3 | 接続プールの最大値 |
IRIS_TIMEZONE |
UTC | タイムゾーン設定 |
4. コンテナを起動する
> docker compose up -d
5. すべてのコンテナが起動していることを確認する
> docker compose ps
STATUSがUpになっているirisコンテナを探します:
> docker % docker compose ps --format "table {{.Name}}\t{{.Service}}\t{{.Status}}"
NAME SERVICE STATUS
docker-api-1 api Up
docker-db_postgres-1 db_postgres Up (healthy)
docker-nginx-1 nginx Up
docker-plugin_daemon-1 plugin_daemon Up
docker-redis-1 redis Up (healthy)
docker-sandbox-1 sandbox Up (healthy)
docker-ssrf_proxy-1 ssrf_proxy Up
docker-web-1 web Up
docker-worker-1 worker Up
docker-worker_beat-1 worker_beat Up
iris iris Up <-- これ
Difyにアクセスする
ブラウザで http://localhost/ にアクセスします。初回起動時には、管理者アカウントを作成するよう求められます。
IRISがあなたのベクタを保存していることを確認する
ステップ1――ナレッジベースを作成する
- Difyにログインする
- Knowledge → Create Knowledge
- テキストファイルまたはPDFをアップロードする
- ステップ2で、Index Method の下にある "High Quality"(推奨)を選択する
まだEmbedding Modelが設定されていない場合、ドロップダウンには「No model found.」と表示されます。続行するために、ドロップダウン下部の"Model Provider Settings"をクリックします。
ステップ2――モデルプロバイダを設定する(OpenAI)
Model Providerの画面には、利用可能なプロバイダが一覧表示されます。OpenAI を見つけ、Install をクリックします。
コストに関する注記: OpenAI は、ChatGPT Plus のサブスクリプションとは別の API キーを要求します。OpenAI API アカウントにクレジットを追加する必要があります。ただし、埋め込み(Embedding)のコストは非常に低いため、数ドルでかなりの量が実行できます。無料の代替を希望する場合は、LM Studio または Ollama(OpenAI-API 対応)のローカルモデルもサポートされています。
インストール後、OpenAI は 「設定が必要です」 の下に表示されます。Setup をクリックしてください。
API キーの認証設定 ダイアログが開きます。まだ API キーを持っていない場合は、OpenAI API キーズページを直接開くために 「OpenAI から API キーを取得する」 をクリックします。
名前を入力(例:dify)、API キーを貼り付け、そして Save をクリックします。
ステップ 3 — 埋め込みモデルを選択する
知識作成(Knowledge creation)画面に戻ります。Embedding Model のドロップダウンには、利用可能な OpenAI モデルが一覧表示されます。text-embedding-3-small を選択してください。ほとんどのユースケースに対して、コストと検索品質の優れたバランスを提供します。
Save & Process をクリックします。ドキュメントの横に緑のチェックマークが表示されたら、埋め込みは完了です。ドキュメントのチャンクは現在、IRIS 内のベクターとして保存されています。
ステップ 4 — Management Portal でデータを確認する
ここが IRIS ユーザーにとって大きな利点です。Management Portal を開きます:
http://localhost:52773/csp/sys/UtilHome.csp?$NAMESPACE=USER
| 項目 | 値 |
|---|---|
| ユーザー名 | _SYSTEM |
| パスワード | Dify@1234 |
System Explorer → SQL に移動し、スキーマフィルターを dify に設定すると、Dify が作成したテーブルが表示されます。1 つ開いてみると、ドキュメントのチャンク—生のベクター埋め込みを含め—が、どの IRIS テーブルであってもそうであるように、まさに期待どおりに保存されていることが分かります。
IRIS の利点: ほとんどのベクターストアでは、埋め込みデータは不透明であり、アクセスできるのは専用の API 経由に限られます。IRIS では、完全に SQL でアクセスできます。ベクターのデータを直接クエリし、同じネームスペース内ですでにある業務データと結合し、インデックスされている内容を確認したり、その上に独自の検索ロジックを構築したりできます。これは、すでに IRIS エコシステムに投資しているチームにとって意味のある能力です。
最初のリリース以降に修正された点
初期の統合は v1.11.2 でいくつかの荒さ(未整備な部分)を残した状態で出荷されました。それ以来、既知の問題はすべて解決され、公式の Dify コードベースに統合されています。
| PR | リリース | 説明 |
|---|---|---|
| #29480 | v1.11.2 | 初期の IRIS ベクターストア対応 |
| #31309 | v1.11.2 以降 | IRIS バックエンドにおける全文検索とハイブリッド検索を修正 |
| #31899 | v1.12.1 | Durable %SYS を使ったコンテナ再作成時の IRIS データ永続化を修正 |
| #31901 | v1.12.1 | Durable %SYS データ永続化のさらなる改善 |
Durable %SYS に関する注記: #31899 および #31901 の修正がなければ、コンテナの再作成時に IRIS データが失われる可能性がありました。これは、Community Edition の Docker イメージでよくある問題です。IRIS の開発者なら Durable %SYS についてすぐに気付くはずです。これらの修正により、Docker のセットアップがそれを正しく扱うようになります。
トラブルシューティング
WindowsでIRISコンテナが起動に失敗する
Windowsでは、ボリュームのディレクトリ権限の問題により、IRISコンテナが起動に失敗することがあります。コンテナを起動する前に、次をdockerディレクトリから実行してください:
chmod -R 777 ./volumes/iris
注: これはWindowsホスト環境における既知の制限です。この手順をなくすための修正は、今後のリリースで予定されています。
IRISコンテナが起動に失敗する(コア数が多い場合)
コア数が多いマシンでは、IRIS Community Edition の20コア制限がトリガーされることがあります。docker-compose.ymlの iris サービスに次を追加してください:
services:
iris:
cpuset: "0-19"
まとめ
| 内容 | 方法 |
|---|---|
| DifyでIRISを有効化 | .envで VECTOR_STORE=iris を設定する |
| 保存されたベクトルを確認 | 管理ポータル → SQL → スキーマ:dify |
| データの永続化 | Durable %SYS が対応(v1.12.1で修正済み) |
| Community Edition | 無料 · 10 GBデータ · 最大20コア |
このスタック上で完全なRAGチャットボットを構築する手順については、続報の投稿で説明します。ご質問や課題があれば、下のコメントに書き込んでください。













