<?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="browser-basic-rag" name="문서 챗봇 · 준비된 예제 / 직접 업로드">
    <mxGraphModel dx="1360" dy="1040" grid="1" gridSize="10" page="1" pageScale="1" pageWidth="1360" pageHeight="1040" background="#151b17">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="browser-basic-rag-title" value="문서 챗봇 · 준비된 예제 / 직접 업로드" 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="browser-basic-rag-subtitle" value="예제 DB 즉시 답변 · 업로드 브라우저 임베딩 · PC Gemma 4 연결 · 2026.10.19" 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="browser" value="01  사용자 브라우저 · 예제는 모델 다운로드 없음" 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="230" as="geometry" />
        </mxCell>
        <mxCell id="example" value="예제 파일 · 질문 선택&#10;미리 저장한 DB 이용" 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="browser">
          <mxGeometry x="30" y="65" width="300" height="100" as="geometry" />
        </mxCell>
        <mxCell id="upload" 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="browser">
          <mxGeometry x="480" y="65" width="330" height="100" as="geometry" />
        </mxCell>
        <mxCell id="upload-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="upload">
          <mxGeometry x="17" y="33.0" width="34" height="34" as="geometry" />
        </mxCell>
        <mxCell id="upload-technology" value="직접 문서 업로드" 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="upload">
          <mxGeometry x="64" y="14" width="254" height="25" as="geometry" />
        </mxCell>
        <mxCell id="upload-role" value="본문 추출 · 200자 / 60자 중복" 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="upload">
          <mxGeometry x="64" y="42" width="254" height="22" as="geometry" />
        </mxCell>
        <mxCell id="upload-state" value="브라우저 MPNet q8 · 768차원" 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="upload">
          <mxGeometry x="64" y="66" width="254" height="18" as="geometry" />
        </mxCell>
        <mxCell id="chat" value="채팅 · 출처 표시&#10;예시 파일 보기 · TXT 다운로드" 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="browser">
          <mxGeometry x="940" y="65" width="330" height="100" as="geometry" />
        </mxCell>
        <mxCell id="web" value="02  Next.js 서버 · 인증키는 서버 전용" 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="420" width="700" height="240" as="geometry" />
        </mxCell>
        <mxCell id="api" 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="web">
          <mxGeometry x="30" y="65" width="280" height="115" as="geometry" />
        </mxCell>
        <mxCell id="api-icon" value="" style="shape=image;imageAspect=1;aspect=fixed;image=data:image/svg+xml,PHN2ZyBmaWxsPSIjZjBmM2YwIiByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+TmV4dC5qczwvdGl0bGU+PHBhdGggZD0iTTE4LjY2NSAyMS45NzhDMTYuNzU4IDIzLjI1NSAxNC40NjUgMjQgMTIgMjQgNS4zNzcgMjQgMCAxOC42MjMgMCAxMlM1LjM3NyAwIDEyIDBzMTIgNS4zNzcgMTIgMTJjMCAzLjU4My0xLjU3NCA2LjgwMS00LjA2NyA5LjAwMUw5LjIxOSA3LjJINy4ydjkuNTk2aDEuNjE1VjkuMjUxbDkuODUgMTIuNzI3Wm0tMy4zMzItOC41MzMgMS42IDIuMDYxVjcuMmgtMS42djYuMjQ1WiIvPjwvc3ZnPg==;" vertex="1" parent="api">
          <mxGeometry x="17" y="40.5" width="34" height="34" as="geometry" />
        </mxCell>
        <mxCell id="api-technology" value="Next.js API" 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="api">
          <mxGeometry x="64" y="14" width="204" height="25" as="geometry" />
        </mxCell>
        <mxCell id="api-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="api">
          <mxGeometry x="64" y="42" width="204" height="22" as="geometry" />
        </mxCell>
        <mxCell id="api-state" value="업로드는 쿠키 UUID · HttpOnly 확인" 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="api">
          <mxGeometry x="64" y="66" width="204" height="18" as="geometry" />
        </mxCell>
        <mxCell id="lookup" value="DB 검색 · 답변 분기&#10;예제 질문: 검토된 저장 답변&#10;직접 질문: 코사인 Top 3 → LLM" 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="web">
          <mxGeometry x="350" y="65" width="320" height="115" as="geometry" />
        </mxCell>
        <mxCell id="database" value="03  Supabase · PostgreSQL / pgvector" 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="790" y="420" width="540" height="240" as="geometry" />
        </mxCell>
        <mxCell id="db" 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="database">
          <mxGeometry x="30" y="65" width="480" height="115" as="geometry" />
        </mxCell>
        <mxCell id="db-icon" value="" style="shape=image;imageAspect=1;aspect=fixed;image=data:image/svg+xml,PHN2ZyBmaWxsPSIjNjNkZmE0IiByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+U3VwYWJhc2U8L3RpdGxlPjxwYXRoIGQ9Ik0xMS45IDEuMDM2Yy0uMDE1LS45ODYtMS4yNi0xLjQxLTEuODc0LS42MzdMLjc2NCAxMi4wNUMtLjMzIDEzLjQyNy42NSAxNS40NTUgMi40MDkgMTUuNDU1aDkuNTc5bC4xMTMgNy41MWMuMDE0Ljk4NSAxLjI1OSAxLjQwOCAxLjg3My42MzZsOS4yNjItMTEuNjUzYzEuMDkzLTEuMzc1LjExMy0zLjQwMy0xLjY0NS0zLjQwM2gtOS42NDJ6Ii8+PC9zdmc+;" vertex="1" parent="db">
          <mxGeometry x="17" y="40.5" width="34" height="34" as="geometry" />
        </mxCell>
        <mxCell id="db-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="db">
          <mxGeometry x="64" y="14" width="404" height="25" as="geometry" />
        </mxCell>
        <mxCell id="db-role" value="공용 예제 · 질문·답변 · vector(768)" 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="db">
          <mxGeometry x="64" y="42" width="404" height="22" as="geometry" />
        </mxCell>
        <mxCell id="db-state" value="개인 업로드는 UUID별 격리 · RLS" 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="db">
          <mxGeometry x="64" y="66" width="404" height="18" as="geometry" />
        </mxCell>
        <mxCell id="pc" value="04  모델 연결 · 인증 게이트웨이 / Cloudflare Tunnel" 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="750" width="1300" height="230" as="geometry" />
        </mxCell>
        <mxCell id="embed" 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="pc">
          <mxGeometry x="30" y="65" width="330" height="110" as="geometry" />
        </mxCell>
        <mxCell id="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="embed">
          <mxGeometry x="17" y="38.0" width="34" height="34" as="geometry" />
        </mxCell>
        <mxCell id="embed-technology" value="MPNet ONNX q8" 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="embed">
          <mxGeometry x="64" y="14" width="254" height="25" as="geometry" />
        </mxCell>
        <mxCell id="embed-role" value="예제의 새 질문 → 768차원 벡터" 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="embed">
          <mxGeometry x="64" y="42" width="254" height="22" as="geometry" />
        </mxCell>
        <mxCell id="embed-state" value="내 PC · 브라우저 다운로드 없음" 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="embed">
          <mxGeometry x="64" y="66" width="254" height="18" as="geometry" />
        </mxCell>
        <mxCell id="local" 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="pc">
          <mxGeometry x="480" y="65" width="330" height="110" as="geometry" />
        </mxCell>
        <mxCell id="local-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="local">
          <mxGeometry x="17" y="38.0" width="34" height="34" as="geometry" />
        </mxCell>
        <mxCell id="local-technology" value="Gemma 4 E2B QAT" 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="local">
          <mxGeometry x="64" y="14" width="254" height="25" as="geometry" />
        </mxCell>
        <mxCell id="local-role" value="질문 + DB 근거 → 답변" 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="local">
          <mxGeometry x="64" y="42" width="254" height="22" as="geometry" />
        </mxCell>
        <mxCell id="local-state" value="내 PC · Ollama · CPU · 비전 지원" 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="local">
          <mxGeometry x="64" y="66" width="254" height="18" as="geometry" />
        </mxCell>
        <mxCell id="external" 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="pc">
          <mxGeometry x="940" y="65" width="330" height="110" as="geometry" />
        </mxCell>
        <mxCell id="external-icon" value="" style="shape=image;imageAspect=1;aspect=fixed;image=data:image/svg+xml,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiM3Y2NlZDkiIHN0cm9rZS13aWR0aD0iMS43IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWdsb2JlIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMTAiPjwvY2lyY2xlPjxwYXRoIGQ9Ik0xMiAyYTE0LjUgMTQuNSAwIDAgMCAwIDIwIDE0LjUgMTQuNSAwIDAgMCAwLTIwIj48L3BhdGg+PHBhdGggZD0iTTIgMTJoMjAiPjwvcGF0aD48L3N2Zz4=;" vertex="1" parent="external">
          <mxGeometry x="17" y="38.0" width="34" height="34" as="geometry" />
        </mxCell>
        <mxCell id="external-technology" value="외부 LLM API" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=18;fontColor=#7cced9;spacing=0;fontStyle=1;" vertex="1" parent="external">
          <mxGeometry x="64" y="14" width="254" height="25" as="geometry" />
        </mxCell>
        <mxCell id="external-role" value="Chat Completions 호환" 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="external">
          <mxGeometry x="64" y="42" width="254" height="22" as="geometry" />
        </mxCell>
        <mxCell id="external-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="external">
          <mxGeometry x="64" y="66" width="254" height="18" as="geometry" />
        </mxCell>
        <mxCell id="example-api" value="임베딩 대기 없음" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;endSize=8;strokeWidth=1.4;strokeColor=#7ee2b8;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;" edge="1" parent="1" source="example" target="api">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="210" y="380" />
              <mxPoint x="200" y="380" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="upload-api" value="청크·벡터 저장 / 질문 벡터" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;endSize=8;strokeWidth=1.4;strokeColor=#7ee2b8;fontColor=#94aa9b;fontFamily=Arial;fontSize=12;labelBackgroundColor=#151b17;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="upload" target="api">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="675" y="385" />
              <mxPoint x="365" y="385" />
              <mxPoint x="365" y="470" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="api-lookup" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;endSize=8;strokeWidth=1.4;strokeColor=#7ee2b8;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;" edge="1" parent="1" source="api" target="lookup">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="lookup-db" value="저장·검색" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;endSize=8;strokeWidth=1.4;strokeColor=#7ee2b8;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;startArrow=block;startFill=1;startSize=8;" edge="1" parent="1" source="lookup" target="db">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="lookup-chat" value="답변 + 문서 근거" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;endSize=8;strokeWidth=1.4;strokeColor=#7ee2b8;fontColor=#94aa9b;fontFamily=Arial;fontSize=12;labelBackgroundColor=#151b17;exitX=1;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="lookup" target="chat">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="755" y="485" />
              <mxPoint x="755" y="375" />
              <mxPoint x="1135" y="375" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="lookup-embed" value="예제의 새 질문만" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;endSize=8;strokeWidth=1.4;strokeColor=#7ee2b8;fontColor=#94aa9b;fontFamily=Arial;fontSize=12;labelBackgroundColor=#151b17;exitX=0.3;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=block;startFill=1;startSize=8;" edge="1" parent="1" source="lookup" target="embed">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="476" y="705" />
              <mxPoint x="225" y="705" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="lookup-local" value="새 질문 · 개인 문서 답변" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;endSize=8;strokeWidth=1.4;strokeColor=#7ee2b8;fontColor=#94aa9b;fontFamily=Arial;fontSize=12;labelBackgroundColor=#151b17;exitX=0.9;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=block;startFill=1;startSize=8;" edge="1" parent="1" source="lookup" target="local">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="668" y="715" />
              <mxPoint x="675" y="715" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="lookup-external" 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.9;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;dashed=1;dashPattern=5 4;" edge="1" parent="1" source="lookup" target="external">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="760" y="588" />
              <mxPoint x="760" y="695" />
              <mxPoint x="1135" y="695" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="note" value="실선: 실제 연결  ·  점선: 외부 모델 연결 대기  ·  예제 질문은 검토한 근거와 실제 모델로 미리 생성한 답변을 DB에서 제공" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=middle;fillColor=none;strokeColor=none;fontFamily=Arial;fontSize=12;fontColor=#94aa9b;spacing=0;" vertex="1" parent="1">
          <mxGeometry x="30" y="1000" width="1300" height="24" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>