AIドリフト:RAGにも起きうるAIシステムの不審な挙動を原因と対策方法 | by Alden Do Rosario | Jan, 2024 | Towards AI
Clip source: AI Drift In Retrieval Augmented Generation — AND — How To Control It! | by Alden Do Rosario | Jan, 2024 | Towards AI
AI Drift と呼ばれるキーワードがよく目につく様になりました。
ChatGPTを日頃使用していて、質問に対する答えが急におかしくなったり、挙動が怪しかったり、ハルシネーションとは少し違う、変な動きを見せる事に気づかれるケースを体験してる方もいると思いますが、それです。
ChatGPTはまだ巨大なLLMを世界中のユーザと共有しているので何か見えないところで色々と変化や動きがあるのでは、と察してついつい見過ごしてしまいがちですが、これのAI Driftの現象、ローカルなLLMやRAGででも発生している、という事象が多く報告されてます。
この記事はその状況や、その原因の分析、そして対策方法について解説してます。
ポイントは、ローカルなLLMは可動部分(具体的にはデータの時系列的な変化)が多い、という事が要因で、それを日頃から監視して、メンテナンスをする事が必要だ、という事を述べています。
AIシステムは、他のデータベースシステムと同様に、データ(コンテンツ)管理が必要だ、という事で、次の様な管理が推奨されています。
コンテンツのドリフトのコントロール:
CMS(コンテンツ管理システム)や知識変更管理を行うことで、コンテンツのドリフトを制御します。
LLMのドリフトのコントロール:
新しいAPIに即座にアップグレードしないことで、LLMのドリフトを制御します。
RAGパイプラインアルゴリズムのドリフトのコントロール:
内部評価指標を使用して、RAGパイプラインの効果性や重要な要因を継続的に測定します。
AI Drift In Retrieval Augmented Generation — AND — How To Control It!
Alden Do Rosario: Published in: Towards AI
1/5/2024
今週、私はお客様から奇妙なメールを受け取りました。
「この数日間、AIの応答品質が低下していることに気づきました。どうしてこんなことが起こるのでしょうか?数週間前まではすべて順調でした。しかし今、以前と同じ質問をしても悪い応答が返ってきます。」
彼の言うことを説明すると:
彼は、RAGパイプラインからの応答が、過去数週間にわたってドリフトしていたことを示唆しています。
言い換えれば、数日前まで問題ありませんでしたが、今では徐々に悪化し始めています。
定義上、RAGの良い点の一つは、予測システムなどの他のAIシステムと比較して、AI応答がかなり安定していることで、こういう現象については調査の必要を感じました。
AIドリフトとは何ですか?
IBMの定義によると、AIドリフトは、AI応答の性能が時間とともに徐々に低下する現象です。
モデルドリフトは、データの統計的特性(分布)が時間とともに変化する機械学習の現象です。このシフトは精度の低下、モデル性能の劣化、予期しない結果につながる可能性があります。
歴史的に、これはECシステムのような予測AIのシステムなどではよく知られている現象です。
IBMの例は、予測AIが1つのデータセットでトレーニングされているケースについて語っています。そして、それを本番環境にデプロイすると、AIはまったく異なる一連の信号を解釈して、時間が経つにつれてそのデータから学習し、ドリフトし始めます。
IBMの予測AIドリフトの例:今まで学習したことのないデータに遭遇すると、予測できない回答を出すケース。
例えば、あなたの予測AIが男性のみに対してトレーニングされていて、時間が経つにつれて本番環境で展開されると、だんだんと女性の利用者が増えてきた、としましょう。
使用していく過程で、予測行動は大幅に異なるものになります。なぜなら、男性の主観と女性の主観が異なるため、予測AIはその違いを区別せずに対応し始めるからです。
RAGにおけるAIドリフトとは何ですか?
RAGでは、本番環境でのランタイム機械学習は発生しない事が大きなポイントです。それは、あなただけの固定的な知識をベースに、LLMへの応答生成で与えられるだけです。
インフォグラフィック:RAGパイプラインにおける3つのAIドリフト — そしてそれを制御する方法
では、なぜRAGパイプラインにAIドリフトが発生するのでしょうか?
この質問の核心に迫るために、今週の不満を持っていた顧客を含む、AIドリフトの3つの主要な原因を見てみましょう。
原因№1:コンテンツのドリフト
不満を持っていた顧客の場合、彼は継続的に自分の知識ベースにコンテンツを追加/削除をしていました。
このコンテンツはベクトルデータベース(例:Pinecone)に追加され、応答の生成に使用されます。
したがって、彼のコンテンツとベクトルデータベースは、追加と削除により日々劇的に変化しました。
その結果、彼の応答は週の始めにあったものからドリフトし始めました。
これを詳しく調べたところ、それが最大の原因であることがわかりました。それが特定され、彼が自分のコンテンツを修正すると、彼の回答は再び優れたものになり、彼は不満を持っていた顧客から満足している顧客に変わりました。
コンテンツドリフトを制御するには?
コンテンツドリフトを制御する方法は、従来のCMS(コンテンツ管理システム)や知識変更管理と変わりません。
AIシステムのコンテンツを常に変化するGitHubリポジトリのように考えてください。
あなたのRAGパイプラインが、自分で構築したものであれ、良いRAG SaaSプラットフォームを使用しているものであれ、コンテンツの変更を制御し、関連するCDC(変更データキャプチャ)を可能にする能力を持っていることが必要になります。
実は、これはRAGパイプラインの非常に難しい側面です。そして、もしLangChainのようなものを使って自分自身のRAGパイプラインを構築した場合、知識に関連する管理と変更データキャプチャにはかなりの工夫が必要になります。
次の様なケースが多くみられます:
ウェブサイト上の商品の価格が変更された場合
ウェブサイトのFAQが更新された場合
製品マニュアルの新しいバージョンがあった場合
あなたのRAGチャットボットはこれらの変更に追いついており、あなたの会社の知識ベースと同期していますか?
原因№2:LLMドリフト
ChatGPT APIまたは使用しているその他のLLM APIがアップグレードされるたびに、AIドリフトが発生することが知られてます。
例えば、OpenAIが6月13日にChatGPT-4のバージョンをリリースし、すぐにそれにアップグレードしたとき、AIの応答は突然おかしくなり、英語の質問にスペイン語で回答される、などの状況が発生しました。
例:質問は英語であり、LLMはスペイン語で応答しました。これは数日以内にOpenAIによって修正されました。
これにより、RAGパイプラインに何が問題だったのかを把握するために、さまざまな混乱と3日間の緊急対応が生じました。
OpenAIが新しいバージョンをリリースするたびに、昨年の11月6日のバージョンを含め、APIとLLMは少し乱れることがあり、何らかの理由でOpenAIがリリースを安定させるのに数日かかることがあります。
LLMドリフトを制御するには?
最新のAPIにすぐにアップグレードしない、という事です。
AIドリフトと安定性が重要であれば、OpenAIに最新バージョンの安定化に数日間かけさせましょう。
あなたの本番使用ケースに応じて、数日以内にアップグレードするかどうかを決定できます。または、完全に安定したバージョンが出るのを待つこともできます。
DevOpsの世界ではごく普通の習慣です。通常、本番ワークロードをアップグレードする前に、Debian OSの新規バージョンが安定するのを待ちます。AI APIとモデルのアップグレードも同じです。
例として:GPT-4-turboにアップグレードするために、それがはるかに安価で優れていたにもかかわらず、安定稼働するまでに1ヶ月待ちました。
新しいAPIリリースの全ての影響についてシステムをテストするために待ちました。なぜなら、私たちにとって、ハルシネーション防止、引用、クエリ意図などの機能は、ビジネス顧客にとって非常に重要だからです。
原因№3:RAGパイプラインのアルゴリズム
RAGパイプラインには、AI応答に影響を与える多くの内部アルゴリズムがあります。
最低限、次の様なモジュールが稼働してます:
データの解析するアルゴリズム
データのチャンク化するアルゴリズム
クエリ意図の検出するアルゴリズム
ベクトルデータベース検索に使用されるアルゴリズム
チャンク再ランキングのアルゴリズム
プロンプトエンジニアリングのアルゴリズム
これらはすべて、RAGパイプラインで発生可能な潜在的なドリフトの内部ソースです。
例えば、ベクトルデータベースの問い合わせ方法やチャンクの再ランキングが変更されると、応答に大きな変化が生じることが予想されます。
RAGパイプラインドリフトを制御するには?
RAGパイプラインの効果性や重要な要素を継続的に測定する内部評価指標を持つことによります。
最近では、Tonal、Giskard、RAGAsのように、内部効果性指標を継続的に計算することを目指す多くのフレームワークが登場しています。
これらの指標には、コンテキストの効果性、ハルシネーション防止スコア、回答の関連性、人種バイアススコアなどが含まれる可能性があります。
それから、他のDevOps指標と同様に、これらのRAGパイプライン指標を監視して、時間とともにドリフトしていないかを確認します。
結論
RAGパイプラインにおけるAIドリフトは実際に起きうる問題として対策を講じる必要があります。そのために、パイプラインの安定性と回復力の指標を監視することが重要です。
監視と対策をプロセスとして取り込めば、安定したRAGの運用が可能になります。