Difyでナレッジと検索の両方の結果で回答してほしい

Date:

Share post:

最新情報はナレッジだけでは網羅できないので「ナレッジ」と「検索」のハイブリットで回答してもらいたいって
思ったことないですか? あれ、俺だけw

「ナレッジ」と「検索」の役割の違い
ナレッジ :自社のマニュアル、商品情報、FAQなどの内部データ
検索 :GoogleやBingなど、最新かつ外部の公開情報

それぞれのメリット・デメリットはこんな感じ

項目ナレッジ検索
情報の正確性高い(社内情報ベース)公開情報のため変動あり
情報の鮮度更新頻度次第常に最新情報を取得可能
専門性高い(独自性あり)広く浅い情報も多い

両方を組み合わせることによって、例えば、商品トラブル → ナレッジで仕様を参照しつつ、最新の市場動向も検索して回答してもらえたりすると便利。

以下こんな感じでブロックを配置

1.知識検索ブロック(図の緑のやつ)を配置して作成したナレッジを読み込む。検索の方はhttpリクエストブロック(図の
 紫のやつ)を配置して、 google CloudからCustom Search JSON APIのAPIキーを発行して設定。

2.結果をLLMに投げる前に、両方の結果を結合して投げてやらないと両方からの得た結果から回答をしてもらえないの
 で、テンプレートブロック(図の結合)をLLMの前に入れてあげる。このテンプレートブロックでナレッジとgoogleから 
 得た結果をくっつけて、LLMに投げる。

3.両方Objectで返ってくるので、バラして必要なもんだけ結合してLLMに投げてあげた方が精度はあがるのかな?w
 LLMブロックでどんな感じで回答してほしいのかプロンプトを設定する。この時ナレッジの結果かgoogleの検索結果か
 、どちらを優先すんのかしないのか、両方考慮するのかをプロンプトに書く。プロンプトの書き方によって回答内容
 が左右されるみたい。

ナレッジの補足としてgoogle検索を使いたい場合は、並列ではなく一直線に配置してナレッジとgoogle検索の間に補足が必要かどうか判断するLLMを設置するのもありなのか。
ただしLLMのブロックを挟むと精度は向上するけど使用するLLMのモデルによっては最大トークン数の制約があるので、情報が大幅に要約されたり・省略されたりするかもです。。有料のLLMモデルを使うと最大トークン数も大きいのでそんなに気にしなくてもいいかもw この場合だったら判断だけLLMにさせて、情報はナレッジの出力結果を渡してあげればいい感じ。できるだけ無料で使えると嬉しいから、色々やると工夫しながら配置する感じになっちゃうのかな〜。

ノーコードと言えど少し複雑なことやろうとするとPythonやJavascriptとかJinja2とかでコード書かないといけない。。。

Related articles

ファインチューニング(2)

前回の投稿(ファインチューニング(1...

ファインチューニング(1)

前回の投稿(ラベル画像のエンベディン...

ラベル画像のエンベディング

前回の投稿(ラベル画像の切り出し)で...

ラベル画像の切り出し

前回の投稿(Mac+PostgreS...