<mxfile host="archify-aws" agent="archify-aws" version="1">
  <diagram name="RAG chat assistant on Amazon Bedrock" id="xWZjBuAiXqehOI2tDQvv">
    <mxGraphModel dx="1192" dy="820" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1192" pageHeight="820" math="0" shadow="0">
      <root>
        <mxCell id="0"/>
        <mxCell id="1" parent="0"/>
<mxCell id="title" value="RAG chat assistant on Amazon Bedrock" style="text;html=1;align=left;verticalAlign=top;fontSize=20;fontStyle=1;fontColor=#000000;whiteSpace=wrap;" vertex="1" parent="1"><mxGeometry x="40" y="24" width="1112" height="30" as="geometry"/></mxCell>
<mxCell id="subtitle" value="Authenticated API → orchestrator → guarded model call grounded by a vector store, with invocation logging" style="text;html=1;align=left;verticalAlign=top;fontSize=12;fontColor=#545B64;whiteSpace=wrap;" vertex="1" parent="1"><mxGeometry x="40" y="56" width="1112" height="24" as="geometry"/></mxCell>
<mxCell id="g-cloud" value="AWS Cloud" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=1;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_aws_cloud_alt;strokeColor=#232F3E;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#232F3E;dashed=0;" vertex="1" parent="1"><mxGeometry x="216" y="116" width="936" height="664" as="geometry"/></mxCell>
<mxCell id="g-region" value="Region" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=1;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_region;strokeColor=#00A4A6;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#147EBA;dashed=1;" vertex="1" parent="g-cloud"><mxGeometry x="228" y="48" width="684" height="592" as="geometry"/></mxCell>
<mxCell id="g-ai" value="Generative AI" style="fillColor=none;verticalAlign=top;fontStyle=0;whiteSpace=wrap;html=1;container=1;pointerEvents=0;collapsible=0;recursiveResize=0;strokeColor=#01A88D;fontColor=#01A88D;align=left;spacingLeft=40;" vertex="1" parent="g-region"><mxGeometry x="210" y="48" width="172" height="520" as="geometry"/></mxCell>
<mxCell id="gi-ai" value="" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#01A88D;strokeColor=#ffffff;dashed=0;html=1;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.bedrock;" vertex="1" parent="g-ai"><mxGeometry x="0" y="0" width="32" height="32" as="geometry"/></mxCell>
<mxCell id="g-data" value="Data and operations" style="fillColor=none;verticalAlign=top;fontStyle=0;whiteSpace=wrap;html=1;container=1;pointerEvents=0;collapsible=0;recursiveResize=0;strokeColor=#5A6C86;fontColor=#5A6C86;" vertex="1" parent="g-region"><mxGeometry x="472" y="48" width="188" height="520" as="geometry"/></mxCell>
<mxCell id="n-users" value="Users" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#232F3D;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.users;" vertex="1" parent="1"><mxGeometry x="56" y="428" width="64" height="64" as="geometry"/></mxCell>
<mxCell id="n-cognito" value="Amazon Cognito" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#DD344C;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.cognito;" vertex="1" parent="1"><mxGeometry x="270" y="260" width="64" height="64" as="geometry"/></mxCell>
<mxCell id="n-apigw" value="Amazon API Gateway" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#8C4FFF;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.api_gateway;" vertex="1" parent="1"><mxGeometry x="270" y="428" width="64" height="64" as="geometry"/></mxCell>
<mxCell id="n-waf" value="AWS WAF" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#DD344C;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.waf;" vertex="1" parent="1"><mxGeometry x="270" y="596" width="64" height="64" as="geometry"/></mxCell>
<mxCell id="n-orch" value="AWS Lambda&lt;br&gt;&lt;font style=&quot;font-size:10px&quot; color=&quot;#545B64&quot;&gt;orchestrator&lt;/font&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#ED7100;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.lambda;" vertex="1" parent="g-region"><mxGeometry x="40" y="264" width="64" height="64" as="geometry"/></mxCell>
<mxCell id="n-guard" value="Bedrock Guardrails" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#01A88D;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.bedrock;" vertex="1" parent="g-ai"><mxGeometry x="54" y="48" width="64" height="64" as="geometry"/></mxCell>
<mxCell id="n-fm" value="Amazon Bedrock&lt;br&gt;&lt;font style=&quot;font-size:10px&quot; color=&quot;#545B64&quot;&gt;foundation model&lt;/font&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#01A88D;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.bedrock;" vertex="1" parent="g-ai"><mxGeometry x="54" y="216" width="64" height="64" as="geometry"/></mxCell>
<mxCell id="n-kb" value="Amazon OpenSearch&lt;br&gt;Service&lt;br&gt;&lt;font style=&quot;font-size:10px&quot; color=&quot;#545B64&quot;&gt;vector store&lt;/font&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#8C4FFF;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.elasticsearch_service;" vertex="1" parent="g-ai"><mxGeometry x="54" y="384" width="64" height="64" as="geometry"/></mxCell>
<mxCell id="n-cw" value="Amazon CloudWatch&lt;br&gt;&lt;font style=&quot;font-size:10px&quot; color=&quot;#545B64&quot;&gt;invocation logs&lt;/font&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#E7157B;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.cloudwatch_2;" vertex="1" parent="g-data"><mxGeometry x="62" y="48" width="64" height="64" as="geometry"/></mxCell>
<mxCell id="n-kms" value="AWS KMS&lt;br&gt;&lt;font style=&quot;font-size:10px&quot; color=&quot;#545B64&quot;&gt;encryption keys&lt;/font&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#DD344C;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.key_management_service;" vertex="1" parent="g-data"><mxGeometry x="62" y="216" width="64" height="64" as="geometry"/></mxCell>
<mxCell id="n-docs" value="Amazon S3&lt;br&gt;&lt;font style=&quot;font-size:10px&quot; color=&quot;#545B64&quot;&gt;source documents&lt;/font&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#7AA116;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.s3;" vertex="1" parent="g-data"><mxGeometry x="62" y="384" width="64" height="64" as="geometry"/></mxCell>
<mxCell id="e-0" value="HTTPS + JWT" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#232F3E;strokeWidth=2;labelBackgroundColor=#ffffff;fontSize=11;fontColor=#232F3E;endArrow=open;endFill=0;endSize=8;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="n-users" target="n-apigw"><mxGeometry x="0" relative="1" as="geometry"></mxGeometry></mxCell>
<object label="1" tooltip="1. Users → Amazon API Gateway (HTTPS + JWT)" id="b-0"><mxCell style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;strokeColor=#ffffff;fontColor=#ffffff;fontStyle=1;fontSize=12;" vertex="1" parent="1"><mxGeometry x="133" y="449" width="22" height="22" as="geometry"/></mxCell></object>
<mxCell id="e-1" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#232F3E;strokeWidth=2;labelBackgroundColor=#ffffff;fontSize=11;fontColor=#232F3E;endArrow=open;endFill=0;endSize=8;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="n-apigw" target="n-orch"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<object label="2" tooltip="2. Amazon API Gateway → AWS Lambda" id="b-1"><mxCell style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;strokeColor=#ffffff;fontColor=#ffffff;fontStyle=1;fontSize=12;" vertex="1" parent="1"><mxGeometry x="347" y="449" width="22" height="22" as="geometry"/></mxCell></object>
<mxCell id="e-2" value="invoke" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#232F3E;strokeWidth=2;labelBackgroundColor=#ffffff;fontSize=11;fontColor=#232F3E;endArrow=open;endFill=0;endSize=8;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="g-region" source="n-orch" target="n-fm"><mxGeometry x="0" relative="1" as="geometry"></mxGeometry></mxCell>
<object label="5" tooltip="5. AWS Lambda → Amazon Bedrock (invoke)" id="b-2"><mxCell style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;strokeColor=#ffffff;fontColor=#ffffff;fontStyle=1;fontSize=12;" vertex="1" parent="g-region"><mxGeometry x="137" y="285" width="22" height="22" as="geometry"/></mxCell></object>
<mxCell id="e-3" value="authorizer" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#232F3E;strokeWidth=2;labelBackgroundColor=#ffffff;fontSize=11;fontColor=#232F3E;endArrow=open;endFill=0;endSize=8;dashed=1;exitX=0.5;exitY=1;exitDx=0;exitDy=48;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="n-cognito" target="n-apigw"><mxGeometry x="0" relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="e-4" value="protects" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#232F3E;strokeWidth=2;labelBackgroundColor=#ffffff;fontSize=11;fontColor=#232F3E;endArrow=open;endFill=0;endSize=8;dashed=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=1;entryDx=0;entryDy=48;entryPerimeter=0;" edge="1" parent="1" source="n-waf" target="n-apigw"><mxGeometry x="0" relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="e-5" value="ingest" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#232F3E;strokeWidth=2;labelBackgroundColor=#ffffff;fontSize=11;fontColor=#232F3E;endArrow=open;endFill=0;endSize=8;dashed=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="g-region" source="n-docs" target="n-kb"><mxGeometry x="0" relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="e-6" value="retrieve" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#232F3E;strokeWidth=2;labelBackgroundColor=#ffffff;fontSize=11;fontColor=#232F3E;endArrow=open;endFill=0;endSize=8;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="g-region" source="n-orch" target="n-kb"><mxGeometry x="-0.3" relative="1" as="geometry"><Array as="points"><mxPoint x="136" y="296"/><mxPoint x="136" y="464"/></Array></mxGeometry></mxCell>
<object label="3" tooltip="3. AWS Lambda → Amazon OpenSearch Service (retrieve)" id="b-6"><mxCell style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;strokeColor=#ffffff;fontColor=#ffffff;fontStyle=1;fontSize=12;" vertex="1" parent="g-region"><mxGeometry x="229" y="453" width="22" height="22" as="geometry"/></mxCell></object>
<mxCell id="e-7" value="check prompt" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#232F3E;strokeWidth=2;labelBackgroundColor=#ffffff;fontSize=11;fontColor=#232F3E;endArrow=open;endFill=0;endSize=8;exitX=0.5;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="g-region" source="n-orch" target="n-guard"><mxGeometry x="0.4" relative="1" as="geometry"><Array as="points"><mxPoint x="72" y="128"/></Array></mxGeometry></mxCell>
<object label="4" tooltip="4. AWS Lambda → Bedrock Guardrails (check prompt)" id="b-7"><mxCell style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;strokeColor=#ffffff;fontColor=#ffffff;fontStyle=1;fontSize=12;" vertex="1" parent="g-region"><mxGeometry x="61" y="229" width="22" height="22" as="geometry"/></mxCell></object>
<mxCell id="e-8" value="logs" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#232F3E;strokeWidth=2;labelBackgroundColor=#ffffff;fontSize=11;fontColor=#232F3E;endArrow=open;endFill=0;endSize=8;dashed=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="g-region" source="n-fm" target="n-cw"><mxGeometry x="0" relative="1" as="geometry"><Array as="points"><mxPoint x="431" y="296"/><mxPoint x="431" y="128"/></Array></mxGeometry></mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
