<?xml version='1.0' encoding='utf-8'?>
<mxfile host="drawio" version="26.0.0" agent="drawio-skill / justfun" modified="2026-10-15T00:00:00.000Z">
  <diagram id="rag" name="하이브리드 RAG 구성도">
    <mxGraphModel dx="1360" dy="850" grid="1" gridSize="10" page="1" pageScale="1" pageWidth="1360" pageHeight="850" background="#151b17">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="rag-title" value="하이브리드 RAG 구성도" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=23;fontColor=#dce8df;spacing=0;fontStyle=1;" vertex="1" parent="1">
          <mxGeometry x="30" y="20" width="1300" height="32" as="geometry" />
        </mxCell>
        <mxCell id="rag-subtitle" value="백엔드 연결 예정인 설계 흐름입니다. 현재 데모는 모의 이벤트와 고정 예시 답변을 사용합니다." style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=13;fontColor=#94aa9b;spacing=0;" vertex="1" parent="1">
          <mxGeometry x="30" y="59" width="1300" height="26" as="geometry" />
        </mxCell>
        <mxCell id="index-tier" value="사전 작업 · 질문할 때마다 반복하지 않음" style="swimlane;startSize=40;html=1;whiteSpace=wrap;rounded=1;arcSize=6;container=1;pointerEvents=0;collapsible=0;fillColor=#19231c;swimlaneFillColor=#151b17;strokeColor=#3c4c41;fontColor=#94aa9b;fontFamily=Arial;fontSize=13;align=left;spacingLeft=18;fontStyle=1;" vertex="1" parent="1">
          <mxGeometry x="30" y="110" width="1300" height="200" as="geometry" />
        </mxCell>
        <mxCell id="public-documents" value="" style="rounded=1;arcSize=10;html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=15;fontColor=#dce8df;fillColor=#252e28;strokeColor=#82978a;strokeWidth=1.3;spacing=12;align=center;verticalAlign=middle;dashed=1;dashPattern=5 4;" vertex="1" parent="index-tier">
          <mxGeometry x="30" y="65" width="260" height="100" as="geometry" />
        </mxCell>
        <mxCell id="public-documents-icon" value="" style="shape=image;imageAspect=1;aspect=fixed;image=data:image/svg+xml,PHN2ZyBmaWxsPSIjNjNkZmE0IiByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+U3VwYWJhc2U8L3RpdGxlPjxwYXRoIGQ9Ik0xMS45IDEuMDM2Yy0uMDE1LS45ODYtMS4yNi0xLjQxLTEuODc0LS42MzdMLjc2NCAxMi4wNUMtLjMzIDEzLjQyNy42NSAxNS40NTUgMi40MDkgMTUuNDU1aDkuNTc5bC4xMTMgNy41MWMuMDE0Ljk4NSAxLjI1OSAxLjQwOCAxLjg3My42MzZsOS4yNjItMTEuNjUzYzEuMDkzLTEuMzc1LjExMy0zLjQwMy0xLjY0NS0zLjQwM2gtOS42NDJ6Ii8+PC9zdmc+;" vertex="1" parent="public-documents">
          <mxGeometry x="17" y="33.0" width="34" height="34" as="geometry" />
        </mxCell>
        <mxCell id="public-documents-technology" value="Supabase" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=18;fontColor=#63dfa4;spacing=0;fontStyle=1;" vertex="1" parent="public-documents">
          <mxGeometry x="64" y="14" width="184" height="25" as="geometry" />
        </mxCell>
        <mxCell id="public-documents-role" value="공개 문서 · Storage" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=13;fontColor=#dce8df;spacing=0;" vertex="1" parent="public-documents">
          <mxGeometry x="64" y="42" width="184" height="22" as="geometry" />
        </mxCell>
        <mxCell id="public-documents-state" value="프로젝트 준비 · 연결 예정" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=11;fontColor=#94aa9b;spacing=0;" vertex="1" parent="public-documents">
          <mxGeometry x="64" y="66" width="184" height="18" as="geometry" />
        </mxCell>
        <mxCell id="chunk-embed" value="" style="rounded=1;arcSize=10;html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=15;fontColor=#dce8df;fillColor=#252e28;strokeColor=#82978a;strokeWidth=1.3;spacing=12;align=center;verticalAlign=middle;dashed=1;dashPattern=5 4;" vertex="1" parent="index-tier">
          <mxGeometry x="480" y="65" width="260" height="100" as="geometry" />
        </mxCell>
        <mxCell id="chunk-embed-icon" value="" style="shape=image;imageAspect=1;aspect=fixed;image=data:image/svg+xml,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiNkMWI1ZmIiIHN0cm9rZS13aWR0aD0iMS43IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWJyYWluLWNpcmN1aXQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNMTIgNWEzIDMgMCAxIDAtNS45OTcuMTI1IDQgNCAwIDAgMC0yLjUyNiA1Ljc3IDQgNCAwIDAgMCAuNTU2IDYuNTg4QTQgNCAwIDEgMCAxMiAxOFoiPjwvcGF0aD48cGF0aCBkPSJNOSAxM2E0LjUgNC41IDAgMCAwIDMtNCI+PC9wYXRoPjxwYXRoIGQ9Ik02LjAwMyA1LjEyNUEzIDMgMCAwIDAgNi40MDEgNi41Ij48L3BhdGg+PHBhdGggZD0iTTMuNDc3IDEwLjg5NmE0IDQgMCAwIDEgLjU4NS0uMzk2Ij48L3BhdGg+PHBhdGggZD0iTTYgMThhNCA0IDAgMCAxLTEuOTY3LS41MTYiPjwvcGF0aD48cGF0aCBkPSJNMTIgMTNoNCI+PC9wYXRoPjxwYXRoIGQ9Ik0xMiAxOGg2YTIgMiAwIDAgMSAyIDJ2MSI+PC9wYXRoPjxwYXRoIGQ9Ik0xMiA4aDgiPjwvcGF0aD48cGF0aCBkPSJNMTYgOFY1YTIgMiAwIDAgMSAyLTIiPjwvcGF0aD48Y2lyY2xlIGN4PSIxNiIgY3k9IjEzIiByPSIuNSI+PC9jaXJjbGU+PGNpcmNsZSBjeD0iMTgiIGN5PSIzIiByPSIuNSI+PC9jaXJjbGU+PGNpcmNsZSBjeD0iMjAiIGN5PSIyMSIgcj0iLjUiPjwvY2lyY2xlPjxjaXJjbGUgY3g9IjIwIiBjeT0iOCIgcj0iLjUiPjwvY2lyY2xlPjwvc3ZnPg==;" vertex="1" parent="chunk-embed">
          <mxGeometry x="17" y="33.0" width="34" height="34" as="geometry" />
        </mxCell>
        <mxCell id="chunk-embed-technology" value="Index Builder" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=18;fontColor=#d1b5fb;spacing=0;fontStyle=1;" vertex="1" parent="chunk-embed">
          <mxGeometry x="64" y="14" width="184" height="25" as="geometry" />
        </mxCell>
        <mxCell id="chunk-embed-role" value="임베딩 · 토큰화" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=13;fontColor=#dce8df;spacing=0;" vertex="1" parent="chunk-embed">
          <mxGeometry x="64" y="42" width="184" height="22" as="geometry" />
        </mxCell>
        <mxCell id="chunk-embed-state" value="모델·BM25 엔진 미선정" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=11;fontColor=#94aa9b;spacing=0;" vertex="1" parent="chunk-embed">
          <mxGeometry x="64" y="66" width="184" height="18" as="geometry" />
        </mxCell>
        <mxCell id="rag-vectors" value="" style="rounded=1;arcSize=10;html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=15;fontColor=#dce8df;fillColor=#252e28;strokeColor=#82978a;strokeWidth=1.3;spacing=12;align=center;verticalAlign=middle;dashed=1;dashPattern=5 4;" vertex="1" parent="index-tier">
          <mxGeometry x="950" y="65" width="300" height="100" as="geometry" />
        </mxCell>
        <mxCell id="rag-vectors-icon" value="" style="shape=image;imageAspect=1;aspect=fixed;image=data:image/svg+xml,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiM4ZGJiZmEiIHN0cm9rZS13aWR0aD0iMS43IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLXRleHQtc2VhcmNoIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTIxIDVIMyI+PC9wYXRoPjxwYXRoIGQ9Ik0xMCAxMkgzIj48L3BhdGg+PHBhdGggZD0iTTEwIDE5SDMiPjwvcGF0aD48Y2lyY2xlIGN4PSIxNyIgY3k9IjE1IiByPSIzIj48L2NpcmNsZT48cGF0aCBkPSJtMjEgMTktMS45LTEuOSI+PC9wYXRoPjwvc3ZnPg==;" vertex="1" parent="rag-vectors">
          <mxGeometry x="17" y="33.0" width="34" height="34" as="geometry" />
        </mxCell>
        <mxCell id="rag-vectors-technology" value="pgvector + BM25" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=18;fontColor=#8dbbfa;spacing=0;fontStyle=1;" vertex="1" parent="rag-vectors">
          <mxGeometry x="64" y="14" width="224" height="25" as="geometry" />
        </mxCell>
        <mxCell id="rag-vectors-role" value="벡터 · 키워드 인덱스" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=13;fontColor=#dce8df;spacing=0;" vertex="1" parent="rag-vectors">
          <mxGeometry x="64" y="42" width="224" height="22" as="geometry" />
        </mxCell>
        <mxCell id="rag-vectors-state" value="별도 검색 기능 · 연결 예정" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=11;fontColor=#94aa9b;spacing=0;" vertex="1" parent="rag-vectors">
          <mxGeometry x="64" y="66" width="224" height="18" as="geometry" />
        </mxCell>
        <mxCell id="documents-to-embedding" value="문서 적재" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;endSize=8;strokeWidth=1.4;strokeColor=#91a699;fontColor=#94aa9b;fontFamily=Arial;fontSize=12;labelBackgroundColor=#151b17;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;dashed=1;dashPattern=5 4;" edge="1" parent="1" source="public-documents" target="chunk-embed">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="embedding-to-vectors" value="색인" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;endSize=8;strokeWidth=1.4;strokeColor=#91a699;fontColor=#94aa9b;fontFamily=Arial;fontSize=12;labelBackgroundColor=#151b17;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;dashed=1;dashPattern=5 4;" edge="1" parent="1" source="chunk-embed" target="rag-vectors">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="runtime-caption" value="질문 실행 · 5단계 파이프라인" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=16;fontColor=#dce8df;spacing=0;fontStyle=1;" vertex="1" parent="1">
          <mxGeometry x="30" y="370" width="300" height="30" as="geometry" />
        </mxCell>
        <mxCell id="rag-validate" value="" style="rounded=1;arcSize=10;html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=15;fontColor=#dce8df;fillColor=#252e28;strokeColor=#82978a;strokeWidth=1.3;spacing=12;align=center;verticalAlign=middle;dashed=1;dashPattern=5 4;" vertex="1" parent="1">
          <mxGeometry x="30" y="440" width="230" height="100" as="geometry" />
        </mxCell>
        <mxCell id="rag-validate-icon" value="" style="shape=image;imageAspect=1;aspect=fixed;image=data:image/svg+xml,PHN2ZyBmaWxsPSIjNDVkNmMxIiByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+RmFzdEFQSTwvdGl0bGU+PHBhdGggZD0iTTEyIC4wMzg3QzUuMzcyOS4wMzg0LjAwMDMgNS4zOTMxIDAgMTEuOTk4OGMtLjAwMSA2LjYwNjYgNS4zNzIgMTEuOTYyOCAxMiAxMS45NjI1IDYuNjI4LjAwMDMgMTIuMDAxLTUuMzU1OSAxMi0xMS45NjI1LS4wMDAzLTYuNjA1Ny01LjM3MjktMTEuOTYwNC0xMi0xMS45Nm0tLjgyOSA1LjQxNTNoNy41NWwtNy41ODA1IDUuMzI4NGg1LjE4MjhMNS4yNzkgMTguNTQzNnEyLjk0NjYtNi41NDQ0IDUuODkyLTEzLjA4OTYiLz48L3N2Zz4=;" vertex="1" parent="rag-validate">
          <mxGeometry x="17" y="33.0" width="34" height="34" as="geometry" />
        </mxCell>
        <mxCell id="rag-validate-technology" value="FastAPI" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=18;fontColor=#45d6c1;spacing=0;fontStyle=1;" vertex="1" parent="rag-validate">
          <mxGeometry x="64" y="14" width="154" height="25" as="geometry" />
        </mxCell>
        <mxCell id="rag-validate-role" value="입력 검증 · 요청 제한" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=13;fontColor=#dce8df;spacing=0;" vertex="1" parent="rag-validate">
          <mxGeometry x="64" y="42" width="154" height="22" as="geometry" />
        </mxCell>
        <mxCell id="rag-validate-state" value="실행 API · 연결 예정" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=11;fontColor=#94aa9b;spacing=0;" vertex="1" parent="rag-validate">
          <mxGeometry x="64" y="66" width="154" height="18" as="geometry" />
        </mxCell>
        <mxCell id="rag-retrieve" value="" style="rounded=1;arcSize=10;html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=15;fontColor=#dce8df;fillColor=#252e28;strokeColor=#82978a;strokeWidth=1.3;spacing=12;align=center;verticalAlign=middle;dashed=1;dashPattern=5 4;" vertex="1" parent="1">
          <mxGeometry x="290" y="440" width="230" height="100" as="geometry" />
        </mxCell>
        <mxCell id="rag-retrieve-icon" value="" style="shape=image;imageAspect=1;aspect=fixed;image=data:image/svg+xml,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiM4ZGJiZmEiIHN0cm9rZS13aWR0aD0iMS43IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLXRleHQtc2VhcmNoIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTIxIDVIMyI+PC9wYXRoPjxwYXRoIGQ9Ik0xMCAxMkgzIj48L3BhdGg+PHBhdGggZD0iTTEwIDE5SDMiPjwvcGF0aD48Y2lyY2xlIGN4PSIxNyIgY3k9IjE1IiByPSIzIj48L2NpcmNsZT48cGF0aCBkPSJtMjEgMTktMS45LTEuOSI+PC9wYXRoPjwvc3ZnPg==;" vertex="1" parent="rag-retrieve">
          <mxGeometry x="17" y="33.0" width="34" height="34" as="geometry" />
        </mxCell>
        <mxCell id="rag-retrieve-technology" value="BM25 + Vector" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=18;fontColor=#8dbbfa;spacing=0;fontStyle=1;" vertex="1" parent="rag-retrieve">
          <mxGeometry x="64" y="14" width="154" height="25" as="geometry" />
        </mxCell>
        <mxCell id="rag-retrieve-role" value="키워드 + 의미 후보 검색" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=13;fontColor=#dce8df;spacing=0;" vertex="1" parent="rag-retrieve">
          <mxGeometry x="64" y="42" width="154" height="22" as="geometry" />
        </mxCell>
        <mxCell id="rag-retrieve-state" value="두 검색 병행 · 예정" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=11;fontColor=#94aa9b;spacing=0;" vertex="1" parent="rag-retrieve">
          <mxGeometry x="64" y="66" width="154" height="18" as="geometry" />
        </mxCell>
        <mxCell id="rag-select" value="" style="rounded=1;arcSize=10;html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=15;fontColor=#dce8df;fillColor=#252e28;strokeColor=#82978a;strokeWidth=1.3;spacing=12;align=center;verticalAlign=middle;dashed=1;dashPattern=5 4;" vertex="1" parent="1">
          <mxGeometry x="550" y="440" width="230" height="100" as="geometry" />
        </mxCell>
        <mxCell id="rag-select-icon" value="" style="shape=image;imageAspect=1;aspect=fixed;image=data:image/svg+xml,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiNhN2M1YTkiIHN0cm9rZS13aWR0aD0iMS43IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWNvZGUteG1sIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0ibTE4IDE2IDQtNC00LTQiPjwvcGF0aD48cGF0aCBkPSJtNiA4LTQgNCA0IDQiPjwvcGF0aD48cGF0aCBkPSJtMTQuNSA0LTUgMTYiPjwvcGF0aD48L3N2Zz4=;" vertex="1" parent="rag-select">
          <mxGeometry x="17" y="33.0" width="34" height="34" as="geometry" />
        </mxCell>
        <mxCell id="rag-select-technology" value="RRF" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=18;fontColor=#a7c5a9;spacing=0;fontStyle=1;" vertex="1" parent="rag-select">
          <mxGeometry x="64" y="14" width="154" height="25" as="geometry" />
        </mxCell>
        <mxCell id="rag-select-role" value="검색 순위 통합 · 근거 선별" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=13;fontColor=#dce8df;spacing=0;" vertex="1" parent="rag-select">
          <mxGeometry x="64" y="42" width="154" height="22" as="geometry" />
        </mxCell>
        <mxCell id="rag-select-state" value="점수 대신 순위 결합 · 예정" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=11;fontColor=#94aa9b;spacing=0;" vertex="1" parent="rag-select">
          <mxGeometry x="64" y="66" width="154" height="18" as="geometry" />
        </mxCell>
        <mxCell id="rag-generate" value="" style="rounded=1;arcSize=10;html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=15;fontColor=#dce8df;fillColor=#252e28;strokeColor=#82978a;strokeWidth=1.3;spacing=12;align=center;verticalAlign=middle;dashed=1;dashPattern=5 4;" vertex="1" parent="1">
          <mxGeometry x="810" y="440" width="230" height="100" as="geometry" />
        </mxCell>
        <mxCell id="rag-generate-icon" value="" style="shape=image;imageAspect=1;aspect=fixed;image=data:image/svg+xml,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiNlZGMyOGEiIHN0cm9rZS13aWR0aD0iMS43IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWNwdSIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGQ9Ik0xMiAyMHYyIj48L3BhdGg+PHBhdGggZD0iTTEyIDJ2MiI+PC9wYXRoPjxwYXRoIGQ9Ik0xNyAyMHYyIj48L3BhdGg+PHBhdGggZD0iTTE3IDJ2MiI+PC9wYXRoPjxwYXRoIGQ9Ik0yIDEyaDIiPjwvcGF0aD48cGF0aCBkPSJNMiAxN2gyIj48L3BhdGg+PHBhdGggZD0iTTIgN2gyIj48L3BhdGg+PHBhdGggZD0iTTIwIDEyaDIiPjwvcGF0aD48cGF0aCBkPSJNMjAgMTdoMiI+PC9wYXRoPjxwYXRoIGQ9Ik0yMCA3aDIiPjwvcGF0aD48cGF0aCBkPSJNNyAyMHYyIj48L3BhdGg+PHBhdGggZD0iTTcgMnYyIj48L3BhdGg+PHJlY3QgeD0iNCIgeT0iNCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiByeD0iMiI+PC9yZWN0PjxyZWN0IHg9IjgiIHk9IjgiIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHJ4PSIxIj48L3JlY3Q+PC9zdmc+;" vertex="1" parent="rag-generate">
          <mxGeometry x="17" y="33.0" width="34" height="34" as="geometry" />
        </mxCell>
        <mxCell id="rag-generate-technology" value="Local LLM" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=18;fontColor=#edc28a;spacing=0;fontStyle=1;" vertex="1" parent="rag-generate">
          <mxGeometry x="64" y="14" width="154" height="25" as="geometry" />
        </mxCell>
        <mxCell id="rag-generate-role" value="근거 기반 답변 생성" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=13;fontColor=#dce8df;spacing=0;" vertex="1" parent="rag-generate">
          <mxGeometry x="64" y="42" width="154" height="22" as="geometry" />
        </mxCell>
        <mxCell id="rag-generate-state" value="모델 미선정 · 연결 예정" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=11;fontColor=#94aa9b;spacing=0;" vertex="1" parent="rag-generate">
          <mxGeometry x="64" y="66" width="154" height="18" as="geometry" />
        </mxCell>
        <mxCell id="rag-verify" value="출력 검증&#10;답변·출처 확인" style="rounded=1;arcSize=10;html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=15;fontColor=#dce8df;fillColor=#252e28;strokeColor=#82978a;strokeWidth=1.3;spacing=12;align=center;verticalAlign=middle;dashed=1;dashPattern=5 4;" vertex="1" parent="1">
          <mxGeometry x="1070" y="440" width="230" height="100" as="geometry" />
        </mxCell>
        <mxCell id="rag-validate-to-rag-retrieve" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;endSize=8;strokeWidth=1.4;strokeColor=#91a699;fontColor=#94aa9b;fontFamily=Arial;fontSize=12;labelBackgroundColor=#151b17;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;dashed=1;dashPattern=5 4;" edge="1" parent="1" source="rag-validate" target="rag-retrieve">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="rag-retrieve-to-rag-select" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;endSize=8;strokeWidth=1.4;strokeColor=#91a699;fontColor=#94aa9b;fontFamily=Arial;fontSize=12;labelBackgroundColor=#151b17;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;dashed=1;dashPattern=5 4;" edge="1" parent="1" source="rag-retrieve" target="rag-select">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="rag-select-to-rag-generate" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;endSize=8;strokeWidth=1.4;strokeColor=#91a699;fontColor=#94aa9b;fontFamily=Arial;fontSize=12;labelBackgroundColor=#151b17;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;dashed=1;dashPattern=5 4;" edge="1" parent="1" source="rag-select" target="rag-generate">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="rag-generate-to-rag-verify" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;endSize=8;strokeWidth=1.4;strokeColor=#91a699;fontColor=#94aa9b;fontFamily=Arial;fontSize=12;labelBackgroundColor=#151b17;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;dashed=1;dashPattern=5 4;" edge="1" parent="1" source="rag-generate" target="rag-verify">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="vectors-to-retrieval" value="검색 근거" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;endSize=8;strokeWidth=1.4;strokeColor=#91a699;fontColor=#94aa9b;fontFamily=Arial;fontSize=12;labelBackgroundColor=#151b17;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;dashed=1;dashPattern=5 4;" edge="1" parent="1" source="rag-vectors" target="rag-retrieve">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1130" y="340" />
              <mxPoint x="405" y="340" />
            </Array>
            <mxPoint x="0" y="-16" as="offset" />
          </mxGeometry>
        </mxCell>
        <mxCell id="insufficient-evidence" value="근거 부족 안내&#10;추측 답변 대신 종료" style="rounded=1;arcSize=10;html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=15;fontColor=#dce8df;fillColor=#252e28;strokeColor=#82978a;strokeWidth=1.3;spacing=12;align=center;verticalAlign=middle;dashed=1;dashPattern=5 4;" vertex="1" parent="1">
          <mxGeometry x="550" y="670" width="230" height="90" as="geometry" />
        </mxCell>
        <mxCell id="answer-with-sources" value="답변 + 출처&#10;문서명 · 청크 위치" style="rounded=1;arcSize=10;html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=15;fontColor=#dce8df;fillColor=#252e28;strokeColor=#82978a;strokeWidth=1.3;spacing=12;align=center;verticalAlign=middle;dashed=1;dashPattern=5 4;" vertex="1" parent="1">
          <mxGeometry x="1070" y="670" width="230" height="90" as="geometry" />
        </mxCell>
        <mxCell id="rag-ui" value="" style="rounded=1;arcSize=10;html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=15;fontColor=#dce8df;fillColor=#223c2c;strokeColor=#7ee2b8;strokeWidth=1.3;spacing=12;align=center;verticalAlign=middle;" vertex="1" parent="1">
          <mxGeometry x="30" y="665" width="230" height="100" as="geometry" />
        </mxCell>
        <mxCell id="rag-ui-icon" value="" style="shape=image;imageAspect=1;aspect=fixed;image=data:image/svg+xml,PHN2ZyBmaWxsPSIjZjBmM2YwIiByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+TmV4dC5qczwvdGl0bGU+PHBhdGggZD0iTTE4LjY2NSAyMS45NzhDMTYuNzU4IDIzLjI1NSAxNC40NjUgMjQgMTIgMjQgNS4zNzcgMjQgMCAxOC42MjMgMCAxMlM1LjM3NyAwIDEyIDBzMTIgNS4zNzcgMTIgMTJjMCAzLjU4My0xLjU3NCA2LjgwMS00LjA2NyA5LjAwMUw5LjIxOSA3LjJINy4ydjkuNTk2aDEuNjE1VjkuMjUxbDkuODUgMTIuNzI3Wm0tMy4zMzItOC41MzMgMS42IDIuMDYxVjcuMmgtMS42djYuMjQ1WiIvPjwvc3ZnPg==;" vertex="1" parent="rag-ui">
          <mxGeometry x="17" y="33.0" width="34" height="34" as="geometry" />
        </mxCell>
        <mxCell id="rag-ui-technology" value="Next.js" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=18;fontColor=#f0f3f0;spacing=0;fontStyle=1;" vertex="1" parent="rag-ui">
          <mxGeometry x="64" y="14" width="154" height="25" as="geometry" />
        </mxCell>
        <mxCell id="rag-ui-role" value="질문 · 답변 화면" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=13;fontColor=#dce8df;spacing=0;" vertex="1" parent="rag-ui">
          <mxGeometry x="64" y="42" width="154" height="22" as="geometry" />
        </mxCell>
        <mxCell id="rag-ui-state" value="화면 구현 · Vercel 배포" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=11;fontColor=#94aa9b;spacing=0;" vertex="1" parent="rag-ui">
          <mxGeometry x="64" y="66" width="154" height="18" as="geometry" />
        </mxCell>
        <mxCell id="ui-to-rag-api" value="질문 요청 · 연결 예정" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;endSize=8;strokeWidth=1.4;strokeColor=#91a699;fontColor=#94aa9b;fontFamily=Arial;fontSize=12;labelBackgroundColor=#151b17;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;dashed=1;dashPattern=5 4;" edge="1" parent="1" source="rag-ui" target="rag-validate">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="80" y="0" as="offset" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rag-no-evidence" value="근거 부족" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;endSize=8;strokeWidth=1.4;strokeColor=#91a699;fontColor=#94aa9b;fontFamily=Arial;fontSize=12;labelBackgroundColor=#151b17;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;dashed=1;dashPattern=5 4;" edge="1" parent="1" source="rag-select" target="insufficient-evidence">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="70" y="0" as="offset" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rag-answer-result" value="결과" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;endSize=8;strokeWidth=1.4;strokeColor=#91a699;fontColor=#94aa9b;fontFamily=Arial;fontSize=12;labelBackgroundColor=#151b17;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;dashed=1;dashPattern=5 4;" edge="1" parent="1" source="rag-verify" target="answer-with-sources">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="50" y="0" as="offset" />
          </mxGeometry>
        </mxCell>
        <mxCell id="rag-event-note" value="BM25 검색 엔진과 한국어 토큰화 정책은 미선정입니다. 실제 키워드 검색과 모델은 연결 예정입니다." style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=13;fontColor=#94aa9b;spacing=0;" vertex="1" parent="1">
          <mxGeometry x="30" y="790" width="1270" height="25" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>