皆さん、おはようございます!私はTowards AIの共同設立者兼CTOのルイ・フランソワです。今日は、Wangら(2024)の素晴らしい研究のおかげで、現在利用可能なおそらく最高のRAG(Retrieval-Augmented Generation)スタックに飛び込んでみようと思います。この研究は、最適な ラグ このシステムは貴重な洞察を与えてくれる。
では、何が本当に一流のRAGシステムを作るのか?もちろん、その構成要素である!この最高のコンポーネントとその働きを見て、あなたも一流のRAGシステムを構築し、最後にはマルチモーダルな卵を手に入れられるようにしよう。
お問い合わせ区分
クエリの分類
まずは お問い合わせ区分 スタート。すべてのクエリを検索する必要はない。大きな言語モデルがすでに答えを知っていることもあるからだ。例えば、"リオネル・メッシは誰ですか?"と尋ねると、大きな言語モデルはすでに答えを知っています。と尋ねると、大きな言語モデルはすでに答えを知っているので、検索する必要はありません!
Wangらは、クエリが十分な情報を提供するか、検索する必要があるかを判断するために15のタスクカテゴリを作成した。彼らはタスクを区別するために2値分類器を訓練し、「十分な」タスクは検索する必要がなく、「不十分な」タスクは検索する必要があるとラベル付けした。この画像において、黄色は検索が不要であることを意味し、赤色はいくつかの文書を検索する必要があることを意味する!
チャンキング
チャンキング
次ページ チャンキング.ここでの課題は、データに最適なチャンクサイズを見つけることだ。長すぎますか?不必要なノイズとコストが増える。短すぎますか?文脈情報を見逃すことになる。
Wangらは、チャンクサイズが256から512の間であることを発見した。 トークン 間が最も効果的です。しかし、データの種類によって異なることをお忘れなく!ヒント スモール2ビッグ(検索時には小さなチャンクから始め、生成時には大きなチャンクを使う)、あるいは スライディングウィンドウ チャンク間でトークンをオーバーラップさせる。
メタデータとハイブリッド検索
メタデータとハイブリッド検索
メタデータを使う!タイトル、キーワード、さらには想定問答を加える。そして ハイブリッド検索これは、(意味的マッチングのための)ベクトル検索と古典的な BM25 キーワード検索で、あなたのシステムは素晴らしいパフォーマンスを発揮する。
HyDE(擬似文書を生成して検索を強化する)はクールでより良い結果をもたらすが、非常に効率が悪い。今のところはハイブリッド検索にこだわってほしい。ハイブリッド検索の方がパフォーマンスのバランスが取れているし、特にプロトタイピングに適している。
モデルの埋め込み
埋め込みモデル
正しい選択 モデルの埋め込み 正しい靴を見つけるようなものだ。テニスをするのにフットボールブーツを履くことはないだろう。 LLM-エンベッダー 性能とサイズのバランスが良い。大きすぎず小さすぎず、ちょうどいい。
彼らはオープンソースモデルしかテストしていないことに注意してください。 コヒーレ とOpenAIのモデルは考慮されていない。そうでなければ、Cohereが最善の策だろう。
ベクトルデータベース
ベクター・データベース
次はデータベースだ。長期的な使用にはミルバス は彼らのベクターデータベースとして選ばれている。オープンソースで信頼性が高く、検索システムをスムーズに動かすための優れた選択肢だ。以下の説明にもリンクを貼っておきます。
クエリー変換
クエリの変換
検索する前に、まず 換算 ユーザーからの問い合わせ!を通してでも クエリ書き換え より明瞭にするため、あるいは クエリの分解 複雑な問題をより小さな問題に分解し、各サブ問題を検索する。 ハイデ このステップは精度を向上させるために非常に重要である。特にHyDEでは、より多くの変換がレイテンシーを増加させることに留意してください。
再配置
再ランキング
さあ、話をしよう。 再配置.ドキュメントを取り出したら、最も関連性の高いドキュメントが一番上に来るようにする必要がある。
この研究では。モノT5 はパフォーマンスと効率の間で最も優れたオプションである。T5モデルを微調整し、クエリとの関連性に基づいて文書を並べ替え、ベストマッチが最初に来るようにする。ランク 最高の総合パフォーマンスだが TILDEv2 最速のスピードだ。ご興味のある方は、同紙に詳細が掲載されているのでご覧いただきたい。
ドキュメントのリパッケージ
ドキュメントの再梱包
再注文の後、次のことを行う必要がある。 ドキュメントのリパッケージ Wangらは、"逆 "の方法、つまり関連性の高い順に文書を並べる方法を推奨している。 劉他(2024年) 関連する情報を最初または最後に配置するこのアプローチは、パフォーマンスを向上させることがわかった。リパッケージングは、単に関連性の理論的な順序に基づくのではなく、情報が提供される順序をモデルがよりよく理解できるように、並べ替え処理後に大規模言語モデルに情報を提示する方法を最適化する。
概要
要約
そして、大きな言語モデルを呼び出す前に 概要 冗長な情報を削除する。大規模な言語モデルに送信される長いプロンプトは、コストがかかり、不必要な場合が多い。要約することで、冗長な情報や不必要な情報を取り除き、コストを削減することができる。
のようなものが使える。 レコンプ このようなツールは、有用な文章を選択する抽出的圧縮や、複数の文書から情報を統合する生成的圧縮を行う。しかし、スピードを優先するのであれば、このステップをスキップすることも検討できるだろう。
微調整ジェネレーター
ジェネレーターの微調整
最後に、あなたが「"team "のために使っている名前のリスト」を提供することは適切でしょうか? 生成 ビッグ・ランゲージ・モデルの微調整?そうすべきです!相関のある文書データとランダムな文書データを混ぜて微調整することで、ジェネレーターの無関係な情報を扱う能力が向上します。これにより、モデルはよりロバストになり、全体としてより良い回答を提供できるようになる。正確な比率は論文に記載されていないが、結果ははっきりしている!もちろん、それはあなたの特定のドメインにも依存する。
多峰性
マルチモーダリティ
画像を処理するとき?実現 多峰性 検索。テキストから画像へのタスクでは、類似画像をデータベースに照会することで、処理を高速化できる。画像からテキストへのタスクでは、類似画像を照合することで、正確で既存の記述を検索することができる。重要なのは、実際に検証された情報に根ざしていることである。
評決を下す
要するに、Wangらによるこの論文は、効率的なRAGシステムを構築するための確かな青写真を提供してくれている。しかし、これは1つの論文に過ぎず、RAGパイプラインの全ての側面を網羅しているわけではないことに留意してほしい。例えば、この論文では、より多くの可能性を解き放つ可能性のある、リトリーバーとジェネレーターの共同トレーニングについて探求していない。また、この論文では、コストの問題から調査されていないチャンキング技術については掘り下げていないが、これは探求する価値のある方向性である。
詳しくは論文全文をチェックされることを強くお勧めする。
いつも読んでくれてありがとう。もしこの内訳が役に立ったり、何かコメントがあれば、コメント欄で教えてほしい!
書誌
本番用LLMの構築。 https://amzn.to/4bqYU9b
Wangら、2024年 (論文参照)。 https://arxiv.org/abs/2407.01219
LLM-エンベッダー (埋め込みモデル)。 https://github.com/FlagOpen/FlagEmbedding/tree/master/FlagEmbedding/llm_embedder
ミルバス (ベクトルデータベース)。 https://milvus.io/
劉ら、2024年 (ドキュメントのリパッケージ)。 https://arxiv.org/abs/2307.03172
レコンプ (要約ツール)。 https://github.com/carriex/recomp