【Ignite 2024 速報】TOYOTA さんのマルチエージェントアーキテクチャ事例メモ

TOYOTA さんの Microsoft Ignite セッション「Lessons from Toyota for building durable multi-agent copilots」が非常に面白く勉強になったのでメモ。

https://ignite.microsoft.com/en-US/sessions/BRK117

# Microsoft 事例ページ
https://news.microsoft.com/ja-jp/features/241120-toyota-is-deploying-ai-agents-to-harness-the-collective-wisdom-of-engineers-and-innovate-faster/

# UI からエージェントを "召喚" し、それぞれの意見を聞くことができる
「O-beya」 UI では待機している複数のエージェントから意見を聞きたいエージェントを選択して質問に回答させることができる。オート選択も可能。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/e853609c-49e4-1d0e-67ea-5371f5d87cd4.png)


専門家ごとにエージェントを分割。各エージェントごとにシステムプロンプト、ナレッジベース、アクションを持つ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/4cadb1cf-9252-e824-f472-167c67d33a0a.png)

UI から確認できるエージェントは 10 種類。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/65e6691b-3888-2510-bde4-a3b9bf6aaadf.png)



# Next RAG としてのマルチエージェントシステム
RAG の次は Agentic AI！ TOYOTA に続け！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/fff00d23-e81b-e74a-1957-3a6d0c7d691c.png)

# TOYOTA Multi-Agent RAG Pattern
RAG パターンについて多数の検証を行い、各エージェントの特定のタスクの精度とパフォーマンスを向上させるために個別に調整しており、ニーズに応じたアーキテクチャを選択している。メインで使っているものは、
- 簡単デプロイ: Azure AI Search ベースの RAG、SharePoint データを検索
- 信頼性とパフォーマンス：Azure Cosmos DB ベースの RAG、運用データ・ベクトルを検索

というふうに分けているようだ。確かに Azure AI Search は UI から簡単に RAG を構築できる。信頼性という点では、Azure Cosmos DB for NoSQL は 可用性 SLA 99.999% が可能。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/f1a14ec0-518e-f16d-4a7d-3147ffcabde1.png)


# エージェントには Azure Functions の Durable Functions を採用している
マルチエージェントには専用のライブラリなどを用いているわけではなく、堅牢なワークフローとしての実装が見える。[Durable Functions](https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-overview?tabs=in-process%2Cnodejs-v3%2Cv1-model&pivots=python) は、サーバーレス コンピューティング環境でステートフル関数を記述できる機能で、いわゆる枯れた技術と言える。Durable Functions 採用理由は以下とのこと。

- 並列実行が可能
- エラーハンドリングと再実行が可能
- 状態のモニタリングが可能

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/40eff784-679d-323c-a77f-2bb4c3a6cce4.png)


これは、Durable Functions の設計パターン「[ファンアウト/ファンイン](https://learn.microsoft.com/ja-jp/azure/azure-functions/durable/durable-functions-overview?tabs=in-process%2Cnodejs-v3%2Cv2-model&pivots=python#fan-in-out)」である。ファンアウト/ファンイン パターンでは、複数の関数を並列で実行し、すべての関数が完了するまで待機する。 複数の関数から返される結果に基づいて集計作業を実行する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/317958bb-4ab2-4f52-a6a3-ed0e792c01b2.png)

# 全体のアーキテクチャ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/14fdef0c-0cba-b9f1-17f0-a2fd98ed7c20.png)

## エージェントに Durable Functions を用いるアーキテクチャ
参考までに、エージェントに Durable Functions を用いたり、ベクトルデータベースに Cosmos DB を用いる考え方は品川で開催した [AI Challenge Day 第3回](https://www.youtube.com/live/X-KOnrOh3lI?feature=shared&t=5895) で Well-Architected な高信頼性 RAG アーキテクチャとして ZEN ARCHITECTS 三宅さんが詳しく紹介してくれている。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/7484a6b4-1d7e-fa5d-450d-d27ca4e6b999.png)


https://www.youtube.com/live/X-KOnrOh3lI?feature=shared&t=5895

## アーキテクチャ設計には ZEN ARCHITECTS さんが関わっている
https://x.com/kazuyukimiyake/status/1859217574346543345



# Cosmos DB をセマンティックキャッシュに利用する
[セマンティック キャッシュ](https://learn.microsoft.com/ja-jp/azure/cosmos-db/gen-ai/semantic-cache)を使用すると、以前のユーザープロンプトと LLM 出力履歴を使用し、ベクトル類似性検索を使用して、同じようなユーザープロンプトにはキャッシュを返す。コストが高い LLM コールを減らすためのテクニック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/ba682877-d114-ab7d-1096-475318ca5459.png)


# Azure Cosmos DB によるベクトル検索
Azure Cosmos DB for NoSQL の最新アップデート。このアップデートによって Cosmos DB 側にも全文検索機能を持たせようとしており、Azure AI Search との機能差は急速に薄まることが予想される。

- General Availability (GA) of Vector Search in Azure Cosmos DB for NoSQL
- General Availability (GA) of the Microsoft DiskANN vector index
- Public Preview of Full Text Search and Ranking (using BM25)
- Public Preview of Hybrid Search (using RRF)

## Microsoft DiskANN による高速なベクトル検索機能が GA
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/39e428d8-54d3-d842-c0ad-29d0a9ef833e.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/4ae8dbfd-eadf-c25d-2560-1b9aeea46663.png)


## データインジェストのためのソリューションアクセラレーターを提供
あぁこれは Integ..(ry

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/7aedb057-4db4-d30a-f8bc-a5baaa0ae8c9.png)


# 参考
https://devblogs.microsoft.com/cosmosdb/new-vector-search-full-text-search-and-hybrid-search-features-in-azure-cosmos-db-for-nosql/

https://devblogs.microsoft.com/cosmosdb/toyota-motor-corporation-innovates-design-development-with-multi-agent-ai-system-and-cosmos-db/