この記事の目的は、使用可能なRAG(検索補完生成)アルゴリズムと技術の概要と説明を行うことです。 実装の詳細には触れず、参照し、豊富なドキュメントやチュートリアルを利用してください。
RAGは、LLM(言語モデル)に情報を提供し、生成された回答を裏付けるために、いくつかのデータソースから抽出された情報を提供するものです。 基本的にRAGは検索+LLMプロンプトです。モデルに対して検索アルゴリズムで見つかった情報を文脈として与え、クエリに対して回答するようにモデルに依頼します。
2023年において、RAGはLLMベースのシステムの中で最も人気のあるアーキテクチャです。 ウェブ検索エンジンとLLMを組み合わせた質問応答サービスから、数百ものデータと対話するアプリまで、RAGに基づく製品は多数存在します。
ベクトル検索の領域もその期待によって沸き立っています。2019年には埋め込みベースの検索エンジンがfaissで作られました。chroma、weavaite.io、pineconeなどのベクトルデータベースのスタートアップは、主にfaissやnmslibといった既存のオープンソースの検索インデックスを基にし、入力テキストのための追加ストレージやその他のツールを最近追加しています。
LLMベースのパイプラインやアプリケーションのための2つの最も有名なオープンソースライブラリがあります — LangChainとLlamaIndexです。これらのプロジェクトは2022年10月と11月に立ち上げられ、ChatGPTのローンチに触発され、2023年に大きな支持を得ています。
この記事のRAGパイプラインの開始点は、テキスト文書のコーパスです。コーパス以前の部分は省略し、YoutubeからNotionまであらゆる想像可能なソースに接続する素晴らしいオープンソースデータローダーに任せます。
では、高度なRAGの概要について詳しく見てみましょう。以下のスキームは、関連するコアステップとアルゴリズムを示しています。一部の論理ループや複雑な多段階のエージェント行動は、スキームの可読性を保つために省略されています。
スキーム上の緑色の要素は、さらに詳しく説明されるRAGのコア技術です。青色の要素は、テキストです。すべての高度なRAGのアイデアを単一のスキーム上で視覚化することは容易ではありません。たとえば、さまざまなコンテキスト拡大のアプローチは省略されています。これらについては、途中でさらに詳しく見ていきます。