RAG API (ファイルとのチャット)
LangchainとFastAPIを使用したドキュメントのインデックス作成および検索のためのRetrieval-Augmented Generation (RAG) API。このAPIはLibreChatと統合され、ユーザーがアップロードしたファイルに基づいたコンテキストアウェアな応答を提供します。
RAG (Retrieval-Augmented Generation) APIは、ユーザーがアップロードしたファイルに基づいてコンテキストを認識した回答を提供するために、LibreChatと統合される強力なツールです。
LangChain、PostgresQL + PGVector、およびPython FastAPIを活用して関連ドキュメントのインデックス作成と取得を行い、会話体験を向上させます。
詳細については、こちらで提供されている設定ガイドを参照してください: RAG API Configuration
現在、この機能は Agents を通じて利用可能なほか、Custom Endpoints、OpenAI、Azure OpenAI、Anthropic、および Google を通じても利用可能です。
OpenAI Assistantsは、「Retrieval」機能を通じて独自のRAG実装を備えています。詳細についてはこちらをご覧ください。
OpenAIはファイルストレージと「Retrieval」の使用の両方に対して課金を行うため、Assistants APIでRAG APIの使用を実装することは依然として有益であり、今後のアップデートで導入される予定です。
RAGについてまだ混乱していますか? 以下のセクション をお読みください。一般的な概念をより詳細に説明しており、役立つ動画へのリンクも掲載しています。
RAGとは?
RAG(Retrieval-Augmented Generation:検索拡張生成)は、大規模言語モデル(LLM)が生成する回答の品質と正確性を向上させるために設計されたAIフレームワークです。これは、モデルが持つ内部的な情報表現を補完し、外部の知識ソースに基づいてLLMに根拠を与えることで実現されます。
機能
- ドキュメントのインデックス作成: RAG APIはユーザーがアップロードしたファイルをインデックス化し、効率的な検索のために埋め込み(embeddings)を作成します。
- Semantic Search: ユーザーの入力に基づいて最も関連性の高い情報を見つけるために、インデックス化されたドキュメントに対してセマンティック検索を実行します。
- コンテキストを認識した応答: 取得した情報をユーザーのプロンプトに補足することで、APIはLibreChatがより正確でコンテキストに関連性の高い応答を生成できるようにします。
- 非同期処理: APIはパフォーマンスとスケーラビリティを向上させるために非同期操作をサポートしています。
- 柔軟な設定: チャンクサイズ、オーバーラップ、埋め込みモデルなど、さまざまなパラメータのカスタマイズが可能です。
RAGの主な利点
- 最新かつ信頼性の高い事実へのアクセス: RAGは、外部のナレッジベースから関連する事実を取得することで、LLMが最新かつ信頼性の高い情報に確実にアクセスできるようにします。
- 透明性と信頼性: ユーザーはモデルのソースにアクセスできるため、生成された回答の正確性を検証し、システムに対する信頼を構築することができます。
- データ漏洩とハルシネーションの低減: LLMを外部の検証可能な事実に基づかせることで、RAGはモデルが機密データを漏洩したり、不正確または誤解を招く情報を生成したりする可能性を低減します。
- 計算コストと財務コストの削減: RAGはモデルのパラメータを継続的にトレーニングや更新する必要性を減らすため、エンタープライズ環境でLLMを活用したチャットボットを運用する際の計算コストと財務コストを削減できる可能性があります。
RAGの仕組み
RAGは、検索(retrieval)とコンテンツ生成(content generation)という2つの主要なフェーズで構成されています。
- Retrieval Phase(検索フェーズ): アルゴリズムが、ユーザーのプロンプトや質問に関連する情報の断片を外部のナレッジベースから検索・取得します。オープンドメインのコンシューマー向け設定では、これらの事実はインターネット上のインデックス化されたドキュメントから取得されることがあります。クローズドメインのエンタープライズ向け設定では、セキュリティと信頼性を高めるために、通常はより限定されたソースセットが使用されます。
- 生成フェーズ: 取得された外部知識がユーザーのプロンプトに付加され、LLMに渡されます。その後、LLMは拡張されたプロンプトと学習データの内部表現を活用し、ユーザー向けに調整された魅力的な回答を合成します。この回答は、ソースへのリンクと共にチャットボットに渡すことができます。
課題と現在進行中の研究
RAGは現在、LLMを最新の検証可能な情報に基づかせ、継続的な再学習や更新のコストを削減するための最もよく知られたツールの一つですが、完璧ではありません。いくつかの課題には以下が含まれます:
- 回答不可能な質問の認識: LLMは、利用可能な情報に基づいて回答できない質問を認識するように明示的にトレーニングされる必要があります。これには、回答可能な質問と回答不可能な質問の数千の例を用いたファインチューニングが必要になる場合があります。
- 検索と生成の改善: 現在進行中の研究では、RAGプロセスの両端における革新に焦点が当てられています。LLMに供給するために最も関連性の高い情報を検索する精度の向上と、LLMからより豊かな回答を得るための情報の構造化の最適化です。
要約すると、RAGは外部の検証可能な知識に基づかせることでLLMの能力を強化する強力なフレームワークです。これは、継続的なモデル再学習に伴うコストを削減しつつ、より正確で最新かつ信頼性の高い回答を保証するのに役立ちます。この分野の研究が進むにつれて、LLMを活用した対話型AIシステムの品質と効率がさらに向上することが期待されます。
RAGに関するより詳細な説明については、IBMがYouTubeで公開しているこちらの有益な動画をご覧ください:
結論
RAG APIはLibreChatの強力な追加機能であり、ユーザーがアップロードしたファイルに基づいたコンテキストアウェアな応答を可能にします。LangchainとFastAPIを活用することで、効率的なドキュメントのインデックス作成、検索、および生成機能を提供します。柔軟な構成オプションとシームレスな統合により、RAG APIはLibreChatにおける会話体験を向上させます。
RAG APIに関する詳細情報(API endpoint、リクエスト/レスポンス形式、高度な設定など)については、公式のRAG APIドキュメントを参照してください。
このガイドはいかがでしたか?