LlamaIndex は、LLM を使用してコンテキスト拡張された生成 AI アプリケーションを構築するためのフレームワークです。
コンテキスト拡張とは、追加の関連情報またはコンテキストを LLM モデルに提供し、特定のクエリに対する理解と応答を向上させる手法を指します。この拡張には通常、ドキュメントや埋め込みなどの外部データ ソースの取得、統合、またはモデルの入力への添付が含まれます。目標は、モデルに必要なコンテキストを提供することで、モデルがより適切で正確かつ微妙な答えを出せるようにすることで、より多くの情報を提供することです。検索拡張生成 (RAG) は、コンテキスト拡張の最も一般的な例です。
エージェントは、ツールを使用して調査、データ抽出、Web 検索などのタスクを実行する LLM を利用した自動化された推論および意思決定エンジンです。これらは、データに基づいた質問応答から、タスクを完了するために決定してアクションを実行できるようにするなどの単純なユースケースに使用できます。
この投稿では、LlamaIndex を使用して単純な RAG エージェントを構築します。
Python を使用して、LlamaIndex を使用する単純な RAG エージェントを構築します。まず、以下のように必要な依存関係をインストールしましょう:
pip install llama-index python-dotenv
OpenAI の gpt-4o-mini を LLM として使用します。 API キーを環境変数ファイルに置く必要があります。 LLamaIndex を使用したローカル LLM のセットアップの詳細については、こちらをご覧ください。
from llama_index.core import SimpleDirectoryReader, VectorStoreIndex, Settings from llama_index.llms.openai import OpenAI from dotenv import load_dotenv # Load environment variables (e.g., OPENAI_API_KEY) load_dotenv() # Configure OpenAI model Settings.llm = OpenAI(model="gpt-4o-mini") # Load documents from the local directory documents = SimpleDirectoryReader("./data").load_data() # Create an index from documents for querying index = VectorStoreIndex.from_documents(documents) query_engine = index.as_query_engine()
次に、エージェントがタスクを実行するために使用できる基本的な関数をいくつか定義しましょう。
def multiply(a: float, b: float) -> float: """Multiply two numbers and returns the product""" return a * b def add(a: float, b: float) -> float: """Add two numbers and returns the sum""" return a + b
次に、前に定義した関数とクエリ エンジンから、エージェントがタスクを実行するために使用するツールを作成します。これらのツールは、エージェントがさまざまな種類のクエリを処理するときに利用できるユーティリティとして機能します。
from llama_index.core.tools import FunctionTool, QueryEngineTool # Wrap functions as tools add_tool = FunctionTool.from_defaults(fn=add) multiply_tool = FunctionTool.from_defaults(fn=multiply) # Create a query engine tool for document retrieval space_facts_tool = QueryEngineTool.from_defaults( query_engine, name="space_facts_tool", description="A RAG engine with information about fun space facts." )
ReActAgent を使用してエージェントを作成します。エージェントは、ツールをいつ使用するか、クエリにどのように応答するかを決定する責任を負います。
from llama_index.core.agent import ReActAgent # Create the agent with the tools agent = ReActAgent.from_tools( [multiply_tool, add_tool, space_facts_tool], verbose=True )
このエージェントは ReAct フレームワークを使用します。これにより、論理的な順序で指定されたツールを利用することで、モデルが推論し、行動することが可能になります。エージェントは作成したツールを使用して初期化され、verbose=True フラグにより、エージェントがタスクをどのように判断して実行するかに関する詳細情報が出力されます。
最後に、エージェントを対話型ループで実行して、終了するまでユーザーのクエリを処理しましょう。
while True: query = input("Query: ") if query == "/bye": exit() response = agent.chat(query) print(response) print("-" * 10)
以上がLlamaIndex を使用した単純な RAG エージェントの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。