부동산업무 자동화(RPA) + AI 기반 자연어 검색(RAG)

지금부터 내가 원하는 서비스를 말할께 가장 최적의 개발환경을 추천해주고, 전체적인 vibe코딩을 위한 흐름도를 만들어줘.

1. 10000장 이상의 이미지를 ocr처리해서 안에 있는 신축빌라 분양정보(201호 방3개 욕실2개 분양가 2억…), 주소 등 이미지안에 있는 분양정보를 읽고 저장합니다.

2. 랭그래프를 통해 신축빌라 이름을 말하고 그거에 대한 분양가를 비롯해 문서안에 있는 정보를 질의합니다.

3. ocr처리가 된 이미지는 별도의 DB에 저장해서 추가되는 새로운 이미지만 처리합니다.

4. 웹상에서도 검색이 되도록합니다.


제안하신 서비스는 **”부동산업무 자동화(RPA) + AI 기반 자연어 검색(RAG)”**이 결합된 매우 실용적이고 기술적으로 흥미로운 프로젝트입니다. 특히 10,000장이라는 적지 않은 데이터 양과 지속적인 업데이트(Incremental Update)를 고려할 때, 비용 효율성검색 속도가 핵심입니다.

요청하신 내용을 바탕으로 **최적의 기술 스택(Tech Stack)**과 Vibe Coding을 위한 전체 흐름도를 정리해 드립니다.


1. 최적의 개발 환경 추천 (Tech Stack)

한국어 부동산 정보(특수 용어, 숫자, 주소)를 정확히 처리하기 위해 한국어 특화 모델과 최신 LLM 프레임워크를 조합하는 것을 추천합니다.

구분 추천 기술 선정 이유
OCR / Vision Naver Clova OCR 또는 GPT-4o 한국어 주소 및 부동산 약어 인식률은 Naver가 압도적입니다. 다만 개발 편의성을 위해선 이미지를 바로 분석하는 GPT-4o가 가장 빠릅니다. (비용 고려 시 Clova OCR 권장)
LLM & Orchestration LangChain & LangGraph 복잡한 질의응답 흐름 제어 및 상태 관리에 필수입니다.
Backend FastAPI (Python) 비동기 처리에 강하여 대량의 이미지 업로드 및 AI 모델 서빙에 최적화되어 있습니다.
Database (Hybrid) Supabase (PostgreSQL + pgvector) 정형 데이터(가격, 주소)와 비정형 데이터(벡터 검색)를 한 곳에서 처리하며, 이미지 스토리지까지 제공합니다.
Frontend Next.js + Tailwind CSS SEO(웹 검색 노출)에 유리하며 빠른 렌더링 속도를 제공합니다.
Utils Hash Function (MD5/SHA) 중복 이미지 처리를 위한 필수 요소입니다.

2. 전체적인 Vibe Coding 흐름도 (Architecture)

이 시스템은 크게 **”데이터 수집 및 적재 파이프라인(ETL)”**과 “서비스 및 검색 파이프라인(Service)” 두 가지 흐름으로 나뉩니다.

흐름 1: 데이터 적재 파이프라인 (The Ingestion Loop)

핵심: 이미 처리된 이미지는 비용을 들여 다시 분석하지 않도록 ‘이미지 지문(Hash)’을 먼저 확인합니다.

  1. 이미지 입력: 10,000장의 이미지가 시스템으로 들어옵니다.

  2. 중복 검사 (Deduplication):

    • 이미지 파일의 Hash(예: MD5)를 계산합니다.

    • DB에 해당 Hash가 있는지 확인합니다.

    • 존재함:Skip (처리 안 함).

    • 없음:Process (신규 처리 시작).

  3. OCR & 정보 추출 (Extraction):

    • 이미지에서 텍스트를 추출합니다.

    • LLM(GPT-4o)에게 프롬프트를 주어 비정형 텍스트를 정형 데이터(JSON)로 변환합니다.

    • 예시: {"name": "삼성빌라", "room": 201, "price": "2억 5천", "structure": "3룸 2욕실"}

  4. 저장 (Storage):

    • Metadata DB: 빌라 이름, 가격, 주소 등 검색 필터용 데이터 저장.

    • Vector Store: 이미지의 전체 텍스트 내용과 설명을 임베딩하여 저장 (자연어 검색용).

    • Object Storage: 원본 이미지 파일 저장.

