はじめに
まず、スクリプトの先頭でweave.init() を呼び出します。これにより Weave が初期化され、以降の LlamaIndex の Call のトレース収集が開始されます。weave.init() の引数には、トレースの整理に役立つプロジェクト名を指定します。
トレース
このセクションでは、Weave が RAG パイプラインのような複数 step の LlamaIndex workflow をどのように取得するかを説明します。 LlamaIndex は、データを LLMs に簡単に接続できることで知られています。基本的な RAG application には、埋め込み step、検索 step、応答生成 step が必要です。複雑さが増すにつれて、開発時と本番環境の両方で、個々の step のトレースを中央データベースに保存することが重要になります。 これらのトレースは、application のデバッグや改善に不可欠です。Weave は、プロンプトテンプレート、LLM Call、tool、エージェント steps を含め、LlamaIndex ライブラリを通じて行われるすべての calls を自動的にトラッキングします。トレースは Weave の Web インターフェースで確認できます。 以下の例は、LlamaIndex’s Starter Tutorial (OpenAI) にある基本的な RAG パイプラインを示しています。
ワンクリックでの可観測性
このセクションでは、Weave インテグレーションが LlamaIndex の組み込み可観測性システムにどのように組み込まれているかを説明します。そのため、ハンドラーを手動で設定する必要はありません。 LlamaIndex は、本番環境で筋の通った LLM アプリケーションを構築できるように、ワンクリックでの可観測性を提供しています。 Weave インテグレーションでは、LlamaIndex のこの機能を活用し、WeaveCallbackHandler() を llama_index.core.global_handler に自動で設定します。そのため、LlamaIndex と Weave を使用するユーザーが行う必要があるのは、weave.init([NAME_OF_PROJECT]) で Weave の run を初期化することだけです。
より簡単に実験できるように Model を作成する
プロンプト、モデルの設定、推論パラメーターなど、複数のコンポーネントを含むアプリケーションで、さまざまなユースケースにわたって LLM を整理し評価するのは簡単ではありません。weave.Model を使用すると、システムプロンプトや使用するモデルといった実験の詳細を取得して整理できるため、異なるイテレーションを比較しやすくなります。
次の例では、weave/data フォルダー内のデータを使用して、LlamaIndex のクエリエンジンを WeaveModel として構築する方法を示します。
weave.Model を継承した SimpleRAGPipeline クラスは、この RAG パイプラインの重要なパラメーターをまとめています。query メソッドを weave.op() でデコレートすると、トレースが有効になります。この構造にしておくことで、Weave で RAG パイプラインのさまざまな設定をバージョン管理し、比較し、評価できるようになります。
weave.Evaluation を使った評価
このセクションでは、固定されたデータセットに対するモデルのパフォーマンスを測定し、イテレーションを定量的に比較する方法を示します。
評価を行うと、アプリケーションのパフォーマンスを測定できます。weave.Evaluation クラスを使うことで、特定のタスクやデータセットに対してモデルがどの程度うまく機能するかを把握できるため、異なるモデルやアプリケーションの各イテレーションを比較しやすくなります。次の例では、前のセクションで作成したモデルを評価する方法を示します。
weave.Evaluation を使って評価するには、評価用データセット、scorer 関数、weave.Model が必要です。これらの要件は、次の3つの主要コンポーネントに適用されます。
- 評価サンプルの dict のキーは、scorer 関数の引数および
weave.Modelのpredictmethod の引数と一致している必要があります。 weave.Modelには、predict、infer、またはforwardという名前の method が必要です。トレースのため、この method はweave.op()でデコレートする必要があります。- scorer 関数は
weave.op()でデコレートされており、outputという名前付き引数を持つ必要があります。
Weave を LlamaIndex とインテグレーションすることで、LLM アプリケーションの包括的なログすることとモニタリングが可能になり、評価を通じてデバッグとパフォーマンスの最適化を効率化できます。