בפוסט שפורסם בבלוג של AWS על ידי לואיס פליפה יפז באריוס, מוצגת ארכיטקטורה לאחזור מידע מבוסס סוכנים (Agentic Retrieval) בסביבה ארגונית, המבוססת על בסיסי ידע מנוהלים ב-Amazon Bedrock (Managed Knowledge Bases) ורכיב Amazon Bedrock AgentCore, לצד מערך ניטור והערכה בשבע שכבות הנפרס במלואו באמצעות AWS CloudFormation.
לפי מחברי הפוסט, צוותים שמשלבים מנגנוני RAG (Retrieval Augmented Generation) במודלי שפה בסיסיים מתחילים לרוב בצעד אחזור יחיד מול בסיס ידע בודד. גישה זו יעילה לשאלות פשוטות, אך כאשר שאלות מורכבות דורשות הצלבת מידע ממקורות שונים או קבלת החלטה לאיזה מקור לפנות, נדרש פתרון של אחזור סוכני. במודל זה, סוכן מנתח את השאלה, מנתב אותה לבסיס הידע המתאים, מבצע שאילתות אחזור איטרטיביות ומחזיר תשובה המלווה בציטוטים מפורשים. עם זאת, פעולה במעגל סוכני שבו מתקבלות החלטות ומתבצעים אחזורים חוזרים מקשה על ניטור השלבים שביצע הסוכן ובדיקת איכות התשובה הסופית.
המעבר מ-RAG קלאסי לאחזור סוכני ארגוני
ב-RAG קלאסי מבוצע שלב אחזור אחד ושלב יצירה (Generation) אחד בלבד. לעומת זאת, אחזור סוכני ארגוני מציב סוכן בעל יכולת היסק במעגל העבודה. הסוכן מחליט האם ומה לאחזר, יכול לבצע מספר אחזורים לצורך דיוק, בוחר את בסיס הידע הרלוונטי באמצעות ניתוב סמנטי, ורק לאחר מכן מנסח תשובה מבוססת עם ציטוטים. יכולת זו מסופקת כמאפיין מובנה ב-Amazon Bedrock Managed Knowledge Base באמצעות ה-API שנקרא AgenticRetrieveStream.
הפוסט מציין כי Amazon Bedrock מציע כעת בסיס ידע מנוהל (Type: MANAGED), שבו שירות Bedrock מנהל באופן מלא את קליטת המסמכים (Ingestion), האחסון, האינדוקס והאחזור, כולל יצירת וקטורים (Embedding) ודירוג מחדש (Reranking) באמצעות מודלים מנוהלים כברירת מחדל, ללא צורך בהקמה, הגדלה או תחזוקה של מסד נתונים וקטורי ייעודי.
בהשוואה לבסיס ידע בניהול עצמי (Customer-managed / DIY), בסיס ידע מנוהל תומך באחזור סוכני (AgenticRetrieveStream) ובאינטגרציה עם AgentCore Gateway, שאינם נתמכים במודל הניהול העצמי. כמו כן, בסיס הידע המנוהל כולל מאגר נתונים בעל יכולת התרחבות אוטומטית המנוהל במלואו על ידי Bedrock, מודלים מנוהלים מוטמעים ל-Embedding ו-Reranking (עם אפשרות לבחירת מודלים אחרים הזמינים ב-Bedrock), ואינו מצריך ניהול תשתית מסדי נתונים וקטוריים.
מבנה הפתרון וארבעת שלבי ה-CloudFormation
הפתרון מופץ באמצעות ארבע מחסניות (Stacks) מקושרות ב-AWS CloudFormation:
- מחסנית 01-knowledge-bases: מקימה דלי באמזון S3, שני בסיסי ידע מנוהלים (אחד לקורפוס פיננסי ואחד לקורפוס מזג אוויר), הגדרות IAM ומקורות נתונים, וכן רכיב מותאם אישית להעלאת מסמכים והפעלת סנכרון ראשוני.
- מחסנית 02-agentic-gateway: מקימה את שער Amazon Bedrock AgentCore Gateway (המבוסס על אימות AWS_IAM ופרוטוקול MCP - Model Context Protocol) עם יעד ייעודי לכל בסיס ידע המבוסס על המחבר המובנה bedrock-knowledge-bases, כך שכל בסיס ידע חושף כלי AgenticRetrieveStream ללא צורך בפונקציית AWS Lambda או במכולה נוספת.
- מחסנית 03-agent-runtime: מגדירה מאגר ב-Amazon ECR ופרויקט AWS CodeBuild שבונה תמונת סוכן Strands המנוטרת ב-OpenTelemetry, סביבת זמן ריצה של Amazon Bedrock AgentCore להרצת הסוכן, ניתוב יומנים ועקבות, ותצורת הערכה מקוונת.
- מחסנית 04-dashboards: יוצרת שני לוחות מחוונים ב-Amazon CloudWatch.
זרימת הנתונים מתבצעת בשני מפלסי ניתוב: מודל ההיסק של הסוכן מבצע ניתוב בין בסיסי הידע (Cross-knowledge-base routing), כאשר לכל בסיס ידע יש כלי אחזור ייעודי והסוכן בוחר בכלי המתאים לנושא השאלה. לאחר מכן, ה-API של AgenticRetrieveStream מבצע את העבודה הפנימית בתוך בסיס הידע (Within-knowledge-base work): הוא מפרק את השאלה לתת-שאילתות, מאחזר מידע באופן איטרטיבי ומייצר תשובה מנומקת ומצוטטת הזורמת בחזרה אל הסוכן דרך ה-Gateway. הסוכן בוחן האם המידע שהוחזר מספק, ואם לא, הוא מבצע איטרציה נוספת של אחזור בטרם ניסוח התשובה הסופית למשתמש.
שבע שכבות הניטור ושני לוחות המחוונים
סביבת זמן הריצה מייצרת מדדים ועקבות המוזנים ל-Amazon CloudWatch ול-AWS X-Ray ומאורגנים בשבע שכבות ניטור:
- שכבה 1 (L1 - KB-native metrics): מדדי קריאות, שגיאות והגבלות קצב (throttles) בכל בסיס ידע, המעידים על תקינות השירות ועמידה בעומסים.
- שכבה 2 (L2 - Ingestion): סטטוס משימות קליטת הנתונים ותוצאות עיבוד המסמכים ברמת הקובץ הבודד.
- שכבה 3 (L3 - Agentic retrieval quality): מדדי איכות אחזור עצמאיים (Reference-free) הכוללים ניצול הקשר, כיסוי מבוסס (grounded coverage) ושיעור כפילויות. מדדים אלה מוגדרים ללא צורך בציוני מקטעים (chunks) מאחר שה-API מחזיר תשובה סינתטית ומצוטטת.
- שכבה 4 (L4 - Gateway / MCP metrics): נפח קריאות הכלים וזמני השהייה בשער ה-Gateway.
- שכבה 5 (L5 - OTEL span tree): עץ עקבות (Traces) מלא של לולאת ה-Reason-and-Act של הסוכן, המציג כל שלב שביצע.
- שכבה 6 (L6 - Token usage): מעקב אחר שימוש באסימונים (gen_ai.usage) לפי הפעלה (Session) ומודל.
- שכבה 7 (L7 - Evaluation scores): ציוני הערכה הכוללים נכונות (Correctness), נאמנות למקור (Faithfulness), דיוק בבחירת כלים (Tool-selection accuracy) ורלוונטיות התשובה (Response relevance).
שכבות 1, 4 ו-5 מופקות באופן אוטומטי, בעוד שכבות 3, 6 ו-7 מפורסמות כמדדים מותאמים אישית ממחברת ההרצה (Notebook). המערכת כוללת שני לוחות מחוונים: לוח מחוונים A המציג תמונת ניטור סוכנית מקצה לקצה (למשל, עבור N שאילתות יוצגו כ-N הפעלות סוכן, 2N אחזורים, 3N קריאות מודל ו-5N פעולות Gateway MCP), ולוח מחוונים B המציג נתונים תפעוליים ועלויות ספציפיים לכל בסיס ידע (נפח אינדקס בבתים, נפח אחזורים, קריאות סוכניות ושימוש באסימונים).
הערכת איכות: לפי דרישה מול הערכה רציפה
הפתרון מציע שתי שיטות למדידת איכות התשובות:
- הערכה לפי דרישה (On-demand): מחברת ההרצה מפעילה את AgentCore Evaluate באמצעות מודל שפה כשופט (LLM-as-judge) על גבי העקבות של כל הפעלה עבור מדדי נכונות, נאמנות ודיוק בבחירת כלים, ומפרסמת את התוצאות ל-CloudWatch כשכבה 7. שיטה זו מתאימה לשלבי פיתוח ובדיקות טרום-השקה, שבהן משלמים רק על ההפעלות היזומות.
- הערכה רציפה (Continuous / Online): מחסנית 03 מגדירה רכיב מסוג AWS::BedrockAgentCore::OnlineEvaluationConfig הדוגם הפעלות חיות ומחשב ציונים אוטומטית בממשק CloudWatch ללא צורך בהרצת מחברת. בדוגמת הפוסט נקבע שיעור דגימה של 100% לצורכי הדגמה בלבד, אך המחברים מדגישים כי בסביבת ייצור יש להתאים את אחוז הדגימה לתקציב ולמדיניות הארגונית, מכיוון שכל דגימה מפעילה מודל שפה כשופט וגוררת עלויות נוספות.
מערך הנתונים, דרישות מוקדמות וניהול המערכת
מערך הנתונים בפתרון כולל שני קורפוסים נפרדים שמטרתם להדגים ניתוב סמנטי: קורפוס פיננסי סינתטי (דוח 10-K של חברת Octank Financial בגודל של כ-198 קילובייט) וקורפוס מזג אוויר אמיתי מתוך דוח של שירות המחקר של הקונגרס האמריקאי בנושא סופות טורנדו (IF12695 בגודל של כ-560 קילובייט). בתהליך הקליטה, Bedrock מבצע פענוח, חלוקה למקטעים (Chunking), הטמעה (Embedding) ואינדוקס אוטומטיים ללא צורך בהגדרת פרמטרים ידנית.
הדרישות המוקדמות כוללות חשבון AWS עם הרשאות ל-Bedrock, AgentCore runtime, AgentCore Gateway, IAM, CloudWatch, X-Ray, ECR, CodeBuild, S3, Lambda ו-CloudFormation; גישה למודל הסוכן (ברירת המחדל היא us.anthropic.claude-haiku-4-5-20251001-v1:0); הפעלת CloudWatch Transaction Search; ממשק AWS CLI v2; וסביבת Python 3.13 עם boto3 בגרסה 1.43 ומעלה. תהליך הפריסה מתבצע באמצעות הרצת פקודת deploy.sh, ולאחר סיום השימוש ניתן למחוק את כל ארבע המחסניות בסדר תלויות הפוך באמצעות פקודת cleanup.sh.