🦙 LlamaIndex 0.9 : 理解 : LLM の使用 (翻訳/解説)
翻訳 : クラスキャット セールスインフォメーション
作成日時 : 12/06/2023 (v0.9.12)
* 本ページは、LlamaIndex の以下のドキュメントを翻訳した上で適宜、補足説明したものです:
- Understanding : Using LLMs
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
- 人工知能研究開発支援
- 人工知能研修サービス(経営者層向けオンサイト研修)
- テクニカルコンサルティングサービス
- 実証実験(プロトタイプ構築)
- アプリケーションへの実装
- 人工知能研修サービス
- PoC(概念実証)を失敗させないための支援
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
- クラスキャット セールス・マーケティング本部 セールス・インフォメーション
- sales-info@classcat.com ; Website: www.classcat.com ; ClassCatJP
🦙 LlamaIndex 0.9 : 理解 : LLM の使用
Tip : サポートされる LLM のリストとそれらの機能の比較については、LLM モジュールガイド をご覧ください。
LLM ベースのアプリケーションを構築する際の最初のステップの一つは、どの LLM を使用するかです : 希望するなら 1 つ以上を使用することもできます。
LLM はパイプラインの複数の異なるステージで使用されます :
- インデックス作成 中、LLM を使用してデータの関連性 (そもそもインデックス化するかどうか) を決定するために LLM を使用しても良いですし、raw データを要約して代わりに要約をインデックス化するために LLM を使用することもできます。
- クエリー 中、LLM は 2 つの方法で使用できます :
- 検索 (Retrieval, インデックスからデータを取得) 中、LLM は (複数の異なるインデックスのような) オプションの配列が与えられ、探している情報をどこで最良に見つけるかについて決定することができます。エージェント的な (agentic) LLM は様々なデータソースにクエリーするためこのステージでツールを使用することもできます。
- 応答合成 (Response Synthesis, 取得データの回答への変換) 中、LLM は複数のサブクエリーに対する答えを単一の理解しやすい答えに結合したり、非構造化テキストからのようなデータを JSON や別のプログラミング的な出力形式に変換することができます。
- 検索 (Retrieval, インデックスからデータを取得) 中、LLM は (複数の異なるインデックスのような) オプションの配列が与えられ、探している情報をどこで最良に見つけるかについて決定することができます。エージェント的な (agentic) LLM は様々なデータソースにクエリーするためこのステージでツールを使用することもできます。
LlamaIndex は多数の様々な LLM への単一のインターフェイスを提供し、パイプラインの任意のステージに選択した任意の LLM を渡すことを可能にします。それはこのように簡単です :
from llama_index.llms import OpenAI
response = OpenAI().complete("Paul Graham is ")
print(response)
通常はこの例のように、LLM をインスタンス化してそれを ServiceContext に渡します、これを次にパイプラインの別のステージに渡します :
from llama_index.llms import OpenAI
from llama_index import VectorStoreIndex, SimpleDirectoryReader, ServiceContext
llm = OpenAI(temperature=0.1, model="gpt-4")
service_context = ServiceContext.from_defaults(llm=llm)
documents = SimpleDirectoryReader("data").load_data()
index = VectorStoreIndex.from_documents(
documents, service_context=service_context
)
この場合、OpenAI をインスタンス化して、デフォルトの gpt-3.5-turbo の代わりに gpt-4 モデルを使用するようにそれをカスタマイズして、また temperature も変更しています。VectorStoreIndex は後のクエリーのためにドキュメントをエンコードしたり埋め込むために gpt-4 を使用するようになります。
Tip : ServiceContext は configuration データの束で、LlamaIndex の様々なパートに渡します。ServiceContext と、複数の LLM を使用するために複数の ServiceContexts を使用する等、それをカスタマイズする方法について 更に学習する ことができます。
利用可能な LLM
OpenAI, Hugging Face, PaLM 等との統合をサポートしています。ローカルモデルを実行する方法を含む、完全なリストについては LLM へのモジュールガイド を確認してください。
ローカル LLM の使用
LlamaIndex はホストされた LLM API だけをサポートしているわけではありません ; Llama2 のようなローカルモデルをローカルで実行する こともできます。
Llama 2 のようなローカル LLM をインストールしたならば、このようにそれを使用できます :
from llama_index import ServiceContext
service_context = ServiceContext.from_defaults(llm="local")
これは LlamaCPP の llama2-chat-13B を使用し、llama-cpp-python がインストールされていることを仮定しています。完全な LlamaCPP 使用ガイドが公開されています。
詳細は カスタム LLM’s How-To をご覧ください。
プロンプト
デフォルトで LlamaIndex は、特定の LLM がデータを正しく処理して形式化するようなトリッキーなワークを処理する、組み込みの、実戦テスト済みの (battle-tested) プロンプトの素晴らしいセットを装備しています。これは LlamaIndex を使用する最大の利点の一つです。望むならば、プロンプトをカスタマイズする ことができます。
以上