検索拡張生成(RAG)は、大規模な言語モデルによって生成されるテキストの品質を改善する方法として、ますます人気が高まっています。マルチモーダルLLMがVougeになったので、マルチモーダルデータにRAGを拡張する時が来ました。
複数のモダリティでデータを検索および取得する機能を追加すると、今日利用可能な最も強力なAIモデルと対話するための強力なツールが得られます。ただし、プロセスに複雑さの新しい層も追加します。
考慮する必要がある考慮事項のいくつかは次のとおりです。
より実用的なレベルでは、ここに私たちが回すことができる基本的なノブのいくつかがあります:
このプロジェクトは、これらの質問などを調査するためのテストベッドです。 Fiftyone、Llamaindex、およびMilvusの3つのオープンソースライブラリを使用して、マルチモーダルデータの操作、さまざまなマルチモーダルRAGテクニックの実験、可能な限り簡単に機能するものを見つけるプロセスを作成します。
また、LlamainDexは頻繁にAPIを更新することに注意してください。これが、LlamainDexのバージョンとその関連パッケージがすべてピン留めされている理由です。
まず、FifToNEをインストールします:
pip install fiftyone次に、FiftoneのCLI構文を使用して、Fiftone Multimodal Ragプラグインをダウンロードしてインストールします。
fiftyone plugins download https://github.com/jacobmarks/fiftyone-multimodal-rag-pluginLlamainDexには、冗長インストールプロセスがあります(少なくともマルチモーダルを構築する場合)。幸いなことに、これ(および他のすべてのインストール依存関係)が次のコマンドで処理されます。
fiftyone plugins requirements @jacobmarks/multimodal_rag --install開始するには、Fiftyoneアプリを起動します。実行することでターミナルからそうすることができます。
fiftyone app launchまたは、次のPythonコードを実行できます。
import fiftyone as fo
session = fo . launch_app ()次に、バックティックキー( ` )を押し、 create_dataset_from_llama_documentsを入力します。 Enterを押して、オペレーターのモーダルを開きます。このオペレーターは、マルチモーダルデータ(画像、テキストファイル、PDFなど)を含むディレクトリを選択し、そこからFiftoneデータセットを作成するUIを提供します。
ディレクトリを選択したら、オペレーターを実行します。 Fiftoneセッションで新しいデータセットが作成されます。テキストファイルの場合、切り捨てられたテキストの画像レンダリングが表示されます。画像の場合、画像自体が表示されます。
add_llama_documents_to_datasetオペレーターを使用して、マルチモーダルデータのディレクトリを追加できます。
マルチモーダルデータセットができたので、LlamainDexとMilvusでインデックスを作成できます。 create_multimodal_rag_indexオペレーターを使用して、このプロセスを入力します。このオペレーターは、インデックスに名前を付けるように求められ、クリップエンミングまたはキャプションを介して画像をインデックス化するオプションを提供します。キャプションを選択すると、キャプションとして使用するテキストフィールドを選択するように求められます。
データセットにキャプションがない場合は、Fiftone Image Captioningプラグインに興味があるかもしれません。
fiftyone plugins download https://github.com/jacobmarks/fiftyone-image-captioning-pluginインデックスを作成したら、 get_multimodal_rag_index_infoオペレーターを実行し、ドロップダウンから検査するインデックスを選択して、それを検査できます。
最後に、 query_multimodal_rag_indexオペレーターでインデックスを照会できます。この演算子は、クエリ文字列とクエリのインデックスを入力するように求めます。
また、検索された結果を生成するために使用するマルチモーダルモデル、および取得する画像結果とテキスト結果の両方を指定することもできます。