AWS Community Day Hong Kong 2025 Recap

重新思考 GenAI Agent:RAG 與 MCP

Recap Series

Agentic 架構中的 RA 與 MCP

本場重點

  • 探討 Agentic 領域中的兩項傳統技術:檢索增強(RA)與多鏈處理(MCP)。
  • 著重說明 Agentic 架構中的關鍵要素,以及如何提升 Agent 效能。

重點摘要

  • Agent 編排:Agent 由模型負責編排,因此模型至關重要。
  • 模型演進:除非自行訓練模型,否則模型的邏輯推理與能力演進主要由模型供應商推動。
  • 外部系統連線能力:Agent 能否連接外部系統並準確執行任務,是一項關鍵能力。

檢索增強(RA)

  • 定義:RA 讓大型語言模型(LLM)無須重新訓練,即可存取自訂知識庫。
  • 優點:降低模型微調或重新訓練所需的運算資源與成本。
  • 使用情境:適合提示工程搭配少樣本或單樣本學習仍不足以應付的複雜工作負載。

目標

  • 提升 Agent 的實際效能。
  • 改善 Agentic 架構中的 RA 效能。

架構概觀

  • 本場將深入探討 Agentic 系統架構,聚焦於 RA 與 MCP 如何提升整體效能。

檢索增強(RA)架構詳解

實作 RA 的步驟

  1. 文件準備:

從自己的文件(PDF、媒體、影片)開始。

  1. 分塊:

將文件切分成多個區塊(具有意義的文字片段)。

  1. 嵌入:

使用嵌入模型將區塊轉換為數值表示(向量)。

  1. 向量儲存:

將向量儲存在資料庫中(關聯式資料庫,或 Neo4j、Pinecone 等原生向量儲存系統)。

查詢流程

  • 使用者提出問題時,問題會被轉換成向量。
  • 向量資料庫執行相似度搜尋,找出最相關的答案。
  • 答案會傳回大型語言模型(LLM),以產生客製化回應。

提升 RA 效能的關鍵要素

分塊策略

  • 分塊的重要性:
  • 早期 LLM 的上下文視窗有限。
  • 分塊可避免「中段資訊遺失」現象,以免漏掉重要資訊。
  • 主要考量:
  • 區塊大小:取決於主觀判斷與個人偏好。
  • 分塊邏輯:如何以有意義的方式切分文字。

嵌入模型的選擇

  • 選擇合適的嵌入模型,對於準確呈現向量至關重要。

向量資料庫的選擇

  • 不同向量資料庫採用不同的演算法與程式庫。
  • 選擇合適的資料庫會影響效能與準確度。

分塊為何重要

  • 上下文視窗限制:早期 LLM 無法處理大量輸入;分塊可將內容切成可管理的片段。
  • 避免中段資訊遺失:確保處理過程不會漏掉重要資訊。
  • 區塊大小與邏輯:這些主觀選擇會影響分塊成效。

分塊策略及其影響的進一步說明

區塊大小的影響

  • 區塊大小會影響回應時間,以及忠實度、相關性等效能指標。
  • Llama Index 說明了區塊大小與效能之間的關係。

AWS 上的分塊策略

固定大小分塊

  • 依固定大小,有規律地按照語法切分文字。

語意分塊

  • 使用自然語言處理(NLP)理解文字,並以有意義的方式進行分塊。

階層式分塊

  • 採用父子關係,常用於具有階層結構的文件。

分塊的主要考量

  • 有意義的區塊:確保區塊具有語意,而不只是按照語法切分。
  • 理解文字:目標是理解文字內容,以判斷區塊是否具有意義。
  • 不分塊策略:若資料集內容完整或訓練充分,也可能不需要分塊。

摘要

  • 分塊不只關乎大小,更重要的是理解文字並以有意義的方式切分。
  • AWS 提供多種分塊策略,包括固定大小、語意及階層式分塊。
  • 分塊策略的選擇取決於文字性質與期望的效能成果。

嵌入模型與相似度指標詳解

嵌入模型

  • 嵌入模型會將文字轉換成數值表示(向量)。
  • 例如:「ABC」(A:「我喜歡跑步」、B:「我最喜歡的運動是跑步」、C:「今天天氣很好」)會被嵌入成 [0.8, 0.6, 0.11] 之類的向量。
  • 這些向量的意義由嵌入模型決定。

相似度指標

  • 歐幾里得距離:直接測量兩個向量之間的距離。距離越小,代表相似度越高。
  • 餘弦相似度:測量兩個向量之間的夾角。數值越接近 1,代表相似度越高。

範例

  • 以 ABC 為例,無論使用歐幾里得距離或餘弦相似度,A 與 B 在數學上都更相似、更接近。

選擇合適的嵌入模型

  • [ 1 ] 使用情境與語言:
  • 確認特定使用情境與語言需求(例如支援多語言)。
  • [ 2 ] Token 數量或視窗大小:
  • 確保模型能處理文字素材的規模。
  • [ 3 ] 維度:
  • 較高的維度可以捕捉更多語意,但可能需要更多記憶體。
  • 必須在資訊捕捉能力與記憶體成本之間取得平衡。

AWS 嵌入模型

  • AWS 提供多種嵌入模型,近期也推出了 Nova embedding 等新模型。
  • 選擇模型時,測試結果及對模型能力的理解都至關重要。

摘要

  • 嵌入模型將文字轉換成數值向量,讓系統得以執行相似度搜尋。
  • 相似度可透過歐幾里得距離與餘弦相似度衡量。
  • 選擇合適的嵌入模型時,必須考量使用情境、Token 數量與維度。

