Files
sam-kd/chatbot/docs/google_cloud_rag_guide.md
hskwon aca1767eb9 초기 커밋: 5130 레거시 시스템
- URL 하드코딩 → .env APP_URL 기반 동적 URL로 변경
- DB 연결 하드코딩 → .env 기반으로 변경
- MySQL strict mode DATE 오류 수정
2025-12-10 20:14:31 +09:00

3.3 KiB

Google Cloud 기반 Vector RAG 구축 가이드

"순수 RAG" 즉, Vector Search 기반의 고도화된 시스템을 Google Cloud Platform(GCP)에서 구축하기 위한 가이드입니다.

1. 핵심 구글 서비스 (필요한 도구들)

고도화된 RAG를 구축하려면 다음 Vertex AI 서비스들을 조합해야 합니다.

단계 역할 Google 서비스명 설명
두뇌 (LLM) 답변 생성 Vertex AI Gemini 최종 답변을 작성하는 생성형 AI 모델 (Flash/Pro)
번역기 (Embedding) 텍스트 → 숫자 변환 Vertex AI Embeddings 문서를 AI가 이해하는 숫자(Vector)로 변환 (text-embedding-004)
저장소 (DB) 숫자 검색 (Vector DB) Vertex AI Vector Search 수억 개의 벡터 중 가장 유사한 것을 0.1초 내에 찾는 엔진
저장소 (Raw) 원본 파일 저장 Cloud Storage (GCS) Notion에서 추출한 텍스트/JSON 파일을 저장하는 공간

2. 구축 과정 (Step-by-Step)

Phase 1: 데이터 파이프라인 구축 (Data Ingestion)

매일 밤 또는 주기적으로 문서를 최신화하는 자동화 시스템입니다.

  1. Notion 데이터 추출:
    • Python 스크립트(Cloud Functions)가 Notion API를 호출해 모든 페이지를 텍스트로 가져옵니다.
    • 데이터를 500~1000자 단위로 자릅니다(Chunking).
  2. 임베딩 생성 (Embedding):
    • 자른 텍스트 조각들을 Vertex AI Embeddings API에 보냅니다.
    • API가 각 조각을 768차원(혹은 그 이상)의 숫자 배열(Vector)로 변환해 줍니다.
  3. Vector DB 적재:
    • 변환된 Vector와 원본 텍스트 ID를 Vertex AI Vector Search 인덱스에 업로드(Upsert)하여 저장합니다.

Phase 2: 검색 및 답변 시스템 (RAG Application)

실제 사용자가 채팅할 때 일어나는 실시간 프로세스입니다.

  1. 질문 임베딩:
    • 사용자: "SaaS 용어가 뭐야?"
    • 시스템: 이 질문을 Embeddings API에 보내 숫자로 변환합니다.
  2. 유사도 검색 (Retrieval):
    • 시스템: 변환된 숫자를 Vector Search에 던져 "가장 거리가 가까운(의미가 비슷한) 문서 조각 5개 줘"라고 요청합니다.
    • Vector Search: Notion에 없는 단어라도 의미가 비슷하면 찾아냅니다. (예: 'SaaS' ↔ '클라우드 소프트웨어')
  3. 답변 생성 (Generation):
    • 시스템: 찾아낸 문서 조각 5개 + 사용자 질문을 모아 Gemini에게 보냅니다.
    • Gemini: 근거 자료를 바탕으로 정확한 답변을 작성합니다.

3. (참고) 더 쉬운 방법: Vertex AI Agent Builder

위 과정을 일일이 개발하기 부담스럽다면, Google의 완전 관리형 서비스인 **Vertex AI Agent Builder (구 Search & Conversation)**를 사용할 수 있습니다.

  • 방식: Notion 데이터(PDF/HTML 등)를 Google Cloud Storage에 넣고 "이거 검색기 만들어줘"라고 클릭 몇 번 하면, 위의 1~3번 과정(임베딩, 벡터 DB, 검색 로직)을 구글이 알아서 처리해 줍니다.
  • 추천: 개발 리소스가 부족하고 빠른 구축이 필요하다면 이 방식이 효율적입니다. "순수 RAG"를 직접 코딩으로 제어하고 싶다면 위의 Vector Search 방식을 씁니다.