LlamaIndexとLangChainは、検索拡張生成(RAG)システムの作成と実装を容易にする2つのプラットフォームです。LlamaIndexは合理化された検索と取得のために構築されている一方、LangChainは多数のユースケースをサポートする多目的なモジュール式プラットフォームです。
RAGは、ドメイン固有の知識を備えた大規模言語モデル(LLM)を装備し、それらによって駆動されるチャットボットやその他の人工知能(AI)アプリケーションの精度と有用性を高めます。LlamaIndexとLangChainのユースケースは重複していますが、RAGシステム作成のタスクに対するアプローチはそれぞれ異なります。
LlamaIndexは、テキストベースのデータ・ソースからのインデックス作成、データ取り込み、情報の取得に重点を置いているため、よりシンプルなワークフローや簡単なAIアプリケーションに最適です。一方、LangChainのモジュール式フレームワークは、幅広い自然言語処理(NLP)およびエージェント型AIアプリケーションの構築に優れています。
RAGは、LLMアプリケーションを独自のデータ・ソースに接続する技術です。RAGを利用したデータ取得により、機械学習(ML)モデルの知識ベースがトレーニング用データを超えて拡張されます。RAGは、組織の内部データなど、本来は不足している領域固有の知識に、生成AIモデルがアクセスできるようにします。
RAGシステムは、指定されたデータ・ソースから関連情報をリアルタイムで取得し、LLMの生成機能を拡張して、より適切な回答を導き出すことで、ユーザーからの問い合わせに応答します。RAGを搭載したモデルは、コンテキストの関連性が高く、より正確な回答を生成します。
時間とコストの制約により、長時間のファイン・チューニング・プロセスを実行できない場合、RAGは効率的で便利な代替手段となります。ただし、2つの手法を組み合わせると、さらにパフォーマンスが上がります。
LlamaIndexは、次のような主要コンポーネントのコア・セットを中心に構成されています。
データ取り込みとLlamaHub
データ・インデックス
照会と取得
後処理
応答合成
データ取り込みは、LlamaIndex RAGパイプラインの最初の段階です。LlamaIndexでは、この段階はデータ・ロードと呼ばれ、データ・ローダーまたはデータ・コネクターを使用してデータを取得および処理します。LlamaIndexは160種類を超えるデータ形式をカバーし、構造化データ、半構造化データ、非構造化データなどのデータ構造をサポートします。
単一のデータ・ソースでカバーされていない検索タスクにLlamaIndexを使用する場合、ユーザーはLlamaHubを利用できます。LlamaHubは、さまざまな特定のニーズに対応できる多目的なオープンソース・データ・ローダー・プールです。LlamaHubユーザーは、API、SQL Database、さらにはGoogle Workspacesなどの複数のデータソースを1つのワークフローに統合できます。一部のLlamaHubコネクターは音声ファイルや動画ファイルにも対応しています。
すべてのデータ・ソースが接続された後、LlamaIndexワークフローの次のステップはデータのインデックス作成です。つまり、すべてのデータを理解し、将来使用するときのために整理します。LlamaIndexは埋め込みを使用して、ユーザーが指定したデータを検索可能なベクトルベースのデータ・インデックスに変換します。埋め込みモデルは、データを多次元のベクトル・データベース内にプロットされた数学的なベクトルに変換するAIアルゴリズムです。
埋め込みプロセスは、データ・ポイント間の意味的関係を把握し、コンテキスト認識型検索を強化します。ユーザーの照会も埋め込みデータに変換されます。クエリー・エンジンは、照会内容と意味が類似するデータ・ポイントを識別し、関連情報の検索を強化できます。
LlamaIndexは他のインデックスからインデックスを作成し、既存のインデックスを使用して複雑なワークフローや照会を組み込むことができます。個別のベクトル・ストアを1つずつ問い合わせるのではなく、結合されたインデックスを作成して、照会を可能な限り効率的にすることができます。
照会が行われると、ユーザーからの問い合わせ埋め込みデータに変換されます。クエリー・エンジンは、照会内容と意味が類似するデータ・ポイントを識別し、関連情報の検索を支援します。LlamaIndexは、意味的類似性の原則を使用して、問い合わせ内容に応じてベクトル・ストアから最も関連性の高いデータを取得します。
LlamaIndexの照会変換機能は、複雑な問い合わせ内容を簡素化したり、より管理しやすいものに分割したりします。照会データの変換は、RAGシステムが最も関連性の高いデータを見つけて最適な応答を生成する可能性を高める最適化手法です。
関連データが取得された後、その構成要素であるセグメント、つまりノードを再ランク付けしてフィルタリングし、今後の応答をさらに強化することができます。ノード後処理により、取得後にさらに構造化や変換を必要とするデータ・ソースを処理できるようになります。
取得されたデータは問い合わせ内容と元のユーザー・プロンプトと結合され、接続されたLLMに渡されることで、応答が生成されます。
LangChainプラットフォームは、チャットボットやバーチャル・アシスタントなどのエージェント型AIアプリケーションのプロトタイピングと作成を効率化するように設計された独自の機能のコア・スイートを中心に構成されています。
モデル
プロンプト・テンプレート
インデックス
メモリー
ツール
チェーン
エージェント
LangSmithとLangServe
LangChainの標準化されたユーザー・インターフェースにより、多数のLLMとの対話と操作のプロセスが簡素化されます。モデルへのアクセスは通常、プロバイダーのAPIを通じて行われますが、プロバイダーによってはユーザーに費用がかかる場合があります。
チャットベースのモデルを使用する場合、LangChainは4つのメッセージ分類を使用してモデルとの間の通信を明確にします。HumanMessageは人間が作成したメッセージを表し、AIMessageはAIモデルからのメッセージを示します。SystemMessageはモデルへの教育を行うためのコンテンツとして使用されますが、ChatMessageはロールを設定するためのよりニッチなオプションです。
LangChainは、LLMとの通信プロセスを簡素化するためのさまざまなプロンプト・テンプレートを提供します。ユーザーは必要に応じてプロンプトをカスタマイズし、アプリケーション間で再利用できます。LangChainのプロンプト・テンプレートは、チェーン内のLLMからコンテキスト認識出力を生成するように設計されています。
他のRAGプラットフォームと同様に、LangChainはLLMを外部データ・ソースに接続します。この目標は、ベクトルベースのインデックスを作成することで達成されます。LangChainのドキュメント・ローダー・ライブラリーは、Google Workspaces、Figmaなどのオンライン・コラボレーション・ツール、YouTube動画などのWebコンテンツ、データベースといった外部ソースからデータを取得できます。
LangChainは、このデータを変換してベクトル・ストアにロードするための25種類を超える埋め込み方法をサポートしています。ユーザーはドキュメントを「チャンク」に分割して、ベクトル・データベースの照会をさらに効率的に実行できます。
LangChainの際立った機能の1つは、そのメモリー機能です。LangChainを使用すると、LLMは以前のやり取りを参照し、そのコンテキストを現在の対話や将来の対話に追加できます。LangChainでメモリ管理を実装する場合、ユーザーは対話全体を保持するか、過去の対話を要約するか、最新のやり取りの選択した数を保持するかを選択できます。
LangChainのツールは、モデルがチェーン内のタスクを実行するために使用できる検索エンジンやさまざまなAPIなどの機能です。例えば、ワークフローに天気予測を含める必要があるモデルは、気象機関が提供するサービスに接続できます。
チェーンはLLMを他のツールに接続し、LangChain内での自律的なワークフローを可能にします。LLMとツールがフローチャート内のオブジェクトとすれば、チェーンはそれらをリンクする矢印と線にあたります。ユーザーはワークフロー内でチェーンを組み合わせることができ、各チェーンには異なるプロンプト・テンプレート、モデル、ツール、パラメーターが含まれる可能性があります。
AIエージェントは、現在の状況と受信したインプットに応じて行動方針を決定する自律モデルです。チャットボットとやり取りするときに経験するように、プロセスの各段階で人間がプロンプトを出すのではなく、エージェントはワークフロー全体を自律的に実行するように努めます。ユーザーは、LangChainの既成エージェントをそのままデプロイすることも、必要に応じてカスタマイズすることもできます。
LangSmithはLangChainの評価版スイートであり、LangServeはデプロイメントをカバーします。LangSmithは、ユーザーがアプリケーションを評価するのに役立つさまざまなテストおよび最適化機能を提供します。ユーザーは、テスト用データセットを手動で作成したり、ユーザー・フィードバックからコンパイルしたり、LLMを使用して生成したりできます。
評価後、ユーザーはチェーンをAPIに変換するLangServeを通じてアプリケーションをデプロイできます。LangSmithをLangServeと連携すると、時間の経過に伴う監視が可能になり、説明可能なAI標準に必須の準拠が可能になります。
LlamaIndexとLangChainはどちらもユーザーがRAG対応のLLMアプリケーションを構築できるようにしますが、プロジェクトに対して2つの異なるアプローチを提供します。LlamaIndexはデータベースに照会し、関連情報を取得するときにその成果を発揮する一方で、LangChainでは、その幅広い柔軟性により、特にモデルとツールを複雑なワークフローに連結する場合に、より多様なユースケースが可能になります。
LlamaIndexは、開発作業が軽い、簡単なRAGアプリケーションに最適です。意味的関連性に基づいた効率的で正確なデータ検索に優れています。そのメリトは次のとおりです。
検索および取得アプリケーション:LlamaIndexは、効率的なデータ・ストレージと、意味的類似性に基づくデータ取得に重点を置いているため、合理化されたRAGアプリケーションに最適です。ユースケースには、内部組織参照システムや知識管理が含まれます。
速度と精度:高度な検索アルゴリズムを備えたLlamaIndexは、高い精度で効率的なデータ取得ができるように最適化されています。
最小限で合理化されたアプリケーション開発:LlamaIndexの厳密な焦点により、効率的なアプリケーション作成プロセスが可能です。ユーザーは、最小限の時間でRAGアプリケーションを起動して実行できます。
階層型ドキュメント:LlamaIndexは、ドキュメント階層が最も重要である企業内でのナレッジ管理システムの導入など、テキストを多用するプロジェクトに適しています。
LangChainは多目的使用、カスタマイズ性、汎用性に重点を置いており、より幅広いユースケースを実現します。ユーザーは、プロジェクトのニーズに合わせて、単一のユーザー・インターフェースから複数のモデルとツールを連結できます。
LangChainのメリットは次のとおりです。
多様なユースケース:LangChainはLLM、ツール、統合のサンドボックスであり、ユーザーはそれらを連鎖させて特定のプロジェクト要件に適合させることができます。
マルチモーダル・データ・ソース:LlamaIndexは画像とテキストをサポートできますが、LangChainのメディア・サポートはさらに多用途です。LangChainで作成されたアプリケーションは、画像やPDFに加えて、オンライン上の動画やAPIからデータを読み込むことができます。
きめ細かなコントロール:LangChainのアプリケーション作成に対する段階的なアプローチにより、ユーザーはプロセスの各チェーンのあらゆるステップで機能を最大限にコントロールできます。
コンテキストの保持:高度なメモリー管理機能により、LangChainで作成されたアプリケーションは以前のやり取りを参照し、より長い対話でも正確性を維持できます。
複雑な問い合わせ内容とデータ構造:LlamaIndexは意味的類似性を考慮して開発されていますが、LangChainでは、キーワード検索を追加するなど、ユーザーが検索方法を組み合わせることができます。また、モジュール式インターフェース、マルチモーダル・サポート、多数の統合により、複雑なデータ構造をより効率的に処理できます。
watsonxプラットフォームにある基盤モデルのIBMライブラリーを探索し、ビジネスに合わせて自信を持って生成AIを拡張します。
業界をリードするIBMのAI専門知識とソリューション製品群を使用すれば、ビジネスにAIを活用できます。
AIの導入で重要なワークフローと業務を再構築し、エクスペリエンス、リアルタイムの意思決定とビジネス価値を最大化します。