본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 28. 07:38

RAG 시스템을 처음부터 구축하기 — 요약 및 향후 과제

요약

Python과 pgvector를 활용하여 구축한 RAG 시스템의 설계 결정 사항과 아키텍처를 요약합니다. 임베딩 차원 설정, 인덱싱 전략, MCP 활용 및 클라우드 배포 방법 등 실무적인 가이드를 제공합니다.

핵심 포인트

  • pgvector를 활용한 SQL과 벡터 데이터의 통합 관리
  • Gemini 임베딩 모델의 task_type 최적화 및 차원 설정
  • HNSW 인덱스를 통한 대규모 환경에서의 검색 성능 확보
  • MCP를 이용한 도구의 인프라화 및 클라우드 배포 전략

이 마지막 기사에서는 시리즈를 통해 구축한 내용을 요약하고, 설계 결정 사항을 정리하며, 다음에 나아갈 방향을 제시하겠습니다.

우리가 구축한 것

빈 Python 프로젝트에서 시작하여, 단계별로 완전한 AI 시스템을 구축했습니다:

01_setup_db.py       pgvector 테이블 + 확장 기능
02_create_index.py   HNSW 인덱스 (m=16, ef_construction=64)
03_ingest.py         문서 임베딩 (Embed) → pgvector에 저장
...

설계 결정 사항 요약

전용 벡터 DB 대신 pgvector 사용

pgvector는 기존 PostgreSQL과 통합되며, 하나의 쿼리에서 SQL과 벡터를 모두 지원하고 수백만 개의 문서를 안정적으로 처리합니다. 여기서 시작하고, 정말 필요하다는 증거가 있을 때만 마이그레이션하세요.

768 차원 (dimensions)

gemini-embedding-001은 기본적으로 3072 차원을 출력하지만, pgvector의 HNSW 인덱스는 2000 차원의 하드 제한이 있습니다. 768 차원은 품질 저하를 거의 최소화하면서 제한 범위 내에 안정적으로 유지됩니다.

비대칭적 task_type (task_type)

저장할 때는 RETRIEVAL_DOCUMENT를 사용하고, 검색할 때는 RETRIEVAL_QUERY를 사용하세요. Gemini 임베딩 모델은 쿼리를 문서와 동일한 지점으로 매핑하는 것이 아니라, 문서를 향해 매핑하도록 학습되었습니다. 두 작업에 동일한 task type을 사용하면 검색 정확도가 떨어집니다.

IVFFlat 대신 HNSW 사용

HNSW는 학습 데이터가 필요하지 않고, 대규모 환경에서 일관된 재현율 (recall)을 제공하며, 쿼리 시점에 더 빠릅니다. IVFFlat은 메모리 제약이 매우 심한 상황에서만 고려할 가치가 있습니다.

도구 설명 (Tool description)은 라우팅 로직임

LLM은 description 필드를 기반으로 도구를 선택합니다. 정확하고 차별화된 설명이 올바른 도구 선택을 만들어냅니다. 모호한 설명은 무작위적인 동작을 유발합니다.

대화 기록은 에이전트의 메모리임

각 도구 호출과 결과는 contents에 추가됩니다. LLM은 매 단계마다 전체 기록을 읽습니다 — 이것이 다단계 추론 (multi-step reasoning)이 작동하는 방식입니다.

MCP는 도구를 인프라로 만듦

MCP는 하드코딩된 함수를 독립형 서버로 변환합니다. Claude Desktop, Gemini 에이전트, 그리고 향후의 모든 클라이언트는 도구 정의를 중복할 필요 없이 동일한 서버에 연결할 수 있습니다.

비용 없는 클라우드 배포를 위한 Render + Supabase

Render의 무료 웹 서비스(free web service)가 MCP 서버를 호스팅합니다. Supabase의 무료 티어(free tier)는 pgvector를 호스팅합니다. 커넥션 풀러(Connection Pooler, 포트 6543) 사용은 필수적입니다. Render는 Supabase의 표준 포트 5432에서 사용하는 IPv6를 지원하지 않기 때문입니다.

우리가 최종적으로 구축한 아키텍처 (The Architecture We Ended Up With)

Local:
  Claude Desktop
      ↓ stdio
...

이 시리즈에서 다루지 않은 내용

