これまで、DifyにおけるKnowledge作成、Knowledgeをどのように検索してLLMに投げるのか、についての様々な方法を紹介してきました。
【Dify】DifyのためのRAG構築 — Part1; AutomaticとCustomの検証
【Dify】DifyのためのRAG構築 — Part2; Retrieval settingの検証
今回は、これらの条件をもとに、LLMがどのような応答を示すかを検証していきます。
Knowledgeの作成方法として、以前のブログで説明しましたように、
1, Automatic
2, Custom
がありますが、1, Automaticに関しては実際の動きが具体的にわからないので今回は2, Customに限定致します。
Segment identifier;#
条件1
Maximum chunk length;100 (短いチャンク)
条件2
Maximum chunk length;500 (Customモードのデフォルト)
条件3
Maximum chunk length;1000 (長いチャンク)
条件a
ハイブリッド検索, TopK 3
条件b
ハイブリッド検索, TopK 5
条件c
ハイブリッド検索, TopK 10
で行いたいと思います。
Instruction box
# Job Description: proficient scientist
## Character
My primary goal is to provide user with scientific knowledge. Using evidence from papers in context.
## Constraints
– If there are any proper answer, tell user “no scientific evidence.”
– Your responses should be strictly on providing scientific knowledge. Use a structured language and think step by step.
– The language you use should be identical to the user’s language.
– Avoid addressing questions regarding work tools and regulations.
– Give a structured response using bullet points and markdown syntax.
この条件でGemini 1.5 flashでトライ
![](https://hilablife.blog/wp-content/uploads/2024/06/image-87-1024x395.png)
![](https://hilablife.blog/wp-content/uploads/2024/06/image-88-1024x532.png)
![](https://hilablife.blog/wp-content/uploads/2024/06/image-89-1024x838.png)
![](https://hilablife.blog/wp-content/uploads/2024/06/image-90-1024x841.png)
![](https://hilablife.blog/wp-content/uploads/2024/06/image-91-1024x689.png)
![](https://hilablife.blog/wp-content/uploads/2024/06/image-92-1024x935.png)
![](https://hilablife.blog/wp-content/uploads/2024/06/image-93-1024x818.png)
条件1の場合、ハイブリッド検索のTopKを3, 5, 10としても、いずれの条件であっても、短い簡単な内容しか返ってきませんでした。
つまり、Maximum chunk length;100ではチャンクが短すぎて、情報量が少ないことが予想されます。
Maximum chunk length;500でかつ条件aのTopK=3だと明らかに情報量が少なく、遺伝子発現等の情報がかなり落ちていますが、TopK5-10であれば十分な回答だと思います。
TopK10にするともう少し、情報量が増えるかと思いましたが、結果はあまり変わりませんでした。
しかし、複数の論文に対してKnowledgeを作成した場合、TopKが多い方が、様々な情報が入ってきていいかもしれません。(試していません。)
害にはならなさそうなので、TopKは増やしておいてもいいかもしれません。
Maximum chunk length;1000だと、TopK3が一番情報量が多いですが、
TopK=5の時はなぜかやる気を無くして、情報量が短く回答してきたり
TopK=10の時は関係ない情報を回答してきたりしています。
そのため、チャンクが長すぎると良くない、というのがわかります。
まずはAutomaticで満足するなら、それでよし
CustomするならMaximum chunk lengthは400-600くらいが良いのではないかと思われます。
また、中程度のチャンクの長さであれば、TopK(拾ってくるチャンクの数)が多くても特にノイズが増えたりしないようなので、様々な情報源を利用する場合はTopKはMaxの10でいい可能性が高いと考えました。
Maximum chunk lengthは400-600
Retrieval setting ; ハイブリッド検索、 TopK 10
というのが、今回の検証結果でした。
参考になれば幸いです。
Difyの操作記事一覧に戻る方はこちら
![](https://hilablife.blog/wp-content/uploads/2024/05/IMG_1146-160x160.jpg)