テレメトリ、障害イメージ、RCA レポート用の 1 つのプラットフォーム。マルチモーダル検索を使用すると、ルート原因をより速く見つけることができます。
ユースケース: 人工知能
業種: 製造およびモーション制御
製品およびツール: MongoDB Atlas、 MongoDB Atlas Vector Search、 MongoDB時系列コレクション
パートナー: Amazon Web Services 、 Amazon Web Services、 Lgachein
ソリューション概要
メモリ変換プロセスでは、切断されたシステム全体で大量のデータが生成されます。オーバーライドが発生した場合は、問題の原因を見つけるために、センサーテレメトリ、障害イメージ、および履歴アーカイブ レポートを手動で相関させる必要があります。このプロセスには 時間かかり、1 時間あたりの予期しないダウンタイムのコストは最大 100 万ドルになります。
エージェント的AIシステムは、LVM、専用ツール、永続的メモリを組み合わせて、障害を匿名的に調査します。テレメトリ、画像、知識をマルチモーダル検索を備えた単一のプラットフォームに統合することで、解決策に焦点を当てている間にもAIエージェントがルート 原因をより早く見つけることができます。
このソリューションは、プロセス停止の検出と基礎となる原因の分析に焦点を当てています。の複数のビルドシナリオで同じアーキテクチャを適用できます。
このソリューションを構築するには、エージェント システムにより、データへの時間的かつコンテキストに応じたアクセスが必要になります。従来の FAB ID システムは、テレメトリ、イメージ、知識を別々のデータベースに保存するため、エージェントが完全なコンテキストを分析するのを困難にします。
MongoDB Atlas は、時系列、ベクトル、ドキュメントデータのネイティブ サポートを提供します。演算子AIの場合、 MongoDB Atlas は次の機能を有効にします。
センサー テレメトリの取り込み: この機能を使用すると、専用の 時系列コレクション を使用して大容量のセンサー データをリアルタイムで取り込むことができます。
マルチモーダル埋め込みストレージ: プラットフォームはイメージとテキスト埋め込みの両方を保存し、シャーディングされたノードの高度なセマンティック検索を容易にします。
エージェントメモリの永続性: この機能は、通信状態とエージェントの履歴をレコードし、完全な監査とセッションを再開する能力を確保します。
低レイテンシのスケーラビリティ: アーキテクチャは動的にスケーリングして、大規模なストリーミングデータ負荷を処理すると同時に、高性能を維持します。
MongoDB Atlasを使用すると、業界データとエージェント的なAI機能を統合して、対応的なトラブルシューティングから自動調査に移行できます。
参照アーキテクチャ
このソリューションを使用して、 MongoDB Atlas、 LanguageGraph 、およびAmazon Web Services を使用して、ターミナルの生成数を最適化するためのエージェント的なAIシステムを構築します。これらのテクノロジーを組み合わせることで、エラー検出、ルート原因分析、マルチモーダル データ全体での障害パターン マッチングが自動化されます。このソリューションは次のように機能します。
MongoDB Atlas は、統合エージェント データレイヤーとして機能します。テレメトリ、アラート、障害イメージ、履歴レポート、エージェントメモリを保存します。 Atlas は、エージェントへのベクトル検索、ハイブリッド検索、および集計ツールも提供します。
LgGraph は、永続的な状態とツールの調整により、ルート原因エージェントのワークフローをオーケストレーションします。
Amazon Advisor は、エージェントが理由付け、センサー相関を分析し、構造化された RCA レポートを生成できるようにする LM(Clade) を提供します。
認証済みAI は、セマンティック類似性検索用のテキスト コンテキストとサーバー障害イメージを組み合わせたマルチモーダル埋め込みを生成します。
アーキテクチャは、リアルタイムのイベント駆動型パターンに従います。マシン テレメトリはMongoDB Atlasに移行し、エラー検出システムは Change Streams を使用してセンサーストリームを監視します。システムがしきい値に違反すると、アラートが作成され、 ルート原因エージェントが起動されます。ルート原因エージェントは、次の 3 つの専用ツールを使用して調査します。
クエリ ドライバー エラー: マルチモーダルベクトル検索を実行して、同様の履歴エラー パターンを見つけます。
過去の知識のクエリ: セマンティック埋め込みを使用して、RCA レポートと技術ドキュメントを検索します。
時系列データのクエリ: 集計フレームワーク を使用して、実行ウィンドウ全体のセンサーテレメトリを分析します。
ユーザーは、ライブ モニタリング ダッシュボードを介してシステムとやりとりします。ダッシュボードには、リアルタイムアラート、センサーチャート、およびシャードの障害が表示されます。また、ルート原因エージェントと直接チャットして、インシデントを調査したり、検索質問をしたりすることもできます。このアーキテクチャ内の各ツールはMongoDB Atlas を直接クエリします。エージェントのメモリと通信状態はチェックポイントに保持され、監査するこれとセッションの再開が可能になります。
図の 1。 MongoDBによるエージェント的生成数分析
待機障害のためのマルチモーダル埋め込み
このソリューションでは、Voyage AI の vlayage-multimodal-3 モデルを使用して、ワイヤ障害イメージとテキスト コンテキストを組み合わせた埋め込みを生成します。これにより、視覚的パターンと説明テキストの両方でセマンティック類似性検索が可能になります。
埋め込みサービス
EmbeddingServiceクラスは、Vyage AIクライアントを使用して埋め込み生成を処理します。
import voyageai from PIL import Image import base64 import io class EmbeddingService: def __init__(self): self.voyage_client = voyageai.Client(api_key=os.getenv("VOYAGE_API_KEY")) self.multimodal_model = "voyage-multimodal-3" self.embedding_dimension = 1024 async def generate_image_embedding( self, image_data: str, text_context: str = None ) -> List[float]: """Generate multimodal embedding from image and text.""" # Decode base64 image to PIL Image image_bytes = base64.b64decode(image_data) pil_image = Image.open(io.BytesIO(image_bytes)) # Combine text and image inputs inputs = [] if text_context: inputs.append(text_context) inputs.append(pil_image) # Generate embedding result = self.voyage_client.multimodal_embed( inputs=[inputs], model=self.multimodal_model, input_type="document" ) return result.embeddings[0]
プロセス エラーの処理
パイプラインはワイヤ障害ドキュメントごとに次のアクションを実行します。
観察可能な特性(ワイヤID、障害パターン、デバイス、生成数、ワイヤ説明)からテキスト コンテンツを構築します。
Amazon S3 からリンク マップのイメージを取得します。
両方の入力を組み合わせたマルチモーダル埋め込みを生成します。
1024 次元ベクトルを
embeddingフィールドに保存します。
# Build text from observable facts only (not suspected causes) text_content = f"Wafer ID: {wafer['wafer_id']} " text_content += f"Defect pattern: {wafer['defect_summary']['defect_pattern']} " text_content += f"Equipment: {wafer['process_context']['equipment_used'][0]} " text_content += f"Yield: {wafer['defect_summary']['yield_percentage']}%" # Get image data image_data = wafer["ink_map"]["thumbnail_base64"] # Generate multimodal embedding embedding = await embedding_service.generate_image_embedding( image_data=image_data, text_context=text_content ) # Store in document await db.wafer_defects.update_one( {"_id": wafer["_id"]}, {"$set": { "embedding": embedding, "embedding_type": "multimodal", "embedding_model": "voyage-multimodal-3" }} )
ベクトル検索インデックス
MongoDB Atlasの wafer_defectsコレクションにベクトル検索インデックスを作成します。
{ "name": "wafer_defects_vector_search", "type": "vectorSearch", "definition": { "fields": [ { "path": "embedding", "type": "vector", "numDimensions": 1024, "similarity": "cosine" } ] } }
これにより、新しいノードに既知のルート原因がない場合でも、ベクトル検索を使用してルート原因エージェントは同様の履歴エラーを見つけることができます。
エージェントツール
ツールは、エージェントがMongoDB Atlasと対話できるようにするドメイン固有の関数です。センサーデータをクエリし、セマンティック検索を実行し、履歴パターンを検索します。各ツールは、RCA レポートを生成するために LM が分析する構造化データを返します。
次のコードは、Lgachein の @tool 修飾子を使用して、ルート原因エージェントのツールを登録する方法を示しています。この例では 、 ツールはベクトル検索を使用して、同様のワイヤ障害パターンを検索します。
from langchain_core.tools import tool async def query_wafer_info( wafer_id: str, include_similar_patterns: bool = True, similarity_limit: int = 3 ) -> Dict[str, Any]: """ Get wafer defect details and find similar historical patterns. Returns the wafer data plus similar past defects with known root causes. """ db = _get_db() wafer = await db.wafer_defects.find_one({"wafer_id": wafer_id}) if not wafer: return {"error": f"Wafer {wafer_id} not found"} similar_patterns = None if include_similar_patterns and "embedding" in wafer: pipeline = [ { "$vectorSearch": { "index": "wafer_defects_vector_index", "path": "embedding", "queryVector": wafer["embedding"], "numCandidates": 100, "limit": similarity_limit + 1 } }, {"$match": {"wafer_id": {"$ne": wafer_id}}}, {"$addFields": {"similarity_score": {"$meta": "vectorSearchScore"}}}, {"$limit": similarity_limit} ] results = await db.wafer_defects.aggregate(pipeline).to_list(length=None) similar_patterns = [ { "wafer_id": r.get("wafer_id"), "description": r.get("description"), "root_cause": r.get("root_cause"), "similarity_score": round(r.get("similarity_score", 0), 4) } for r in results ] return { "wafer": wafer, "similar_historical_patterns": similar_patterns } # Tool registry TOOLS = [query_alerts, query_wafer_info, query_time_series_data, vector_search_knowledge_base]
ルート原因エージェントは、次のツールを使用してロールを調査します。
query_alertsデバイス、 重大度 、または 時間ウィンドウでフィルタリングされた最近のアラートを取得します。
違反の詳細、影響を受けたシャーディング、ソース センサー データを返します。
query_wafer_info生成数、障害パターン、重大度などのワイヤ障害の詳細を取得します。
マルチモーダルベクトル検索を実行して、既知のルート原因を持つ同様の履歴障害を見つけます。
query_time_series_data特定の 時間ウィンドウ の周囲のセンサーテレメトリをクエリします。
トークンの使用量を削減するために集計統計(min、max、avg)を返します。
障害イベントに相関するセンサーの異常を識別します。
vector_search_knowledge_baseセマンティック埋め込みを使用して、履歴 RCA レポートと技術ドキュメントを検索します。
タイトル、ルート原因、修正アクションがあるドキュメントを返します。
エージェントが同様の障害に関する過去の解決策を参照役立ちます。
このツールセットは、フェイルファストのプロセスに合わせて展開できます。例、 には、機械のメンテナンス ログのクエリ、レシピ パラメータの検証、または演算子シフト ノートを検索するためのツールが追加されています。
エージェント メモリー
エージェントが効果的に動作するには、コンテキストと理由付けステップを保存するためのメモリが必要です。この機能により、エージェントは次のことが可能になります。
調査内での連続性を維持します。
以前の手順とツールの出力を呼び出します。
ユーザー インタラクション全体でコンテキストを構築します。
このアーキテクチャでは、 MongoDB Atlas はすべてのエージェントメモリを保存します。メモリは、次の型で構成されています。
短期間メモリ:エージェントが調査を移動する際の中間状態を保存します。このメモリにより、プロセスが中断された場合でも、進行状況を失うことなく再開できます。次のコレクションには、このタイプのメモリが保存されます。
checkpoints: は、各理由付けステップでエージェントの状態をキャプチャします。checkpoint_writes: ツールの呼び出しとその出力をログに記録します。
長期メモリ: 現在の調査に関する情報を提供する履歴データを保存します。エージェントはベクトル検索を使用してこのデータを取得し、履歴コンテキストが理由付けを行うことが保証されます。コレクションには、次のものが含まれます。
wafer_defects: 類似性検索のためにマルチモーダル埋め込みを使用して検査データを待機します。historical_knowledge: RCA レポート、技術ドキュメント、予備知識。alerts: 違反の詳細とソース データを持つアクティブで解決されたアラート。process_sensor_ts: 相関分析用の時系列センサーテレメトリ。
短期間メモリを構成するには、LlangGraph の MongoDBSaverクラスを使用します。このクラスは、次のようにエージェントの進行状況を checkpoints コレクションに書込みます。
from langgraph.checkpoint.mongodb import MongoDBSaver from pymongo import MongoClient mongo_client = MongoClient(os.getenv("MONGODB_URI")) checkpointer = MongoDBSaver(mongo_client, "smf-yield-defect")
この設定により、ルート原因エージェントのメモリとフォールトトレランス機能が有効になります。
エージェント状態グラフ
状態グラフは、ワークフローをノードとエッジとしてモデル化します。各ノードは、理由付けステップ、ツール呼び出し、またはチェックポイントを表します。エッジは、これらのステップ間の移行を定義します。状態グラフにより、ワークフローが明示的かつ再現可能で、回復力のあるものになります。
このソリューションでは、LingGraph は状態グラフでルート原因エージェントとそのツールを調整できるようにします。エージェントはReAct(リージョン + アクション)パターンに従います。
理由: LM は現在の状態を分析し、次のアクションを決定します。
アクション:エージェントは、 MongoDBからデータを取得するためのツールを呼び出します。
観察:エージェントはツールの出力を処理し、その理由を更新します。
繰り返し:エージェントが十分な証明機関を確保するまで、このサイクルは続きます。
このアーキテクチャでは、次の機能が確保されます。
エージェントは、同様のパターンが見つかったかどうか、一致しない場合など、結果に基づいてブランチ することができます。
各ステップは自動的にメモリに書込み、読み取りを行います。
エンジニアは、対話を再開したり、理由付け連鎖を監査するできます。
次のコードでは、 MongoDBチェックポイントを使用して ReActionエージェントを構築します。
from langgraph.prebuilt import create_react_agent from langchain_aws import ChatBedrock async def create_rca_agent(): """Create LangGraph agent with MongoDB checkpointing.""" # Initialize LLM llm = ChatBedrock( model_id="anthropic.claude-3-5-sonnet-20241022-v2:0", region_name=os.getenv("AWS_REGION", "us-east-1") ) # Initialize MongoDB checkpointer mongo_client = MongoClient(os.getenv("MONGODB_URI")) checkpointer = MongoDBSaver(mongo_client, "smf-yield-defect") # System prompt system_prompt = """You are an expert semiconductor yield engineer. When investigating alerts: 1. First, query the alert details 2. Get wafer defect information and similar historical patterns 3. Query sensor data around the alert time 4. Search the knowledge base for similar RCA reports 5. Synthesize findings into a structured root cause analysis Always cite evidence from the tools.""" # Create agent agent = create_react_agent( model=llm, tools=TOOLS, checkpointer=checkpointer, prompt=system_prompt ) return agent
この設定では、調査ワークフロー全体を追跡、再開、デバッグできます。
エンドツーエンドのワークフロー
以下は、システムが実行を処理する方法を説明したものです。
このワークフローは、次の機能を使用して拡張およびカスタマイズできます。
自動修正: RCA 結果に基づいて、デバイス分離またはレシピ調整をトリガーします。
予測アラート: 履歴パターンを使用して、しきい値に違反する前に警告を発します。
マルチツール相関: レシピ パラメーター、チャンク ログ、またはメンテナンス スケジュールをクエリするためのツールを追加しました。
ツール、メモリ、グラフのオーケストレーションはモジュール型であるため、既存のワークフローを中断することなく新しい機能を追加できます。
データモデルアプローチ
演算子出力最適化システムは、次のような幅広いデータ範囲に依存しています。
高頻度のセンサーテレメトリ
検査イメージと障害パターンを待ちます
過去の RCA レポートと予備知識
エージェントメモリと対話状態
デバイスのステータスとプロセス コンテキスト
MongoDB の柔軟なドキュメントモデルにより、このデータを 1 つのソリューションで簡単に運用できます。 MongoDB Atlasでは、次のデータを保存できます。
時系列データ: この形式は、センサーテレメトリを秒レベルの粒度でキャプチャします。
ベクトル埋め込み: これらにより、サーバーの障害やより広範な知識ベースにわたるセマンティック検索が可能になります。
マルチモーダル埋め込み: これらの構造は、特定のテキストコンテキストを持つ障害イメージを組み合わせます。
メタデータ: この情報は、 デバイスID、 バッチID、または プロセス手順 を追跡することでコンテキストを統合します。
運用データ: このカテゴリは、アラート、デバイスのステータス、プロセス パラメータに関するリアルタイム情報を管理します。
メインのコレクション
このソリューションでは、次のコレクションを使用してデータを保存します。
sensor_events: 変更ストリーム モニタリングのリアルタイム センサー イベント。この通常のコレクションにより、実行検出システムはリアルタイムでしきい値違反を監視できます。
alerts: ルート原因エージェントをトリガーするアクティブな実行としきい値違反。各アラートは、違反の詳細、影響を受けるワイヤ、およびソース センサー データをキャプチャします。ステータスは、「open」から「acknowledged」、「解決済み」に移行します。
wafer_defects: セマンティック検索用にマルチモーダル埋め込みを使用して検査データを待機します。各ドキュメントには、欠損パターン、生成数、重大度レベル、および 投票AIによって生成された結合済みのイメージとテキストの埋め込みが含まれています。
historical_knowledge:ベクトル埋め込みで保存された RCA レポートと技術ドキュメント。エージェントはこのコレクションを検索して、過去の同様のインシデント、トラブルシューティング手順、および証明された修正アクションを見つけます。
process_context: 相関分析用の、レシピ パラメータ、デバイス構成、ベースライン値など、プロセス メタメタデータ。
checkpoints: LagGraph の MongoDBBSaver によって各リージョンのステップでキャプチャされるエージェントの状態をキャプチャし、通信の永続性、セッションの再開、監査する続行を有効にします。
process_sensor_ts: 効率的な履歴分析のために時系列コレクションとして保存されるプロセス センサー テレメトリ。時系列コレクションは数百万の読み取りを効率的に保存し、クエリを実行します。デバイスID、 バッチID 、 プロセスステップなどの コンテキストに応じたメタメタデータが保持されます。
次の例は、process_sensor_tsコレクション内のサンプルドキュメントを示しています。
{ "timestamp": { "$date": "2025-01-24T10:30:00.000Z" }, "equipment_id": "CMP_TOOL_01", "metrics": { "particle_count": 1234, "temperature": 68.5, "rf_power": 1502.3, "chamber_pressure": 5.2 }, "metadata": { "lot_id": "LOT_2025_001", "wafer_id": "W_004_16", "process_step": "Oxide CMP" } }
時系列ドキュメントには、次のフィールドが含まれています。
timestamp: 読み取りのタイムスタンプequipment_id: ソース ツールの識別子metrics: 粒数、温度、LF 出力、チャンク容量の数値センサー値metadata: バッチ、ウェーカ、プロセス ステップのコンテキスト タグ
次の例は、wafer_defectsコレクション内のサンプルドキュメントを示しています。
{ "_id": "W_CMP_001", "wafer_id": "W_CMP_001", "lot_id": "LOT_2025_001", "inspection_timestamp": { "$date": "2025-01-24T10:30:00Z" }, "description": "Edge-concentrated particle contamination from slurry degradation", "defect_summary": { "defect_pattern": "edge_cluster", "severity": "critical", "yield_percentage": 72.5, "failed_dies": 22, "total_dies": 80 }, "process_context": { "equipment_used": ["CMP_TOOL_01"], "last_process_step": "Oxide CMP", "recipe_id": "CMP_STD_01", "slurry_batch": "SLR-2025-0142" }, "ink_map": { "thumbnail_base64": "iVBORw0KGgo...", "thumbnail_size": { "width": 200, "height": 200 }, "full_image_url": "s3://bucket/wafers/W_CMP_001.png" }, "embedding": [0.123, -0.456, ...] }
ワイヤ障害ドキュメントには、次のフィールドが含まれています。
wafer_idおよびlot_id: 障害を本番コンテキストにリンクdescription: 履歴チャートのルート原因分析が含まれていますdefect_summary: パターンタイプ、重大度、 生成影響、 ダイジェスト数 を取得しますprocess_context: 相関分析のために食材、レシピ、食材を追跡ink_map: ワイヤマップ可視化の保存(表示ではサム値、完全イメージでは S3 URL )embedding: 類似性検索用の 1024 次元マルチモーダルベクトルを含む
ソリューションのビルド
完全なデモ実装を表示するには、 GitHubリポジトリ を参照してください。リポジトリの README では、次の手順が説明されています。
バックエンドの構成
バックエンドディレクトリに移動し、uv を使用して依存関係をインストールします。
cd backend # Install UV package manager curl -LsSf https://astral.sh/uv/install.sh | sh # Install dependencies uv sync
認証情報を含む .envファイルを作成します。
# MongoDB Atlas connection MONGODB_URI=mongodb+srv://<username>:<password>@<cluster>.mongodb.net/ # Voyage AI for embeddings VOYAGE_API_KEY=your-voyage-api-key # AWS Bedrock for LLM inference AWS_REGION=us-east-1 AWS_ACCESS_KEY_ID=your-access-key AWS_SECRET_ACCESS_KEY=your-secret-key
アプリケーションを起動する
バックエンドサーバーを起動します。
cd backend uv run uvicorn main:app --host 0.0.0.0 --port 8000 --reload
フロントエンドサーバーを別のターミナルで起動します。
cd frontend npm run dev
次のアドレスでアプリケーションにアクセスします。
フロントエンド ダッシュボード: http://localhost:3000
バックエンドAPI: http://localhost:8000
API Documentation: http://localhost:8000/docs
キーポイント
エージェント認証AIを使用 : AIエージェントは、エラーをノード的に調査し、センサーデータ、障害画像、履歴レポートを相関させて、時間ではなく秒単位でルート原因分析を生成できます。
最新のデータ インフラストラクチャの構築: 高パフォーマンス、低レイテンシ、スケーラブルなデータ インフラストラクチャは、 AIエージェントを増やすで効果的に運用するのに不可欠です。 MongoDB Atlas は、時系列、ベクトル、ドキュメントの統合プラットフォームを提供します。
マルチモーダル検索を有効にする:画像とテキスト埋め込みを組み合わせて使用すると、最初にどのように説明されたかに関係なく、エンジニアは同様のエラーを見つけることができます。 MongoDB AI のマルチモーダル モデルは、視覚的パターン と テキスト コンテキストの両方をキャプチャします。
リアルタイムで過半数 : 変更ストリーム により、しきい値違反を即座に検出できます。システムは、シフトの終了ではなく、ミリ秒以内にアラートを作成します。
永続的なエージェントメモリ: MongoDBチェックポイントにより、エンジニアは調査を再開し、追加の質問をして、エージェントの理由付け連鎖を監査するができます。この可視性により、信頼が構築され、継続的な改善が可能になります。
作成者
Humza Akhtar、MongoDB
Kiran Tulsulkar, MongoDB
MongoDB、 MongoDB