본 시리즈는 프로덕션 환경에 즉시 투입 가능한(production-ready) RAG 시스템을 구축하는 데 집중했습니다. 다음과 같은 몇 가지 중요한 주제들은 이번 범위에서 제외되었습니다.

평가 (Evaluation (Evals)) — 여러분의 RAG가 실제로 잘 작동하고 있는지 어떻게 알 수 있을까요? 컨텍스트 재현율 (Context Recall), 답변 관련성 (Answer Relevancy), 충실도 (Faithfulness) 점수와 같은 자동화된 품질 측정 방식이 필요합니다.

관측 가능성 (Observability) — 프로덕션 환경에서 문제가 발생했을 때 어떻게 디버깅할 수 있을까요? Langfuse와 같은 도구를 사용하여 각 단계를 추적(Tracing)하면 지연 시간(latency)이나 품질 문제가 정확히 어디에서 발생하는지 파악할 수 있습니다.

보안 (Security) — 적대적 입력(adversarial inputs)을 어떻게 처리할까요? 프롬프트 인젝션 (Prompt injection), 탈옥 (jailbreaks), 개인정보(PII) 유출은 공개용 RAG 시스템에서 직면하는 실제 위협입니다.

MLOps / LLMOps — 변경 사항을 어떻게 안전하게 배포할까요? 시스템이 프로덕션 단계에 있으면 프롬프트 버전 관리 (Prompt versioning), CI/CD 품질 게이트 (quality gates), API 비용 추적 (cost tracking)이 필수적이 됩니다.

미세 조정 (Fine-tuning) — 기본 모델이 원하는 대로 동작하지 않을 때, LoRA 미세 조정 (LoRA fine-tuning)을 사용하면 놀라울 정도로 적은 데이터와 컴퓨팅 자원으로 모델을 특정 도메인에 맞게 적응시킬 수 있습니다.

멀티 에이전트 시스템 (Multi-Agent Systems) — 단일 에이전트만으로 충분하지 않을 때, 오케스트레이터-워커 (orchestrator-worker) 패턴을 통해 작업을 전문화된 에이전트들에게 분산할 수 있습니다.

거버넌스 (Governance) — EU AI 법(EU AI Act)이 이제 완전히 시행되었습니다. 챗봇 시스템의 컴플라이언스(Compliance)를 준수한다는 것은 AI 고지 사항, 감사 로그 (audit logging), 그리고 문서화된 위험 평가 (risk assessment)를 의미합니다.

이 모든 내용은 본 시리즈의 Vol.2에서 다룹니다.

Vol.2: 프로덕션 운영 가이드 (Production Operations Guide)

두 번째 시리즈는 이번 시리즈가 끝나는 지점에서 시작하여, 작동하는 RAG 시스템을 프로덕션 등급(production-grade)으로 끌어올리는 과정을 다룹니다.

AI 프로덕션 운영 가이드 (AI Production Operations Guide) (일본어 — 영어 버전은 Dev.to 시리즈로 곧 공개 예정)

장 (Chapter)주제 (Topic)
1"프로덕션 (production)"이 실제로 의미하는 것
...

소스 코드 (Source Code)

이 시리즈에서 구축된 모든 내용은 하나의 저장소(repository)에 있습니다:

github.com/qameqame/pgvector-tutorial

README에는 설정 방법, 디렉토리 구조, 그리고 각 설계 결정(design decision)의 근거가 포함되어 있습니다.

시리즈 인덱스 (Series Index)

  1. 서론 (Introduction)
  2. RAG · 임베딩 (Embedding) · 벡터 DB (Vector DB) 구현
  3. 설계 결정 설명 (Design Decisions Explained)
  4. 도구 사용 (Tool Use) — 자율 검색 (Autonomous Search)
  5. AI 에이전트 (AI Agents) — 메모리 (Memory) 및 계획 (Planning)
  6. MCP — 재사용 가능한 도구 서버 (Reusable Tool Server)
  7. 클라우드 배포 (Cloud Deployment) — Render × Supabase
  8. 요약 및 향후 과제 (Wrap-up and Next Steps) (본 문서)

함께해 주셔서 감사합니다. 이 내용이 유용했다면, GitHub 저장소와 제2권(Vol.2)을 통해 계속해서 학습해 보시기 바랍니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0