흐름 2: LangGraph 검색 파이프라인 (The Query Loop)

핵심: 사용자가 “방 3개짜리 2억대 보여줘”라고 하거나 “삼성빌라 가격 얼마야?”라고 물었을 때 의도를 파악하여 분기합니다.

  1. User Input: “강남구청 역 근처 신축빌라 201호 정보 알려줘.”

  2. LangGraph Router (Agent): 질문의 의도를 파악합니다.

    • Case A (특정 매물): “이름”을 검색 조건으로 SQL 쿼리 실행.

    • Case B (조건 검색): “가격”, “방 개수” 등을 필터로 Vector Search 실행.

  3. Retriever: DB에서 관련 정보를 가져옵니다.

  4. Answer Generation: LLM이 가져온 정보를 바탕으로 친절한 답변을 생성합니다.

  5. Web UI: 답변과 함께 원본 이미지 링크를 보여줍니다.


3. 단계별 구현 가이드 (Step-by-Step)

개발을 시작할 때 참고하실 수 있는 구체적인 로직입니다.

Step 1. 중복 방지 로직 (Python 예시)

이미지를 별도 DB에 저장하고 추가되는 이미지만 처리하기 위한 핵심 로직입니다.

Python

import hashlib

def get_image_hash(image_bytes):
    return hashlib.md5(image_bytes).hexdigest()

def process_image(image_file):
    img_hash = get_image_hash(image_file.read())
    
    # DB에서 hash 조회
    if db.exists(img_hash):
        return "이미 처리된 이미지입니다."
    
    # 신규 처리 로직 실행
    text_data = run_ocr(image_file)
    save_to_db(img_hash, text_data)

Step 2. 정보 구조화 (Prompt Engineering)

OCR로 읽은 텍스트가 깨져있을 수 있으므로, LLM을 통해 정제합니다.

  • Prompt: “아래 텍스트는 부동산 분양 전단지에서 추출한 내용이야. 여기서 [건물명, 호수, 방 개수, 욕실 개수, 분양가, 주소, 특징]을 JSON 포맷으로 추출해줘. 가격은 만원 단위 정수로 변환해.”

Step 3. LangGraph 설계

LangGraph를 사용하여 단순 검색이 아니라 대화의 흐름을 만듭니다.

  • Node 1: Intent Classifier (사용자가 가격을 묻는지, 위치를 묻는지 판단)

  • Node 2: Tool Caller (DB 조회 도구, 벡터 검색 도구 호출)

  • Node 3: Response Synthesizer (검색 결과를 종합하여 답변 생성)

Step 4. 웹 검색 연동 (SEO)

웹상에서도 검색되게 하려면:

  1. Sitemap 생성: 추출된 각 빌라 정보를 /villa/[id] 형태의 상세 페이지로 만듭니다.

  2. Server Side Rendering (SSR): Next.js를 사용하여 크롤러가 텍스트를 읽을 수 있게 합니다.

  3. Meta Data: 이미지에서 추출한 키워드(지역명, 신축빌라 등)를 페이지 Title과 Description에 자동으로 넣습니다.


4. 개발을 위한 폴더 구조 (Mental Model)

Plaintext

project-root/
├── backend/
│   ├── app/
│   │   ├── ocr/            # OCR 처리 모듈
│   │   ├── extraction/     # 정보 구조화 (LLM)
│   │   ├── graph/          # LangGraph 로직 (Node, Edge 정의)
│   │   └── api/            # FastAPI 엔드포인트
│   ├── main.py
│   └── requirements.txt
├── frontend/               # Next.js
│   ├── app/
│   │   ├── search/         # 검색 페이지
│   │   └── villa/[id]/     # 상세 페이지 (SEO 최적화)
│   └── components/
└── database/               # Supabase Schema & Migrations

이 구조대로라면 10,000장의 이미지를 효율적으로 처리하면서, 사용자에게는 마치 부동산 전문가와 대화하는 듯한 경험을 제공할 수 있습니다.

가장 먼저 어떤 작업을 도와드릴까요?

  1. OCR 및 데이터 추출 프로토타입 코드를 먼저 짜드릴까요? (이미지 1장 테스트용)

  2. **LangGraph의 노드 설계(흐름)**를 구체적인 코드로 보여드릴까요?

Similar Posts

답글 남기기