LlamaIndexを触ってみる (Part 1)

現職では、RAG(Retrieval-Augmented Generation)を使ったアプリケーションを構築しています。 RAGを実装するにあたっての有用なライブラリとしてLlamaIndexというものがあります。 https://docs.llamaindex.ai/en/stable/index.html このドキュメントを読んでみて、今まで自分になかった気づきを軽くまとめておきます。ただの走り書きなのでめちゃ読みにくいです。 気づきたち エンジンは、データへの自然言語アクセスを提供します。例えば: クエリ エンジンは、知識を強化した出力のための強力な検索インターフェイスです。 チャット エンジンは、データとのマルチメッセージの「往復」対話のための会話型インターフェイスです。 「エンジン」という単位がある。 https://docs.llamaindex.ai/en/stable/getting_started/concepts.html#stages-within-rag 読み込み: これは、データが保存されている場所 (テキスト ファイル、PDF、別の Web サイト、データベース、API など) からパイプラインにデータを取得することを指します。 LlamaHub では、数百ものコネクタから選択できます。 RAGのためにデータを読み込むコネクタがLlamaHubに数百ほど公開されている。 https://docs.llamaindex.ai/en/stable/getting_started/concepts.html#querying-stage ルーター: ルーターは、ナレッジ ベースから関連するコンテキストを取得するためにどの取得者を使用するかを決定します。より具体的には、 RouterRetriever クラスは、クエリを実行する 1 つまたは複数の候補取得者を選択する役割を果たします。セレクターを使用して、各候補者のメタデータとクエリに基づいて最適なオプションを選択します。 ノード ポストプロセッサ: ノード ポストプロセッサは、取得したノードのセットを受け取り、それらに変換、フィルタリング、または再ランキング ロジックを適用します。 レスポンス シンセサイザー: 応答シンセサイザーは、ユーザー クエリと取得されたテキスト チャンクの指定されたセットを使用して、LLM からの応答を生成します。 RAGのクエリする段階においては、ただクエリする以外にもルーティングする、受け取ったノードを加工する、ノードを使ってレスポンスを生成する、という概念が実装されている。 https://docs.llamaindex.ai/en/stable/getting_started/concepts.html#putting-it-all-together クエリ エンジン: クエリ エンジンは、データに対して質問できるようにするエンドツーエンドのパイプラインです。自然言語クエリを受け取り、取得して LLM に渡した参照コンテキストとともに応答を返します。 チャット エンジン: チャット エンジンは、データと会話するためのエンドツーエンドのパイプラインです (1 回の質疑応答ではなく、複数回のやり取り)。 エージェント: エージェントは、一連のツールを介して世界と対話する、LLM を利用した自動化された意思決定者です。エージェントは、所定のタスクを完了するために任意の数のステップを実行し、事前に決められたステップに従うのではなく、最適な行動方針を動的に決定できます。これにより、より複雑なタスクに取り組むための柔軟性がさらに高まります RAGアプリケーションは大きくこの3つに別れる。 https://docs.llamaindex.ai/en/stable/use_cases/extraction.html LLM は、大量の非構造化データを取り込んで構造化形式で返すことができ、LlamaIndex はこれを簡単にするように設定されています。 LlamaIndex を使用すると、LLM に自然言語を読み取り、名前、日付、住所、数値などの意味的に重要な詳細を識別させ、ソース形式に関係なく、それらを一貫した構造化形式で返すことができます。 これは、チャット ログや会話トランスクリプトなどの非構造化ソース資料がある場合に特に便利です。 構造化データを取得したら、それをデータベースに送信したり、コードで構造化出力を解析してワークフローを自動化したりできます。 非構造化データにおける名前、日付、住所、数値などの意味的に重要な詳細を構造化形式で抽出するユースケースも紹介されている。 ...

December 17, 2023 · 3 min