Dify知識パイプライン入門:外部データ活用法
学習ポイント
- Difyにおける「ナレッジ」と「知識パイプライン」の構造上の違い
- Extractor(抽出)やChunker(分割)ノードを使用したデータの最適化手順
- ファイル形式や内容に応じて登録フローを分岐させる応用的な設計思想
スクリプト
🎙️ 冒頭の挨拶とナレッジパイプラインの導入 (00:00:06 - 00:01:46)
こんにちは。よろしくお願いいたします。
もしかしたら初めての方いらっしゃるかもしれませんが、えっと東郷室谷と書いてありますが、えー、さすがお送りいたします。ということで始めていきたいと思います。皆さん聞こえますでしょうか?聞こえていた場合に、あのグッドボタンいただけますと幸いです。オッケーです。ありがとうございます。
では本日もやっていきたいと思いますが、画面共有する前に、皆さんえっと一個だけ質問で回答をチャットの方に送っていただければと思いますが、いつものえっと、ディスコードのチャットの方に送ってもらえればと思いますが、パイプラインですね。ナレッジパイプラインを使ったことがある方、もしくは使ったことがないか、できれば使えた方がいいとかなんですが、そのあたりちょっとお伺いできればと思います。今日はちょっとパイプラインやっていこうかなと思うので、まだなるほどです。ありがとうございます。オッケーです。皆さんえっと、ないですね。ありがとうございます。じゃあちょっとやっていきましょうか。えっとですね、直接的にすぐに触ることがないかもしれませんが、まあやること、触ることも多々ある可能性も増えてくるかもというところでですね、そのあたりをちょっとやっていきたいと思います。
📚 既存のナレッジ機能とナレッジパイプラインの概要 (00:01:46 - 00:06:36)
えっと、ま、まずナレッジについてちょっとお伝えしようかなと思います。そもそもナレッジっていうところで、えっと、例えば今までのナレッジとこのナレッジパイプラインと呼ばれているものってどう違うのかをお話しする前に、ナレッジをもしかしたら作ったことがないって言った場合もあると思うのでちょっと見ていきたいんですが、単純に通常のディフィーでパイプライン自身もこれあれの見た目ですね。ワークフローと呼ばれるものもあれも一応パイプラインって呼ぶんですけども。あのノードがあって線がつながってっていうのを、その形でナレッジを取得しに行くにあたって、ここの画面ですね。このナレッジのところでここをクリックするとまぁこの画面に来るんですが、ここに対してナレッジのベースを作成するってやると通常こんな感じの見栄えなんですね。で、テキストファイルからインポートするよとかって言って、なんかそうですね。まあなんか何でもいいのでざっくりとそうですね。なんか適当なものを入れてみましょうか。そうしたら、なんか勝手にサクッとこんなものをアイエスロパンダの国際収益格差分析とかって言って、これであーでもなんか読み込めないですよ。読み込みましたね。次へってやっていくと、まあこんな設定があるとちょっと初めて見る方はややこしそうかもしれませんが、何かしらいろポチポチ押した結果どうなるかというところを見ていくと、最終的にこんな風にしてここにですね、一個ファイルが収まると。で、このファイルの中身に関してもポチッと押すとこんな感じでチャンクと呼ばれるもので、こう分割して、まあいろいろとこの覚え込ませたりしているわけですね。データベースとして、これを活用してワークフローで呼び出して。でユーザーの質問に対して回答するなんていうこともやったりすると、まあ、これが例えばの話が企業であれば、顧客情報なのか、商品情報なのか、はたまたま企業のノウハウなのか、ま、そういったものが入っていたりとかします。外部には漏れ出したくないものをナレッジとして入れていくというお話でしたね。とで、これをラクと呼ぶ。と。で、今回はそのパイプラインというものが出てきましたよという話でして、これは既存のナレッジなんですが、もう一度ここに戻りますと、これ一回消しちゃいましょう。
皆さんえっと、ナレッジのところに来てもらって、そうするとここにですね。「知識パイプラインから作成する」というのが新しくできました。これを使っていきたいと思います。これがどう今までのものと違うのかというのを今日やっていきたいなと思います。知識パイプラインから作成をするを押していただきますと、これポチッと押します。とまぁこんな感じで、あのここら辺はですね。これがえっと見本ですね。見本があって、まぁちょっと詳細とかをしてみると、こんな感じでワークフローと変わらない作りしてるじゃんっていう形なんですね。こんな感じで。ただ、これは先ほどポチポチ押していたやつをワークフローとして作っていけるよというものなので、この知識のナレッジナレッジパイプラインと呼びます。このノードとかって?これ我々がワークフローと呼んでるのありますよね。これ自身、実際形の呼び方はパイプラインって呼ぶんですよね。本当は。ただ、えっと、各ノードで仕事をしてくれていて、左から右の方にフロー流れていくので、これをワークフローって呼ぶっていうふうにしてるんですが、ま、実際の形の名前の呼び方はパイプラインって呼びます。なので、ま、この知識ナレッジパイプラインというのも、このナレッジの登録の仕方をこのパイプラインという形で作れるようにしましたよというものがあります。で、これはディフィーにしかこの機能ないです。他のエイトNとかオッパル。それからとシブドットエーアイとかあの、えっと、ボロボロですね。他のところではナレッジというものに関してこれがないです。ディフィニーしかないというふうに思っておいてください。よろしいでしょうか?じゃあちょっと早速作っていってみましょう。ベースですね。一番基本形から作って基本を理解した後で、じゃあ、それって応用ってどうやって考えるんだっけ?みたいなところを一時間でやっていきたいと思います。
🛠️ 基本的なナレッジパイプラインの作成手順 (00:06:38 - 00:35:47)
じゃあまずですね。皆さんも準備いいですかね。準備オッケーであればグッドボタンしてもらえればと思います。オッケー。あれ、大丈夫ですかね?この今空白のナレッジパイプラインを押したら、この後はいろいろとお話をしていきますが、一緒に作っていく感じなのでね。で、えっと、今回初めての方いらっしゃると思いますが、通常はですね、えっと、もうなんていでしょう。事例とかをもとにして作っていったりとかっていうことをやっているので、基礎的な部分に触れることがちょっと少なくなってはいるんですが、今回は特にですね、ワークフローとはいえ、えっと、パイプラインとはいえ、このナレッジの方をやっていくので、もしかしたらちょっと面食らうかもしれませんが、頑張ってついてきてもらえればと思います。
ナレッジパイプライムは主にどういう目的の時に使用するんでしょう。これもですね、基本系のことをやったら多分わかると思うので、まずは作っていきましょうという感じになります。やっていきましょう。まず、ラグを作るにあたっては、えっと、ナレッジパイプライというか。まずラグを使いたいといった場合には、えっと、外部のインターネットでは、えー、インターネットにない情報内側の情報だけど、外に漏らしたくないものっていったものを読み込ませてLLMに考えさせたいときにラグというものを使うって思っておくとわかりやすいかなと思います。それを、今パイプラインを使って作っていきましょう。ということで、空白のナレッジパイプラインを押していきましょう。そうすると、このような形で出てきます。皆さんよろしいですかね。
で、通常のワークフローの方では、ま、ちょっとえー、呼び方をわかりやすくためするために、いつも使っている方をワークフローとよりナレッジに関してはパイプラインと呼びましょう。その方がどっちのこと言ってるかわかりやすいと思うので。で、このパイプラインに関しては、ワークフローと同様に支店と終点始まりと終わりがあります。見えてる通り、データソースと呼ばれるところ、これが視点です。あれですねえっと、ワークフローで言うと開始ノードですよね。この知識ベースと呼ばれるものがワークフローで言うところの。えっと、終了ノードとか、もしくはえっと会話だとチャットプロだと回答ノードとかですよね?オレンジ色のこの形です。こういったものがありますと。で、ここのデータソース追加を押してみてください。ポチッと。おそらく皆さん最初ファイルしかないと思います。なので、まず最初にファイルを押してみてください。ポチッとファイルを押してもらうと、下にこのファイルというものが出てくるのでここを押してもらいます。これですね。
空白のナレッジというのがない場合は、えっと、それはあれじゃないですかね。えっと、もしもご自身で作っている場合、セルフホストしている場合は更新していないとないです。クラウドですね。えっと、コミュニティ版クラウド版かクラウド版であれば新しくあると思うのでクラウドだったらあるはずなんですけどね。新しくなってませんでしたっけ?アップグレード。これ関係ないから。このナレッジのここにあるはずですね。知識パイプラインから作成するって言って。でも知識パイプラインから作成するの方に行ってから、空白のナレッジパイプラインですね。
続いてこのファイルを選んでもらうと、このファイルというのが、これが始まりにあたります。始まりにあたって。で、ここに対してこれが終了なので、この間にいろいろと作っていくことになるわけですね。で、このファイルというのが、いわゆるファイルが、えっとこのディフィーのナレッジに投入されたら、ここをきっかけ。ファイル。ここをスタートにパイプラインが流れていくよという話です。で、じゃあここに何が埋まってくるのかというと、ワークフローとはまた概念が違ってくるので、主要なノードが変わってきます。
プラスボタンを押していきましょう。プラスをポチって押しますと、おや、ブロックは今まで通りじゃんとなりますが、ま、確かにそうなんですが、ここにですね、ソースというのがあります。ブロックソースツールとあるので、ソースというのがあります。まず、これ、ちょっと見てみましょう。で、おそらく最初ファイルの人たちはファイルしかないと思います。ただ、今後これインストールすると、ファイアークロール、グーグル、ドライブ、チナリーダノーションなどといった形で、例えばノーションと連携してデータがえ入ってきたら。とかグーグルドライブにデータが上がったら。とかっていうことができるんですね。今回はまだファイルだけにしますが。でもう一個ツールを見ていきましょう。ツールというのはポチッとしてください。僕もツールたくさんありますが、一番最初に使ってほしいもの。それが何かというと、このディフィエクストラクターというものです。こちらに皆さんこちら候補にありますか?なかった場合には、これインストールする必要があるのでないなぁと思ったら、ら、検索検索ツールのところでエクストラクターなんて入れれば出てきまして。でインストールするとかっていうふうになると思います。ポチッと。インストールできたら皆さんグッドボタンを押して教えてください。
オッケーですね。皆さんあ、インストールされましたね。でインストールした後、追加しようと思ってうまく追加できないとか追加した後なんか表示変だなって言った時には更新ボタンを押すようにしてください。そうしましたら、このディフィエクストラクターというものをインストールしまして。これインストール私できてるんですけどね。これをここにこのトグルでグループでこんな風になっているので、ポチッと押して下に出てきたこのディフィエクストラクターを選択します。
このディフェクトストラクターというものが何なのかを簡単に説明すると、エクストラクター、つまり日本語で言うと抽出ですよね。で、このディフェクトラクターっていうのは、ある程度のドキュメント関係のファイル、例えば、えーと、テキストファイル。それからえっとー。グーグルドックスみたいなドキュメントファイル。えー。スプレッドシートみたいなxlsxとかまそういったものpdfなんかもそうですね。そういったものに関しては、これでテキストを抽出できますよというふうになります。詳しい説明とかはえーとですね。ここ例えばポチッと押してここ出てくると、この上のところにこれヘルプあるので、このヘルプを押すと、こんなふうに該当するところに対して詳しい内容書いてあるので、このあたりをやはりえっとですね、最初読んでおくといいと思います。
続いてティフィーのエクストラクターっていうのが、これをポチッと押して追加できました。とその時に入力変数ここですね。このファイルというところ、これ何を指定しますかというところなんですが、これ来たファイルをここに入れられるような設定をしなきゃいけないので、このファイルですね。こちらのあのカーソルを合わせるとこんな風にポチッと押せる状態になると思うので、これをポジットしてもらうと候補が出てきます。で候補出てきたらこのファイルというのを選んでもらってポチッと押します。とここにですね、ファイルというふうに収まります。そうすると、ここからここに入ったファイルがこっちの方に入りますよというのが、ここで設定されたということになりますね。っていうところで、ここまでできたらまたグッドボタンを押してください。
入力が変数が出てこないということは、一回先ほどお伝えしたように更新をしてみてください。インストールした後すぐに追加すると表示内容がうまく出ない場合があり得るので、一旦離脱したりとか。スーパーリロード単純なリロードしたりしてみて、画面を新しくした後でもう一回確認してみてください。オッケーです。
そうしましたら次行ってみましょう。続いて、えっと、ファイルが入りました。そのファイルの中身をデータを抽出しました。で、その後ですね、えっと、通常でやっていることと一緒なんですが、抽出した内容はチャンクと呼ばれていく分割した内容にしていく必要があります。どういうことかというと、一旦ちょっと元に戻って見てみていきましょうか。例えば、の話がナレッジというものがどういうもので作られているかというと、そうですね。プロプトの考え方、資料とかっていうのがあった場合に、こんなふうに分割されて入っていくんですね。これなんでかというとllmが例えばの話ナレッジを読み込みに行くときにものによっては長い文章、それこそ10,000文字とかっていうのを一気に取り込むというのは、ものすごくトークンを消費しますし、使用しますし、毎回毎回読み込むということは、毎回毎回一番文字を読み込むことになるので、ものすごく非効率、そして遅くなりやすいと。であれば、該当する部分だけを的確に取っていける方が良くないっていうところから分割をしていって覚え込ませていって、その中から適切なところだけを取りに行きましょうというのが基本的な作りです。そのためにも同じように抽出した。例えば、ここにファイルが10,000文字あったとして、まそこに対してディフィーのエクストラクターで10,000文字を抽出しました。と。で、それをそのまま入れちゃえっていうのはこれ結構乱暴な話になります。なので、チャンク分けチャンク分割をする必要があるというふうに覚えておいてください。
それが何かというと、じゃあディフィのエクストラクターでここをポチッと押しますと、ここでですね、また、ツールを選びます。皆さんインストールされていないはずなので、チャンカーというふうに調べてもらって、このジェネラルチャンカーというのをインストールしてください。インストールできたらまたグッドボタンをお願いします。ありがとうございます。じゃあちょっと次行きましょうか。そうしましたら、このジェネラルチャンカーを、オッケーですね。ジェネラチャンカーを追加していきましょう。こんな感じで。
で、ジェネラチャンカー追加した時に先ほどですね、あの天気さんのように表示されないよっていうことあると思います。なので、その際には更新ボタンを押すとか一旦ちょっと離脱して違う画面に行ってから戻ってくるとかいう形をすれば、こういった内容が出てくるかと思います。これですね。
じゃあここを少しずつちょっと見ていきましょうか。ま、結局これも何をしているかというと、通常の方のやつとですね、ほとんどやってることは変わんないんですよね。実は。やってることは変わんなくてえっと設定かな。設定で見るか。えー。ドキュメントの。そうですね。こっち見たらいいんだっけな。チャンク追加。いや新しくした方がわかりやすいか、もう一回ちょっとどういうことを今からやろうとしているのかを、もともとのやつの設定を基準にしてちょっと見ていきましょうか?
えっと、これちょっと見てもらいたいのがこれ。通常今までやっていたナレッジを登録するときの画面です。で、そこで何をしているかというと、もうすでにですね、ここ。ファイルを入れてプレビューっていうふうにこれ出てます。これって何をしているかっていうと、さっきの言うところのファイルが入って、このエクストラクタまではもう。ファイルを登録した時点でやってくれてるんですよ。で、じゃああとチャンク分けして知識ベースちーナレッジに埋め込むよね。っていうこの後ろの二つですね。これを通常であれば、この画面で普通に設定しているんだよと思ってください。例えば。の話がこのチャンク設定でこの汎用って書かれてますけども。この汎用のやり方なのか、親子っていうやり方なのか、これはですね、ちょっとまた難しいので割愛しますが、すごい。長文の時には親子を使った方がいいよね。でも、そんな大した文章じゃなければ、まあ汎用でもいいかな?みたいな感じの使い分けなんだなと思ってください。一旦大雑把な説明はそんな説明です。で、汎用の中でチャンク識別子。例えば、えっと段落。どう開けているのかっていったところですね。改行されたら、そこをきっかけにチャンクを分ける。個別に分けて覚え込ませるとか、最大何文字までいきますか?とか各チャンクで重複する範囲はどれぐらいにしますか?とか、これかつてハンズオンとかでやっ。あのあとアーカイブにもあるんですけど、こういったところを説明したかなと思います。で、まあとはですね、下の方行きますとインデックス方法なんて呼ばれるもの。で、これは何かというと、えっとここに書いてある通りllmが高品質の回答を生成するんだったら、高品質を選びましょうと、ただいや、例えばテストをするだけなんだよね。っていう時には経済的にも構いません。というような形ですね。こんなことを選びます。まあ、基本的には高品質選ぶかなと思います。埋め込みモデルというのが、実際にそのえっとチャンクに対してえっとナレッジというものをおーラグとして埋め込むデータとして埋め込む時に必要なものを選んでいくのがここです。と。反対にじゃあ埋め込んだ後でllmが検索をするときにはどういう検索ができるようにするのがこの検索設定ですと。三つあります。ベクトル検索。全文検索。ハイブリッド検索。でベクトル検索というのが、えっと意味を考えた。検索をしてくれるのに対して、全文検索っていうのが文字で一致してるとか、そういったところを考えて見ていくものになります。ま、こっちグーグルとかがこっち側ですよね。こういう検索の方法ですと。でハイブリッド検索と呼ばれるのがま、意味と文字の一致、両方とも見ていきますよ。というもので。なのでこれ推奨。ちょっと見えづらいですけど、推奨とされていますと、こんなことを通常今までの設定ではやっていましたが、これをパイプラインの方だとどんな風に設定するのかというと、このジェネラルチャンカーの右のこのあたりですね、見てもらえるとわかるんですが、えっと、まずインプットコンテンツということで、これは何を設定するかといったらここスラッシュをするんですけど、スラッシュをして変数を出すと、このディフィーのエクストラクターで抽出した文字10,000文字のファイルだったら10,000文字を抽出5000文字だったら、5000文字の。を抽出みたいな形でこのディフィーのエクストラクターの抽出した文章をここに入れます。なので、点数自体はここのディフィ。エクストラクターの下にあるテキスト。これを選びますと。こんなふうにします。
で、このデリミターというのが何かというとここですね。これです。チャンク識別し、何をもってしてチャンクを分けることにしますか?開業です。って言ったらここですね。改良なのでこれ別に一個でもいいんですけどね。このバックスラッシュNというのが開業を意味しています。アってるですね。Pcの八言語種なので、ま、こんな風に入れますよとか。まあこれちょっといろいろ入れ方があるんですけれども、ひとまず、これは今回簡単な入れ方をします。であとはマキシマムチャンクレングスチャンクの長さの最大長ですね。つまりはここですね。最大チャンク値をどうしますか?みたいな一個の分割した文章の最大文字数はあって言って、だいたいこれは500から千がLLMとしては最もパフォーマンスが出やすいと言われていますが、まー500℃仮に設定しましょう。
で、その他はさっきのこのチャンクオーバーレングスっていうのがこっちで言うとこの。これですね。チャンクのオーバーラップ。まどれぐらいちょっとあの前後前後のチャンクで少し重複する部分をどれだけ作りますか?みたいなところなんですけれど、これってなんでこんなおチャンプのオーバーラップなんてものがあるかっていうと、えっとーまったく重なる部分がなく、分割してしまうとあのですね。Llmとしてはえっとこれってどれが最初だっけ?とか、どれが途中だっけ?とかっていうのはわかんなくなっちゃですよ。その分割ごとで。ですが、前後がちょっとだけ重なっているとAの分割の後にBの分割ちょっと重なってるからその順番だよね。とかっていうふうにその順番をちゃんと理解してくれるので、文脈がぐちゃぐちゃにならないで理解してくれるから、回答精度が上がるなんて言われるんですよね。まあ、そういったところからシャンクのオーバーラップ。まあ、えっと多少あった方がいいとはされます。ただ、あまりにもつながりすぎていると、重複しすぎてたくさん文字を読み込むことになるので、お金かかるよねとかっていうふうに、ここも調整が必要なものなんですが、そういった概念をチャンクのオーバーラップと呼びます。で、ここにチャンクオーバーラップレングスっていうのがあるので、お好みで設定をします。まあゼロだと多少ね。微妙かな。じゃあ20。にしとくか。とかっていうふうにして調整していくんですけど、このあたりは出力内容でご自身で調整だと思ってください。で、一応これオッケーとします。いわゆるここはですね。ただ、チャンクをどのように設定しますか?というふうに細かく設定するノードだと思ってください。
ここまでよろしいでしょうか?オッケーであれば、グッドボタンください。ありがとうございます。大丈夫そうですね。不明なところあればまたチャットのところに入れてもらえればと思いますので。
そうしますと、じゃあ、チャンクしましたよねと。そしたらあとはここをつなぎます。つなぎまして、このチャンク分割したものを最終的にこの知識ベースというところに埋め込みますよというのが最後の知識ベースのノードです。と。こんな感じで、最初にチャンク構造を選択するっていうのが出るので、これポチッと押しましょう。これ出ました。汎用を親子Qアンドa。こっちで言うとこれこれですね。汎用とこれと親子とqaっていうのもあるんですけれど、これですね。Qaっていうのは新しくこここれだと見えないんですが、新しくあるんですね。選べるようになっています。で、なんでQアンドAっていうのが選べるよ。うになったかというと、えっと、例えばの話がスプレッドシートのような。えっと質問。回答みたいな感じで質問一しすえ?回答一とかっていう風な。このーえっと、一対一の回答内容のものをラグ化しておくというのは非常にLLMとしてはえー。検索しやすく回答しやすいとされています。なので、結構す。回答制度が上がりやすいとされているので、このQアンドAっていうのがあるわけですね。ただ。それとは別で、ものすごくpdfで長い文章で、もう20,000文字とかも文献によ。っては十万文字とかあったりするわけです。そういったものをラグ化するにあたってはあまりにも長すぎるので、ま、それに対しては親子というものを使う必要があります。ちょっとですね、ここ、ここれまで説明しちゃうと、これで一時間かかっちゃで。で、まあまあそんなね、普通の?なんかあの寺市とか。まあペラ二枚ぐらいのものに対しては汎用で結構です。みたいなイメージです。なので、今回汎用を選んでいきましょう。で汎用ポチッと押しますと、こんな感じでドーンと出てきます。少し広げましょうか。こんな感じですね。
汎用を選んだので下でだーっとあって、チャンクとかインデックス方法とか検索設定。これは先ほどのこっちのここですよね。インデックス方法とか検索設定とかって、ここの部分がこのパイプラインで言うところのここに当たるわけですね。で、まずチャンクです。でチャンクこれポチッと押しますとどのチャンプ選ぶって言われるんですが、もうこのこれしかないのでチャンク分割した。その結果は。なので、このジェネラルチャンカーというののリザルト。これを選んで入れておきます。
で続いてインデックス方法。基本的にはこれ、高品質で結構です。ほとんど高品質にすることがありません。することしかないです。で、例えば、最初経済的っていうふうにしてテストして、あー、これでもう使えるようになったなー。で、じゃあ高品質にしようって言って後から上げることができますが、高品質から経済的な方に下げることはできないです。で、あとは、えっと、親子チャンクですね。先ほどの親子ってやつですね。上の子のチャンク設定で親子を使うときにはこれ高品質じゃないと使えません。なので、必然的に親子でやる場合にはもう必ず高品質を選ぶことになります。なので、インデックス方法高品質を選んじゃいましょう。
埋め込みモデルなんですが、まあ何でもいいんですけれども、まあ今回はえっとオープンai多分これえっとコヒアというのもですね。割とよく使うので、コーヒアあがえっと、設定がない場合にはこれ入れといてもいいかなと思いますが、ひとまずオープンaiをつなげて。いればこのオープンaiのこのエンベティングスモールでいいかなと思います。これは一番小さくて済みますが、
続いてですね。ベクトル検索なのかとか全文なのかとかハイブリッドなのかなんですが、ひとまずあまり理由がなければハイブリッドを選ぶと思っておいてオッケーです。なんかウェイトとかリランクモデルとかありますが、ここも最初ちょっと難しいんで。まあウェイト設定のデフォルト値でいいかなと思います。でものによっては、このリランクモデルというこれこれ専用のモデルがあったりするんですけど、こうやってあのコピアとかそうなんですけれど、これとかっていうのもあのまその癖があったりするので、あのわかるようになってしかも使いこなせるようになってからでいいので、ウェイト設定デフォルトのまま。ハイブリッド検索でいいと思います。
余談でお伝えするのがこのトップKとスコア閾値と呼ばれるものでトップKというのが検索してきた中、ヒットしてきているものの中から関連度というものが高いもの順から三つだけ取得して回答として採用して使っていくよというのがこのトップ系です。と。でもう一個スコア式一と呼ばれるものが何かというと、先ほどと同様に検索していくと、関連度によってだーっと検索結果が出るわけですね。ランキングが関連度高い順にランキングされ出てきます。その中から0.5。の関連度が零点いくつ出てくるんですね。一。というのは完全一致なんですが、基本的にはあり得ないです。そんな数値はなんで0.98とか0.5。いくつとかって出てくるんですが、このスコア閾値というものを押すと0.5以下のものは排除するとかってことになります。なので、例えば。の話。じゃあトップ十個採用するよって言って、このここをすごい高くして、仮にですね。例えば、ここを0.8。とした場合に、えっと0.8。までのランキングが五個しかなかった。あとは全部0.8以下の場合にトップ十取ってくる。とはいえ、スコア閾値が0.8以上のものが五個しかなかったら五個個しかデータを取得してこないみたいな言い方なんなるんですね。ま、こんな使い方になります。ちょっと難しいと思いますが、ま、こういったところを知っておいて、後で使いこなせるようになっていくと、まご自身の企業とかま、そういったところでデータを取ってくる時にま、どういう風に考えて調整しようかなー。の一つの引き出しになるので覚えておいて損はないかなと思います。
もろもろここ設定終わりましたと。そしたらもうあとは。これもポチッとしたら設定されたことになるので、これでまずこのですね、こっちで通常やっていることと同じことをパイプラインでやるならこの四つの流れですよということになります。これが基本形です。
💡 ナレッジパイプラインの応用例とメリット (00:36:07 - 00:47:14)
まあ、そういうことでパイプラインを使って前のものと同じものを作った。基本形はわかったよと。でもこれだったらパイプラインなんか使う人ないじゃんっていう話になるんですね。なので、ここからはちょっと別の話をしていきたいと思いますが、ここまで大丈夫そうですか?大丈夫ですかね?ありがとうございます。
じゃあえっとこのファイルだ。なんだとかってこの基本形わかったからまあそれでいいんだけど、じゃあこれが何を何がどういいんですか?っていう話になりますよね。で、それに対してちょっと見ていきましょう。例えばの話なんですが、まあ見本見てもいいんですが、一旦ちょっと
これちょっと見えますかね?簡単にわかりやすくするために作ったんですけど、違ったノード見あ、違った。パイプライン見えてますか?オッケーですね。ありがとうございます。
先ほどとは打って変わって、まあ結構パイプラインがバーっとありますと、これ何かというとここからIF/ELSEで分割をしてきてファイルの内容次第でこのチャンク分けの仕方とかいろいろ変えていこうぜっていう感じなんですよね。
まずこのファイルの中身が仮にですね、このLLMでこんなふうに考えさせます。ファイルの中身を確認して、以下の出力条件に沿って出力してください。例えば。の話がファイルの中身がQA形式であればQAと出力してくだ。さいとか、ファイルの中身が5000文字を超えるような長文である場合には、長文と出力してください。それ以外は通常と出力してくださいとします。で、そうするとここで最初に入ってきたファイルがどんなものなのか、どんなものなのかを考えて、後ろのエフェールスで長文だよとかqaだよとかって言ってくれるわけですよね。で、それに対してじゃあIF/ELSE分で。判断してくれます。あqaなんだじゃあQAチャンク使おうね。チャンクの仕方は先ほどジェネラルチャンカーっていうのをお伝えしましたが、他にもチャンクqaだったらQAチャンクというのがあるんです。使い分けをしなければいけません。ただ、これをいちいちこっちでポチポチやる必要がないので便利だよね。っていう話なんですね。
ここは完全にもう決めちゃった。後qaだったらqaのものをまた別で作っていくとかなんかいろいろとやっていかなきゃいけないんですけど、こっちの方がマシじゃないかと。長文だった場合は、このペアレントチャイルドチャンカー。これは親子チャンクというものですね。なので、長文だったら親子チャンクにしておく。親子チャンクにして登録をさせていく。それ以外だったら普通の。先ほど使ったディフィレントストラクターで抽出をして。でジェネレーターちゃんかして。って形でこんな風にしていきます。
ごめんなさいねこれ。多分。これチャンク以外にもエクストラクターとかってここに使わなきゃいけないんですけど、ここも本当だったらディフィエックストラクターが必要なので、ここでツールでエクストラクターを追加して、そこからチャンカーにする必要がありますね。はい、こんな感じです。
そうすると判断をもし勝手にしてくれて。でエクストラクトしてチャンクね。分割して入れてくれるなんていうことができますし、その他にもこれノーションだったらドーションの時にはまた別ルートで最終的に埋め込むことできるよ。とかグーグルドライブだったらグーグルドライブの時にも最終的に埋め込むことができるよという形で、場合分けを全部このパイプラインで作り切れるんですね。ただ、かつてはそれができなかったというのがあります。一番最初にここの部分でナレッジベースを作成の時にテキストですか?ノーションですか?ウェブサイトから同期ですか?最初に選んでそれ以外は選べなかったです。でも、それがパイプラインにしたことによってパイプラインにしたことによって、いや、テキストだろうがノーションだろうが外部のグーグルドライブだろうが、最終的に判断をさせてこの知識ベースに入れられるようになるっていうのがパイプラインのいいところなわけです。まったくもってものが違ってきているということですね。
えっと、試して、ちょっと他の例のやつを見てみるといろいろとさらにですね、知識が深まるので、ぜひご自身で知識パイプラインから作成するのところで、こういった五つですね。例があるので見てみてください。もちろん選ぶってやって作ってもいいですし、最初詳細とかって言って見てもらえたらいいと思います。あ、こんな感じで作るんだっていうのがわかりますし、こういう感じで日本語で文章一応書かれてはいる。多分最初知識ない状態でこれを読んだとしても意味がわからんってなったと思ですが、今お伝えしたような内容で、あーそうなんだってぐらいに思っておいた状態だと、割とこの文章を読めるかなと思います。へーあ、なんかわかる気がするとなると思うので、ぜひ読んでみてください。
⚠️ パイプライン利用時の注意点とその他の応用例 (00:47:14 - 01:03:32)
というのがこのパイプラインの違いなので、ま、パイプラインも場合よけに場合分けで自動的にえっとですね、入れられることができますし、これが例えば画像から読み込んで文章を。とかで動画もできたかな?エクストラクターの部分を全部ツールを確認しているわけではないんですが、ただ、そこそこエクストラクターもあったはず。エクストラクター。あれ?エクストラプターってやると、えっと、まあ、ワードもそうですしptfあるよねとか ocr。はこれ画像ですよねとかで。Ocrからpdfを見てそっからマークダウン形式に変えてくれますよ。とか。あとは。ああすうーん、そうですね。あとは本当は動画とかあったらいいですけどね。Ffmpegがこれは音声とまあこれもどう使おうかだな。まあでもfmぺは音声や動画扱うときのものなんですが、ちょっと難しいことですね。ファイアクロールは、えっと、ウェブサイトからデータを取ってきた時とかですね。Pdfからイメ。ー。ジに変えるとかのもありますよね。あんまりこれ使わなそうですけど、こんな感じでえっと、いろいろと変換したりとか抽出したりするものがあるわけで、ま、それらをもとにして最終的知識ベースに入れることができるというところではございますね。
というところですが、そういった形でパイプラインを使えるようになってくるとなんかもうですね。これだけだとぶっちゃけ足りないんですよね。あのあっちからもこっちからもテキストとか画像とか動画からもやりたかったんだけど。みたいなことがあるんで、それを結構簡単にしてくれるっていうのがあります。基本的にえっと、先ほどのディフィーエクストラクターはこのあたり書いてあります。このあたりをサポートしていると思ってもらって、それ以外に関しては違うエクストラクターを使うとかって考えてもらえればいいと思います。なのでえっと先ほどのこれxlsxとかこのあたりもあるのでこのqaに関して qa qaえっとこっちですね。パイプラインでqaチャックを作るときには、これ。ティフィーのエクストラクターがいいはずです。こんな感じでこれは経営ちゃんと作っちゃってとで一個僕の方で。あーこれ嘘ついちゃったなっていうのは何かっていうと、知識ベース入れるときに、これって先ほどのこれですね。チャンク構造でこれって同時に。Qaとかqa親子汎用点これ選べないです。なので、これに関しては今僕集合して入れてますけど、これは嘘でした。分けていかなきゃいけないっていうのがあります。なので、えっとこれ本当はできるじゃんって今言っちゃってましたけど、これできないです。ごめんなさこれ間違えてます。僕が。でこれ知識ベースをえっとですね、ここでブロック追加で知識ベースっていうのを作ることができないんですよ。なので、ここに関しては今これ分割できるって言っちゃいますけど、これは嘘でただ、えっと他のところで言うと、このこのノーション逆ですよね。この視点から何かしらの処理をして知識ベースに埋め込むっていう集約をさせることができるので、ここで言うと、この新しいやつを見ると、これはさっきの一般文書で見るとこういう感じですね。グーグルドライブがあったりとか。ノーションでジナリーダーっていう。これ検索するやつですね。とか。えっと、一応文字も取ってこれます。あのウェブサイトからま、そういったものだ。あと、抽出して集約してチャンク化してナレッジベースに入れるっていうのはできるんで、そういうことができます。ただ、汎用なのか親子なのかQアンドAにするのかっていったところは一個ずつ個別で作っていかなきゃいけないっていう形になるので、ここだけ気をつけてください。
このあたりいかがでしょうか?質問ありますか?って言っても多分いや、まだ聞いたばっかりだし、質問もあんまりないんですけど。っていうふうになりやすりなるかなと思ですけど、まぁ、こんなところを覚えてもらえれば思います。
長文処理になると、ここがペアレントチャイルドになるわけですよね。親子になりますと。あとはqaになるんだ。ったらQはqaで、やっぱりここにこういうふうにナレッジベースがqaでqaのプ。ロセッ。サーとありますけれど、もこれですね。中身を見れるので、後であの自分でこのナレッジパイプラインを使用してください。ってポチッと押すとナレッジパイプラインが使えるようになって、このノードを押すとあ、こういう風な設定なんだっていうのがわかるんで、ご自身では確認してみてください。
その他です。と。文書の形式を変換したいよっていう場合にどうしたいんだっけ?っていうと、まあ、こういった。例えばドキュメントだったんだけど、これをえっと、マークイットダウンっていうのは結構。例えばバークダウン形式で。にするとか。で、それを形式に変えてから親子のチャンクにして最終的にナレッジに入れているとか。全部見ちゃってますね。一緒に。でインテリジェ。ントqa生成何?かって言ったらインテリジェントとはどういうことかなんですが、えっと最終的にここでll部へ挟んでいるということなんですよね。Llmで生成され、ているQアンドAのペアが入力テキストから重要な情報を抽出して構造がされた使いやすい形式で提示されて、各ペアは要点とか重要な詳細を的確に捉えた簡潔な質問と必要としない。ま、なんかこれも見た方が早いですなんかどういうllmえっとプロンプトで指示されているのかを見た方がどういう設定でインテリジェントと言ってんのかがわかるので。英語ですね。これは面倒なのででもまあなんて言ってるかなベースに日本語にしちゃいましょうか。最終的に言っていることが何かというと、えーっと、マークダウンテーブル形式としてここが連番。ここは連番質問回答だよね。というふうな形に変換できるようにして、あー、なるほど。えっと、もともとがどれだっけ?もともとがそもそもqa形式のファイルじゃない場合ですね。このファイルが。とかま、どこかなんですけど、ここれが全部qa形式のファイルじゃなくて単純なテキストの羅列だった場合、も全部情報を集約した後にここでllmでqaっぽくしてって言ってるんですね。Qaにしちゃって。で、そのqaにここでプロセッサー。もうqa形式に最終的にするための処理の手前で処理しやすくしている。なので、ここでqaっぽ。くしますでqa最後のqa表を作るためにここでqa処理し、やすくしてで最後処理して。でナレッジに入れてるっていうやり方ですね。ま、こんなこともできるよ。ということで、最終的にqaの方がやっぱりその出力。えっと、出力の品質が高まりやすいのでこんな感じでllmにqaに無理やりってわけじゃないですけど、しっかりとですね。考えさせてやらせているって感じですね。さっきの方は何かというとこちらのqa表のデータ抽出っていうのは、えっともともとの簡単なqaテンプレートっていうのが、あらかじめファイルとして入れられている想定です。もともとファイ。ルがqaなん想。定。さっきのインテリジェントの方はもういろんなものが情報が。だっとき、た中で、それをqaにするためにaiに一旦考えさせてるってやり方でした。とま、そんな違いがあるということですね。
いかがでしたでしょうか?ということで、今回はですね、パイプラインといったところを触れてみました。なので、えっと、今後ご自身でワークフローを作っていくにあたって、おそらく自分自身のナレッジもしくは顧客情報、商品情報。その他ですね。えっとー。インターネットにはない独自の情報っていったものをこのナレッジに埋め込む時に、まあ、例えばお客さん情報のテキストとかあったらどんどん入れるっていったところをまあいちいちあの。ですね。ポチポチポチやらずに一旦このパイプラインを作っておくことで、グーグルドライブから。とかノーションで入れたものに対して。とか、そういったところが集約されていく形を作っていけると結構自動化がはかどるということもあり得ますので、こういったところもぜひともですね、機会があれば使ってみてもらえたらと思います。というところで残り五分ですが、質問があればですね、チャットの方にいただければと思います。ディスコードの。でその他の質問でも構いません。
📢 締めの挨拶と今後の予定 (00:54:00 - 01:03:32)
えっと、今回のハンズに関してはここまでとさせていただきますのであー、特に質問とか。あー感想とかないよって言った場合には、あの退出していただいて結構ですということです。本日もですね、土曜日の夜にお集まりいただきありがとうございました。また次週もやっていきたいと思います。
ちなみにあのですね、今ってえっと、ワークフローディフィーのえっと、なんていでしょうね。ハンズオンとしてやっていますが、ま、ハンズオン期待されてディフィーのハンズオン期待されてやっていますが何でしょうね。カーソーカーサーとかクロードフォードとかそういったものも興味あるかとか。ま、そのあたり、ちょっともし時間があれば聞いてみたいところではあります。一応このコミュニティ自体がワークフローだけじゃなくて、まあそういったクラウドコードとか。あとはボルトレプリットとかでアプリを作るとか、サイトをつけるとかそういったところもありますし、送ってありがとうございます。興味があるってことですかね。なるほど、なるほど。そういったところもどこかでやる。どこでかでやるかま、ハンズオンってえっと、皆さんそのリフィのハンズオンも期待されていると思で、これはこれでこの定期的にここの同じ時間でやりつつ違うところでやるのがいいですかね。
あーmcpああ。はあ、はあ、なるほど。ディフュートリガー機能も確か実装されましたね。今度じゃあ、ちょっとそれを題材にしますか?ただ、まあまあ、トリガー機能って言ってもあの時間トリガーだけだったはず。ちょっと僕も詳しくないですが、柔軟なトリガーかと言われれば、まあ頑張ってるねっていうだけじゃなかった。多分定期実行ぐらいだったはず。あ、でもスラックとか?Gメールはあるの?か?な。ああスケジュール。トリガーとプラグイントリガーとウェブフックトリガーなので、まあまあまあ多少できるよ。うになったかなって感じですね。
Maのディフィ両方使ったワークフローをやりたい。です。ああ、それあれ?ロビンさんは第二期からでしたっけ?そしたら多分第一期のやつのあれなん?最後かな?を一旦見てみると連携の仕方はわかると思うので、それ見てもらった方が早いかなと思います。トリガー機能実装するとなったらバージョン上がってないのであればバージョン開けておく必要があると思いますが、セルフオースだった場合には、バージョン上げる必要があると思います。
Mcp最近話題ま結構結構前っす。けどね。Mcpももうただもうえっと。Mcp自体はえーと自分 api連携ができるようなサービスがあれば最悪公式で作ってなくても自分でmcpサーバー作ってllmに使わせるなんていうこともできます。し。ちょっと僕もですね。一部ちょっとやってます。あのフリーっていうえっと、おかあ、これけじゃない会計ソフト会計ソフトのapiでmcpを自作してで、自分のパソコ。ンの中にmcpを作っておい。て、でなんかその例えばgメールとれんもうmcp連携してでGメールに来た領収書でそれを読み込ませてま一応取引登録で入れてるんですけど。ただ、ちょっとあ、の画像のpdfの画像。とかま、で登録するっていうのがこれできてないんで、そのあたりちょっとできるようにしとかなきゃなーとかっていうことにしてたりとかっていうのはmcpで、できます。ね。複雑になるんですけどちょっと画像とかpdfの話ってくると若干。
じゃあちょっとティフィーのスケジュール。トリガープラグイン。トリガーウェブフックトリガーあたりはちょっと準備をしておきます。Mcpはあ。でもこれは最近話題だmcpってのはこれディフィのmcpですかね。ですかね。僕が言ってるmcpってディフィノっていうよりはもうあのカーソルとかクラウドコードとかそっちと合わせるって言ってたんで結構mcpといっても、また何とつなげるかによって結構変わったりするんです。
思い回ります。ちょっと来週じゃなかったらすいません。でも、あのやるようにしてます。やるようにします。あー僕が言ったmcpですね。はいあれはもう完全にmcpのその基礎概念のところなので、はいえっとそれはえっと学んでおいてそうはないかなと。その設定がえっと大雑把に言うとそうですね。クロードコードとかカーソルとかそのあたりの設定とディフィーの方のmcpは僕自身がやってないので見ておきますが、まmcp使えるようになるんだったら、えっと、もし個人だけの話で言うと、まああのカーソカーサーとかクラウドコード使ってmcp連携しちゃう方がめっちゃ楽ちんですね。というところです。で、あとはちょっと僕も今えっと絶賛習熟中でやっているのがクラウドコードにえっと、スキルズっていう機能と、それからサブエージェントっていう機能があって。でそれぞれ特色が違ですが、あ、そういったものもできるようになっていくと、えっと、最終的には。なんていでしょうね。別でもうそんなにディフィーを使わなくてもいいかなっていうところまで持っていけちゃですよね。ただ、じゃあディフィらなくなるのかっていうと、それはまた別の話で、企業でエンジニアと一緒にやっていくにあたって、ディフィーのようなワークフローを一緒になってやっていくっていうのは非常にコミュニケーションが取りやすくなるっていうのもありますし、そもそも会社にディフィ導入することによって、非エンジニアがエンジニア感覚をつかんでいくっていうことに関しては非常に役に立つので、えっとー。向こう本当三年、四年とか全然ディフィーは全然使われていると思います。十年はわわかんないですけど、それぐらいディフィンの需要は今広がっていってるばっかりなので、まだ。っていうところかなと思います。
ということで長くなってしまいましたが、本日は。以上となります。来週ですね。あの間に合えばトリガーの話もしますし、ちょっと間に合わなかったら別のやつもやります。ただ、いずれにせよ。トリガーの機能はどっかのタイミングでやるのはちょっとお待ちくださいということです。その他、こういうのやりたいとかって言った場合、ちょっとあのなるべくお答えするようにしますが、あの、またえっとですね。意見とかもらえればと思いますし、ぜひですね。皆さんもいろいろとこのコミュニティを盛り上げるにあたって、ああいうのどうなの?こういうのどうなの?っていう話もいっぱいいただければと思います。
ということで、本日もお疲れ様でした。また来週どうぞよろしくお願いいたします。