MastraにおけるAIオブザーバビリティの改善
OpenTelemetryは、モダンなシステムを監視するための標準です。従来のトレースはほとんどのソフトウェアで機能しますが、AIアプリケーションでは不十分です。
AIを構築する際、以下のような具体的な回答が必要になります: • どのモデルが出力を生成したのか? • どのプロバイダーを使用したのか? • トークンをいくつ消費したのか? • どの埋め込み(embedding)モデルがドキュメントを処理したのか? • その操作のコストはいくらだったのか?
これらの問いは、Retrieval-Augmented Generation (RAG) システムにおいて最も重要です。
Mastraへのコントリビューションを行っている際、RAGの埋め込みにおけるオブザーバビリティに欠落があることに気づきました。Mastraは多くのAIタスクのメタデータをエクスポートしていましたが、RAGの埋め込みスパンには標準的な属性が不足していました。
オブザーバビリティツールは埋め込み操作自体は検知していましたが、そのコンテキストを理解できていませんでした。モデルの詳細、プロバイダー情報、トークン使用量などが欠落していたのです。
RAGパイプラインは以下のステップで構成されます: • ドキュメント • チャンキング • 埋め込みモデル • ベクトルデータベース • 類似性検索 • LLM生成
埋め込みステージは極めて重要です。ここでデータが不足していると、パフォーマンスのデバッグが困難になります。
OpenTelemetryは、共通言語を作成するためにセマンティック・コンベンション(semantic conventions)を使用しています。ツールごとにカスタム名を使用するのではなく、全員が一つの標準に従います。これにより、ツールは以下のような属性を読み取ることが可能になります:
• gen_ai.system
• gen_ai.request.model
• gen_ai.usage.input_tokens
私は、MastraのRAG埋め込みデータをこれらのOpenTelemetry標準にマッピングするためのプルリクエストを提出しました。
この作業には以下が含まれます: • 埋め込みモデルのメタデータの書き出し • プロバイダー情報の書き出し • トークン使用量メトリクスのマッピング • 属性のグローバル標準への適合
これにより、カスタムコードを書くことなく、オブザーバビリティシステムが埋め込みを理解できるようになります。
本番環境のAIシステムには可視性が必要です。どのモデルがレイテンシを引き起こしているのか、あるいはどのプロバイダーのコストが最も高いのかを知る必要があります。標準化されたテレメトリは、これらの回答を自動的に提供します。
オープンソースは素晴らしい教訓を与えてくれます。優れたコントリビューションが、必ずしも新しい機能を追加するものとは限りません。既存のシステムをより監視しやすく、運用しやすくすることこそが、時には最高の仕事となるのです。
AIインフラを構築しているなら、オブザーバビリティを無視しないでください。最高のAIシステムは、オブザーバブル(観測可能)なものです。
オプションの学習コミュニティ: https://t.me/GyaanSetuAi