向量資料庫與搜尋演算法摘要

向量資料庫(Vector DB)

  • 文字轉換成數值表示(向量)後,需要儲存在向量資料庫中。
  • AWS 提供多種資料庫選項,包括 Pinecone 或 Mu 等開源 Serverless 解決方案。
  • 此處以 OpenSearch 為例,協助理解各種搜尋方式。

搜尋方式

  • [ 1 ] 階層式可導航小世界(HNSW):
  • 建立逐層的圖形結構,以加快搜尋速度。
  • 缺點:記憶體用量較高。
  • [ 2 ] 倒排檔案索引(IVF):
  • 將向量分組至不同儲存桶,再搜尋其中的子儲存桶。
  • 優點:相較於 HNSW,記憶體用量較低。

選擇合適的搜尋方式

  • 應考量查詢延遲、查詢品質、記憶體用量及索引方式。
  • OpenSearch 建議選擇搜尋方式時評估這些因素。
  • FAISS 等方法可能結合 HNSW 與 IVF,以取得最佳效能。

選擇向量資料庫時的取捨

  • 沒有一體適用的答案;效能與可容忍程度因使用者而異。
  • 必須在品質、成本與延遲之間取得平衡。
  • 使用越多記憶體,成本越高,但結果也越準確。

結論

  • 向量資料庫與搜尋演算法的選擇,取決於特定使用情境與需求。
  • 決策圖與樹狀圖可協助選出合適的方案。

進入 MCP 主題

  • 接下來將探討多鏈處理(MCP),並分享 MCP 的實務經驗。

多鏈處理(MCP)簡介

什麼是 MCP?

  • MCP 是 Model Context Protocol(模型上下文協定)的縮寫,是一項開源標準,用於連接 AI 應用程式與外部系統、資料庫或知識庫。
  • 目標是讓系統提供更有效的回應。

MCP 架構概觀

  • MCP Host:中央元件,包含多個 MCP Client。
  • MCP Client:與 MCP Server 互動。
  • MCP Server:代表檔案系統、資料庫或其他應用程式等不同系統。

MCP Client 的核心功能

  • Sampling:控制傳送至 MCP Server 的請求數量。
  • Roots:指定 Client 希望從 MCP Server 擷取的目錄或資料類型。
  • Elicitation:定義 Client 希望從 MCP Server 接收哪些資料的偏好。

在 AWS 上部署 MCP Server 的參考架構

  • CloudFront 與 Buff:用於提升效能,並防範惡意攻擊。
  • Amazon Cognito:用於身分驗證,確保 MCP Client 的請求有效。

摘要

  • MCP 是一種強化 AI 應用程式與外部系統互動的協定。
  • 此架構包含 MCP Host、Client 與 Server。
  • MCP Client 的主要功能包括 sampling、roots 與 elicitation。
  • 建議使用 CloudFront、Buff 及 Amazon Cognito 等 AWS 服務,安全且有效率地部署 MCP Server。

在 AWS 上部署 MCP 的進一步說明

MCP Server 的後端服務

  • AWS Fargate 與 AWS Lambda:
  • Fargate:託管需要長時間執行的 MCP Server。
  • Lambda:託管由事件觸發、短暫執行的程式碼。

其他 AWS 服務

  • Amazon CloudWatch:監控 MCP Server 效能。
  • Parameter Store:儲存 MCP Server 的環境變數。
  • Amazon ECR:託管建置 MCP Server 所需的映像檔。
  • ACM(AWS Certificate Manager):透過憑證確保傳輸中的資料已加密。

在 AWS 上部署 MCP Server 的示範

  • CDK(Cloud Development Kit):用於部署 MCP Server 架構。
  • [ 1 ] 步驟:
  • 建置 CDK 工具組。
  • 使用 AWS 提供的 CDK 部署後端架構。
  • [ 2 ] 部署的 Stack 包含:
  • VPC
  • Security groups
  • CloudFront
  • 用於身分驗證的 Cognito user pool
  • MCP Server

部署流程

  • 部署流程包括從原始碼建置 Docker 映像檔、將映像檔推送至 ECR,再部署到 ECS Fargate 與 Lambda 等服務。
  • 由於 Server 的建置與部署相當複雜,整個流程十分耗時。

摘要

  • MCP Server 後端採用 Fargate 與 Lambda 等 Serverless 平台。
  • CloudWatch、Parameter Store、ECR 與 ACM 等其他 AWS 服務,分別用於監控、儲存變數、託管映像檔及確保加密。
  • CDK 示範展示了如何在 AWS 上部署 MCP Server,也凸顯此流程的複雜度與所需時間。

MCP Client 互動與最佳實務總結

與 MCP Server 互動

  • 部署後端後,即可使用 MCP Client 與 MCP Server 互動。
  • 示範內容是與連接至外部網站(API)的 MCP Server 互動,以取得美國的天氣警報。
  • 範例:輸入經緯度以預測天氣警報,並接收來自 api.weather.gov 的回應。

最佳實務提示

  • 避免將 MCP Client 與 Callback Host 放在一起:
  • 建議不要將 MCP Client 與 MCP Server 的 Callback Host 放在同一台 Host 上。
  • 此做法有助於避免 Callback 逾時問題。

摘要

  • MCP Client 能有效地與 MCP Server 互動,從外部系統擷取資料。
  • 最佳實務是將 MCP Client 與 Callback Host 分開,以防止逾時問題。
  • 示範展示了如何透過 MCP Server 與外部 API 互動,以預測天氣警報。