私たちのAI駆動の世界では、あらゆる規模のビジネスが大規模言語モデル(LLM) (opens new window)などの高度なテクノロジーを日常業務にシームレスに統合する方法を探しています。その潜在的な利点は非常に大きく、顧客サービスの向上、ルーチンタスクの自動化、パーソナライズされた体験の提供など、さまざまな形で現れます。
しかし、概念から実装までの道のりは、特に技術的なバックグラウンドがない人々にとっては困難な場合があります。従来の方法では、多くのプログラミング知識が必要であり、多くの人にとってはハードルとなる場合があります。
そこで、Dify.AI (opens new window)が登場します。Difyは、非技術的なユーザーでも利用できるように、LLMをビジネスの運用にシンプルに統合するユーザーフレンドリーなプラットフォームです。
このブログでは、DifyとMyScaleを使用してRetrieval Augmented Generation(RAG) (opens new window)アプリケーションを開発する手順を紹介し、その簡単さをご紹介します。
# Difyとは
Dify.AI (opens new window)は、開発者であろうとなかろうと、誰でもLLMを使用できるようにするオープンソースのプラットフォームです。シンプルで使いやすいインターフェースを備えたDifyでは、コーディングの知識がほとんど必要なく、AIパワードのアプリケーションやチャットボットを構築し、展開、管理することができます。
Difyの特徴の一つは、さまざまなLLMを広範にサポートしていることです。ニーズに合ったLLMを選択することができます。また、Retrieval-Augmented Generation(RAG)エンジン、ワークフローの自動化、監視ツール、エンタープライズレベルのセキュリティなど、多機能なプラットフォームです。そのため、あらゆる規模のビジネスにとって強力なオプションとなります。
以下の比較画像は、DifyがLangChain (opens new window)、Flowise (opens new window)、OpenAI (opens new window) Assistants APIなど他の人気のあるプラットフォームと比較したものです。
Difyには、誰でもセットアップなしでアクセスできるWebベースのクラウドプラットフォームと、環境内でのセルフホスティングを希望するユーザー向けのローカルデプロイ可能なバージョンの2つのバージョンがあります。
Difyのセルフホスティングバージョンでは、ユーザーは環境内でプラットフォームをデプロイし、データとセキュリティを完全に制御することができます。このバージョンは、AIアプリケーションを自分のインフラストラクチャで管理したいビジネスや開発者にとって理想的です。
このブログでは、Difyのセルフホスティングバージョンを使用してRAGアプリケーションを構築します。
# Difyのダウンロード
RAGアプリケーションのセットアップを開始するには、まずDifyプラットフォームをダウンロードする必要があります。これは、GitHub (opens new window)からリポジトリをクローンすることで行うことができます。以下のコマンドを使用してリポジトリをローカル環境にクローンします。
git clone https://github.com/langgenius/dify.git
これにより、Difyを使用してマシンで作業を開始するために必要なすべてのファイルと設定が提供されます。
# 適切なベクトルデータベースを選択する
RAGアプリケーションの効果は、ユーザーのクエリに対して効率的かつ正確にドキュメントを取得するかどうかに大きく依存します。デフォルトでは、Difyは大規模なデータセットの管理とクエリに信頼性のあるweaviate
をベクトルデータベースとして使用するように設定されています。
しかし、このブログでは、より一歩進んで、高速性と精度の両方で優れたパフォーマンスを発揮する高度なSQLベースのベクトルデータベースであるMyScaleDB (opens new window)を統合します。MyScaleDBは、RAGアプリケーションが最高の精度でデータを取得し、全体的なユーザーエクスペリエンスを最適化することを保証するため、他のベクトルデータベースに比べて優れたパフォーマンスを発揮しています。
# DifyでMyScaleDBを使用する方法
Difyは、オープンソースのMyScaleDB (opens new window)とエンタープライズレベルのMyScale Cloud (opens new window)の両方をサポートしています。オープンソース版のMyScaleDBを使用する場合は、このセクションをスキップすることができます。
MyScale Cloudを使用するには、MyScaleDBのサインアップページ (opens new window)にアクセスして新しいアカウントを作成します。アカウントが設定されたら、クラスターページに移動し、右上隅の「+新しいクラスター」ボタンをクリックして新しいクラスターを作成します。
その後、クラスター名を入力し、「次へ」ボタンをクリックし、クラスターの起動が完了するのを待ちます。
クラスターの右側にある「アクション」ボタンをクリックします。次に、ポップアップリストから「接続の詳細」を選択します。
「Python」タブからホスト/ポート/ユーザー名/パスワード
の情報を記録します。この情報は、DifyがMyScaleクラスターへのアクセスを設定するために使用されます。
# MyScaleをDifyに統合する
MyScaleをDifyに統合するには、まずサンプルの.env
ファイルのコピーを作成します。これを行うには、ターミナルで次のコマンドを入力します。
cd docker
cp .env.example .env
これにより、Dockerリポジトリに新しい.env
ファイルが生成されます。次のステップは、MyScaleクラスターから取得した詳細をこのファイルに入力することです。
そのために、.env
ファイルを開き、次の手順に従ってください。
VECTOR_STORE
をMyScale
に設定します。
VECTOR_STORE=MyScale
- MyScale Cloudを使用している場合は、関連する設定を調整します(
MyScale_DATABASE
は変更しないでおいても構いません)。MyScale Cloudを使用していない場合は、次の設定に変更は必要ありません。
MYSCALE_HOST=ここにホスト名を入力
MYSCALE_PORT=8443
MYSCALE_USER=ここにユーザー名を入力
MYSCALE_PASSWORD=ここにパスワードを入力
MYSCALE_DATABASE=default
MySCALE_FTS_PARAMS=
MyScaleDBは、大量のテキストデータセットを検索することが容易な強力な全文検索機能を提供しています。MySCALE_FTS_PARAMS
変数を使用して、トークン化の設定や大文字と小文字の区別の調整など、これらの検索パラメータを設定することができます。これにより、検索が特定のニーズに最適化された状態で行われます。
このブログでは、デフォルトのトークナイザーを使用してシンプルにします。これを行うには、.env
ファイルに次の行を追加するだけです。
MySCALE_FTS_PARAMS='{"text":{"tokenizer":{"type":"default"}}}'
注意: 中国語のドキュメントなど、複数の言語をサポートする必要がある場合は、MyScale公式ドキュメント (opens new window)を参照してMyScale_FTS_PARAMS
パラメータを設定してください。
- これらの変更を行った後、次のようにDifyを起動します。
docker compose up -d
注意: 上記のコマンドを入力する前に、システムにDockerがインストールされていて実行されていることを確認してください。Dockerがインストールされていない場合は、公式のDockerウェブサイト (opens new window)からダウンロードしてインストールすることができます。
上記のコマンドは、必要なサービスを起動します(Docker Composeが必要なアプリケーションを起動します)。すべてのサービスが「started」の状態になったら、ブラウザを開き、http://localhost (opens new window)に移動してDifyを使用し始めることができます。以下のようなログインページが表示されます。
次のステップは、管理者アカウントを設定し、Difyにサインインすることです。ログインすると、ホームページに移動します。
この時点で、DifyプラットフォームとMyScaleDBがスムーズに動作しています。次に、チャットボットの実際の実装に進むことができます。
# MyScaleとDifyでチャットボットを構築する
# ステップ1: ナレッジベースの設定
すべてが設定されたので、チャットボットの構築を開始する準備が整いました。まず必要なのは、チャットボットがユーザーのクエリに応えるために使用するナレッジベースです。始めるには、「Knowledge」ボタンをクリックし、ナレッジベースとして使用するファイルをアップロードします。
Difyでは、Notionやウェブサイトとの同期など、さまざまなソースからデータを組み込むことができます。
注意: ナレッジベースでは、MyScaleDB Vs Zilliz (opens new window)とMyScale Vs Pinecone (opens new window)の2つの記事の内容を組み合わせました。
# ステップ2: ナレッジベースのオプションをカスタマイズ
ファイルをアップロードした後、チャンクサイズの調整、埋め込みモデルの選択、実装する検索のタイプなど、いくつかのカスタマイズオプションにアクセスできます。
検索方法については、テキストデータに対して検索クエリを効率的に行うために、フルテキスト検索オプションを選択します。
注意: 「High Quality」の埋め込みには、OpenAIの埋め込みモデル (opens new window)を使用しています。環境でOpenAIキー (opens new window)を設定するには、右上隅のプロフィールをクリックし、設定に移動して、使用するプラットフォームのキーを設定します。
「保存して処理」ボタンをクリックすると、システムが数秒かかって埋め込みを生成し、データをナレッジベース(MyScaleDB)に保存します。データが保存されたら、ナレッジベースの設定は完了です。
# ステップ3: チャットボットの作成と設定
これで、スタジオからチャットボットのテンプレートを選択し、ナレッジベースを統合する準備が整いました。 スタジオで「Chatbot」を選択し、「Create APP」メニューの「Create from Blank」をクリックします。次のステップについてのガイドが表示されるポップアップウィンドウが表示されます。
「Create」ボタンをクリックすると、新しいウィンドウが表示され、プロンプトを入力し、作成したナレッジベースをコンテキストとして追加することができます。
# ステップ4: チャットボットにナレッジベースを追加
「Context」ウィンドウで「+Add」ボタンをクリックすると、追加したナレッジベースのファイルのリストが表示されます。使用するファイルを選択し、「Add」ボタンをクリックします。これにより、チャットボットが正確な応答を提供するための適切なコンテキストを持つようになります。
同様に、指示ボックス内にチャットボットに特定の指示を提供することもできます。
# ステップ5: チャットボットの公開と展開
チャットボットの準備が整いました!最後のステップは、公開することです。右上隅の「Publish」ボタンをクリックすると、次のようなメニューが表示されます。
変更内容を保存するには、「Updateボタン」をクリックします。その後、「Run App」ボタンをクリックすると、新しいチャットウィンドウが開きます。
注意: チャットボットが準備できたら、Difyを使用して簡単に埋め込むことができます。埋め込みコードをコピーするには、「ウェブサイトに埋め込む」オプションを選択します。これにより、チャットボットをウェブサイトやアプリケーションにシームレスに統合することができます。
「Start Chat」をクリックして、チャットボットを使用する準備が整いました。
まとめると、DifyとMyScaleDBを使用して、使いやすさと強力な検索機能を組み合わせたチャットボットを構築しました。このセットアップにより、ニーズに合ったAI駆動のアプリケーションを作成するための堅牢な基盤が得られます。さあ、チャットボットを活用しましょう!
# 結論
Dify.AI (opens new window)は、AI開発を誰にでもアクセス可能にするために設計された高度なオープンソースプラットフォームです。ビジュアルプロンプトのオーケストレーションや簡単な統合オプションなど、包括的なツールセットを提供し、幅広い技術的な専門知識を必要とせずに強力なAIアプリケーションを作成することができます。Difyは、AI開発の従来の障壁を取り除くことに重点を置いており、複雑なAIソリューションを迅速かつ効率的に展開することができます。
一方、MyScaleDBは、大規模なデータ操作を効果的に処理する信頼性のあるSQLベースのベクトルデータベース (opens new window)として、Difyを補完します。SQLとの互換性と強力な検索機能により、効果的なデータ管理が必要なAIアプリケーションに最適です。MyScaleDBを使用することで、AIソリューションをスケーラブルかつ高性能にすることができます。これは、Difyの使いやすいツールと手を組んでいます。
さらに、MyScaleDBでは、新規ユーザーに対して無料の開発ティアを提供しており、最大5百万ベクトル(768d)を格納することができます。初期費用なしでAIアプリケーションを探索し、構築することを目指す方には優れたオプションです。
RAG/GenAIアプリケーションの構築についてさらに議論したい場合は、Twitter (opens new window)またはDiscord (opens new window)でお気軽にお問い合わせください。