아키텍처

헥사고날 백엔드, 데이터, 모델 평가

구성

[프론트엔드 Next.js]  ── Vercel 배포
        |  REST
[백엔드 FastAPI]  ── 로컬 GPU 머신 + Cloudflare Tunnel
   apps/ (컨텍스트)  ×  core/   (헥사고날: adapter/inbound · adapter/outbound)
        |
PostgreSQL + pgvector  ·  Neo4j  ·  Redis   (로컬 Docker)

(근거: 허브 지식베이스, 팀 저장소 docs/deploy-vercel-cloudflare.md)

기술 구성

갈래 내용
백엔드 FastAPI · SQLAlchemy 2.0 · psycopg 3 · alembic · pydantic-settings · dependency-injector
구조 헥사고날 — apps/(컨텍스트) × core/, adapter/inbound · adapter/outbound
공간 연산 pyproj · shapely (행정동 경계, 좌표 변환)
저장소 PostgreSQL + pgvector · Neo4j · Redis
프론트 Next.js
배포 프론트 Vercel, 백엔드는 로컬 GPU 머신 + Cloudflare Tunnel, DB 는 로컬 Docker

백엔드 apps/ 에는 finance(재무 엔진), matching(상품 매칭), product, consultation(상담자료), analysis, intent, rag, indicator, metric, funding, news, rent, shock, store, tobacco, childcare, convenience, dataset, master 컨텍스트가 있습니다. 데이터베이스는 29개 테이블입니다. (근거: 팀 저장소 backend/apps, docs/erd.md)

계산과 AI 의 분담

재무 계산과 비교표는 결정론 코드(finance 컨텍스트의 엔진)가 만들고, LLM 은 계산된 값을 읽어 설명과 상담 질문만 씁니다. 지표가 전부 없는 업종은 AI 를 부르지 않고 「집계되지 않았을 뿐 나쁘다는 뜻이 아니다」라는 문구를 코드가 씁니다. 판정을 생성 모델에 맡기지 않는 쪽입니다. (근거: 허브 지식베이스, docs/proposal-summary.md)

데이터

전부 공공데이터입니다. (근거: 허브 지식베이스)

데이터 규모 · 비고
RAG 코퍼스 3,448건 — 지원공고 1,693 · 뉴스 1,755
행정동 대구 8개 구·군(군위군 제외) 144개 행정동, 경계 142곳
업종 지표 11업종 (인허가 7업종 + 지오코딩으로 추가한 학원·부동산·편의점·어린이집)
주민등록 인구 4만 8천 행
임대료 786행
충격 이벤트 29건
지하철 승차 2,632행
확보하지 못한 것 카드 소비·생활인구(DIP 빅데이터활용센터)

모델 평가

온라인(운영)과 오프라인(장애·한도 초과·네트워크 없는 심사 환경) 두 경로를 모두 평가했습니다. 운영은 Gemini 임베딩·생성이고, 오프라인 후보는 Ollama 의 qwen3-embedding:4b · bge-m3 입니다. 로컬 3종과 외부 6종을 같은 코퍼스 · 같은 질문 · 같은 지표로 돌렸습니다.

후보 차원 Top-1 Recall@5 MRR 질문 p50
gemini@3072 3072 0.700 0.875 0.779 394 ms
qwen@2560 (로컬) 2560 0.762 0.900 0.813 96 ms
gemini@1024 1024 0.738 0.887 0.800 393 ms
bge-m3@1024 (로컬) 1024 0.650 0.825 0.727 118 ms

로컬 qwen3-embedding:4b@2560 이 Gemini 모든 후보보다 정확했고 질문 임베딩은 4배 빨랐습니다. 다만 이 평가는 팀원 김충식의 담당이고 류준이 잰 값이 아닙니다. 측정 조건은 코퍼스 3,448건, 질문 80건, RTX 5060 Ti 16GB 이며, 질문 80건은 전부 gemma4:12b 가 청크에서 만든 미검수 후보라 사람이 검수한 본지표가 아닙니다. 데이터베이스 컬럼이 1536차원 고정이라 평가는 데이터베이스 밖에서 돌렸습니다. (근거: 허브 지식베이스, 팀 저장소 docs/model-evaluation.md)