【Dify】DifyのためのRAG構築 — Part3; LLMからの回答の精度の検証

これまで、DifyにおけるKnowledge作成、Knowledgeをどのように検索してLLMに投げるのか、についての様々な方法を紹介してきました。

【Dify】DifyのためのRAG構築 — Part1; AutomaticとCustomの検証

【Dify】DifyのためのRAG構築 — Part2; Retrieval settingの検証

今回は、これらの条件をもとに、LLMがどのような応答を示すかを検証していきます。

検証する条件

Knowledgeの作成

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 (長いチャンク)

Retrieval setting

条件a

ハイブリッド検索, TopK 3

条件b

ハイブリッド検索, TopK 5

条件c

ハイブリッド検索, TopK 10

で行いたいと思います。

Agentでのやりとりで検証

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でトライ

条件1-a

条件2-a

条件3-a

条件2-b

条件3-b

条件2-c

条件3-c

結果のまとめ

チャンクが短すぎると回答も短くなる

条件1の場合、ハイブリッド検索のTopKを3, 5, 10としても、いずれの条件であっても、短い簡単な内容しか返ってきませんでした。

つまり、Maximum chunk length;100ではチャンクが短すぎて、情報量が少ないことが予想されます。

チャンクがほどほどの長さでもTopKの数が少ないと情報量としては不十分。でも、5と10では大きな差はなし

Maximum chunk length;500でかつ条件aのTopK=3だと明らかに情報量が少なく、遺伝子発現等の情報がかなり落ちていますが、TopK5-10であれば十分な回答だと思います。

TopK10にするともう少し、情報量が増えるかと思いましたが、結果はあまり変わりませんでした。

しかし、複数の論文に対してKnowledgeを作成した場合、TopKが多い方が、様々な情報が入ってきていいかもしれません。(試していません。)

害にはならなさそうなので、TopKは増やしておいてもいいかもしれません。

チャンクが長いとTopKが少ない方がよい、多いとノイズが増える

Maximum chunk length;1000だと、TopK3が一番情報量が多いですが、

TopK=5の時はなぜかやる気を無くして、情報量が短く回答してきたり

TopK=10の時は関係ない情報を回答してきたりしています。

そのため、チャンクが長すぎると良くない、というのがわかります。

結論

まずはAutomaticで満足するなら、それでよし

CustomするならMaximum chunk lengthは400-600くらいが良いのではないかと思われます。

また、中程度のチャンクの長さであれば、TopK(拾ってくるチャンクの数)が多くても特にノイズが増えたりしないようなので、様々な情報源を利用する場合はTopKはMaxの10でいい可能性が高いと考えました。

結論;RAGのためのパラメータ

Maximum chunk lengthは400-600

Retrieval setting ; ハイブリッド検索、 TopK 10

というのが、今回の検証結果でした。

参考になれば幸いです。

Difyの操作記事一覧に戻る方はこちら

【Dify】Dify操作記事まとめ(随時更新)

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA