Closed12
LangChainにおけるテストや評価
LangChainで自前データをvector化してQAチャットボットを作る、みたいなのはかなり一般的になっているけど、ではそのチャットボットがいかに正確かつ質問のコンテキストにマッチした回答をしたか?というテストや評価はとても難しいと感じる。
LangChain公式ドキュメントにあるEvaluationで記載されている内容について確認してみる。
評価における課題
大きな課題は以下。
- テストデータの欠如
- 評価指標の欠如
それぞれについて見ていく。
1. (テスト)データの欠如
- 一般的な機械学習では大規模なデータが事前に必要(かつこれをテストデータとしても使える)
- それに対して、LLMの場合、few-shotもしくはzero-shotとして学習されているのが一般的であり、使用時には大規模なデータが必要ない。
2. 評価指標の欠如
- 一般的なユースケースとして文章生成などがあるが、分類や数値予測に比べると複雑で評価がしにくい。
解決方法
LangChainではこれらの課題に対して、完全ではないものの、解決に向けた取り組みの初期段階。
1. (テスト)データの欠如
- LangChainDatasets(https://huggingface.co/LangChainDatasets)
- オープンソースのテスト用データセット。誰でも利用および貢献可能。
- 現時点で10のデータセットがある(2023/051/8時点)
- QAGenerationChain(https://python.langchain.com/en/latest/use_cases/evaluation/qa_generation.html)
- 文書から質問・回答のペアを生成しやすくするためのChain
2. 評価指標の欠如
- 目視でChain/Agentの動きを見る
- Tracing(https://python.langchain.com/en/latest/additional_resources/tracing.html)
- ChainやAgentの動きを可視化したUI
- 試しました → https://zenn.dev/kun432/scraps/5a3ccf54be2e13
- LLMそのものに出力を評価させる
- この目的のPromptやChainがLangChainでは利用可能
- Tracing(https://python.langchain.com/en/latest/additional_resources/tracing.html)
例やツールなど
いくつかの例や評価のためのツールが載っているので色々参考に。
ツール
以下のようなツールが用意されている。順に見ていく。たぶん別の記事に書くと思う。
- QAGenerationChain
- 評価用QAデータの生成
- QAEvalChain / ContextQAEvalChain
- 評価用QAデータとLLM生成結果の比較
- LangChainDatasets / Hugging Face Datasets
- 評価用データセット
- Benchmark Template
- 評価結果を共有するためのnotebookテンプレート
LangChain公式ではないがこういうものも
- Auto-evaluator
あとEvaluationのトピックからは少し外れるが以下のようなものもある。
- Tracing
- Model Comparison
QAGenerationChain
QAEvalChain / ContextQAEvalChain
LangChainDatasets / Hugging Face Datasets
Tracing
Model Comparison
Auto-evaluator
いろいろあってうまく行かず・・・
LLMからの回答はブラックボックスなところがあるので、実際に使わてる事例は増えてきてはいるものの、テストや評価というところはまだまだ情報も少なければ、ツールも整備されてないと感じる。この手の色々な手法をうまく活用していきたい。
他の評価ツールとのIntegrationなんかもいろいろ出てきた。
評価テストとは異なるけど、Streamlitで書かれたユーザーフィードバックシステム。
このスクラップは2023/05/23にクローズされました