RAG가 이렇게 쉬웠다고? File Search API로 RAG 에이전트 한 번에 끝내기!

1. RAG(Retrieval Augmented Generation) 개요

RAG는 Retrieval Augmented Generation의 약자로, AI가 사용자가 제공한 문서를 참고하여 답변을 생성하도록 만드는 기술이다. 전통적인 RAG 시스템은 구축 과정이 복잡하여 진입 장벽이 높았으나, Google이 최근 출시한 Gemini File Search API는 이 복잡한 과정을 단일 API로 추상화하여 손쉽게 RAG 시스템을 구축할 수 있도록 지원한다.

2. 기존 RAG vs File Search API

2.1 전통적인 RAG 시스템 프로세스

기존 RAG 시스템은 다음과 같은 복잡한 단계를 거친다:

  1. 문서 업로드 및 전처리

    • 다양한 형식의 파일을 데이터베이스에 업로드
    • 문서를 청크(Chunk) 단위로 분할 - 처리 가능한 작은 조각으로 분해
  2. 벡터화(Vectorization)

    • Embedding Model을 사용하여 각 청크를 벡터 형태의 숫자 값으로 변환
    • 변환된 벡터를 벡터 데이터베이스(Vector Database)에 저장
    • 벡터화의 목적: 코사인 유사도(Cosine Similarity) 알고리즘을 활용하여 질문과 가장 연관성 높은 청크를 추출하기 위함
  3. 질의 처리(Query Processing)

    • 사용자 질문도 Embedding을 통해 벡터화
    • 벡터화된 질문과 저장된 청크들 간의 유사도 비교
    • 유사도가 높은 청크를 검색하여 AI 모델에 주입
  4. 답변 생성

    • 검색된 관련 청크를 바탕으로 AI 모델이 최종 답변 생성

2.2 Google File Search API의 접근 방식

Google은 File Search API를 Fully Managed RAG System으로 정의한다. 이는 RAG 시스템에서 필요한 모든 설정 값과 복잡한 프로세스를 Google이 직접 관리한다는 의미다.

사용자가 해야 할 작업:

  1. File Store 생성 (Google Drive의 폴더와 유사한 개념)
  2. 참조할 문서를 File Store에 업로드
  3. AI 에이전트에서 File Search API를 도구로 활용하여 답변 생성

3. File Search API의 주요 장점

3.1 낮은 진입 장벽

  • RAG 구축의 복잡한 과정을 추상화하여 기술적 난이도 최소화
  • 청킹, 임베딩, 벡터 데이터베이스 관리 등의 작업을 자동으로 처리

3.2 저렴한 가격 구조

  • 스토리지 비용: 무료
  • Query Embedding 비용: 무료
  • 초기 인덱싱 비용: 100만 토큰당 $0.15 (최초 문서 업로드 시에만 발생)
  • 답변 생성 비용: Gemini API의 일반적인 토큰 과금 적용

3.3 다양한 파일 형식 지원

  • PDF, Word, SQL, Excel, Google Sheet
  • HWP, XML 등 한국 환경에서 자주 사용되는 포맷 지원
  • 별도의 전처리나 변환 작업 없이 직접 업로드 가능

4. 실습: NADN을 활용한 RAG 에이전트 구축

4.1 프로젝트 개요

시나리오: Gucci Edu라는 가상의 AI 자동화 교육 회사에서 사업 문의 응대를 자동화하는 RAG 에이전트 구축

준비 문서:

  1. 자동화 교육 서비스 소개서
  2. 요금 단가표
  3. 진행 프로세스
  4. 교육 범위
  5. 환불 정책
  6. 사업 문의 자주 묻는 질문(FAQ)

4.2 Part 1: File Store 생성 및 문서 업로드 워크플로우

4.2.1 Uniform Submission Trigger 설정

Form Title: 문서 업로드
Description: RAG Agent 답변에 참고하고자 하는 문서 업로드
 
Field 1: 업로드 File (File Upload, 필수)
Field 2: File Store (Dropdown)
  - Options: Sales Materials, Internal Operations

4.2.2 Data Table을 활용한 File Store 관리

File Store 정보를 저장할 Data Table 구조:

File Store NameFile Store ID
Sales Materials(생성된 ID 값)
Internal Operations(생성된 ID 값)

Get Row Node 설정:

  • File Store Name이 선택한 값(예: Sales Materials)과 일치하는 행을 조회
  • Settings에서 “Always Output Data” 활성화 (데이터가 없어도 워크플로우 진행)

4.2.3 조건 분기 처리 (IF Node)

조건: File Store Name이 empty가 아니다
- True: 기존 File Store 사용 → 문서 업로드만 진행
- False: File Store가 없음 → 신규 File Store 생성 후 문서 업로드

4.2.4 신규 File Store 생성 (HTTP Request)

API Endpoint:

POST https://generativelanguage.googleapis.com/v1beta/fileSearchStores

Authentication: Query Parameter 방식

  • Key: key
  • Value: Gemini API Key

Headers:

{
  "Content-Type": "application/json"
}

Body:

{
  "displayName": "{{File Store 이름}}"
}

Response: 생성된 File Store의 ID와 메타데이터 반환

생성 후 Data Table에 Insert:

  • File Store Name: 사용자가 선택한 이름
  • File Store ID: API Response의 name 필드 값

4.2.5 파일 바이너리 데이터 가져오기 (Code Node)

NADN에서 여러 노드를 거치면서 파일 참조가 손실되는 문제를 해결하기 위해 Code Node를 사용하여 파일의 바이너리 데이터를 재추출한다.

기능:

  • 업로드된 파일의 바이너리 데이터 추출
  • 여러 파일이 업로드된 경우 모든 파일을 개별 Output으로 분리

4.2.6 파일 업로드 루프 처리

Loop Over Items Node:

  • 여러 파일이 업로드된 경우 각 파일을 순차적으로 처리

Step 1: Google에 파일 업로드 (HTTP Request)

API Endpoint:

POST https://generativelanguage.googleapis.com/upload/v1beta/files

Authentication: Query Parameter (Gemini API Key)

Body Type: NADN Binary File

  • Input Data Field Name: file
  • Binary Data: Get Binary Node의 출력값

Step 2: File Store로 파일 Import (HTTP Request)

API Endpoint:

POST https://generativelanguage.googleapis.com/v1beta/fileSearchStores/{{File Store ID}}/importFiles

Headers:

{
  "Content-Type": "application/json"
}

Body:

{
  "fileName": "{{업로드된 파일의 name}}"
}

프로세스 흐름:

  1. 파일을 Google의 임시 스토리지에 업로드
  2. 업로드된 파일의 name 값을 받아옴
  3. 해당 파일을 지정된 File Store로 이동(Import)

4.3 Part 2: RAG 에이전트를 활용한 사업 문의 응대 워크플로우

4.3.1 Gmail Trigger 설정

Trigger: Gmail - On New Email
Filter: Label - Inbox
Polling Interval: 매 분마다 체크

테스트 이메일 예시:

발신자: 구시 마케팅
제목: AI 자동화 교육 문의
본문: 마케팅 팀 직원 15명을 대상으로 AI 자동화 교육을 진행하고 싶습니다. 
      견적과 프로그램 안내 부탁드립니다.

4.3.2 사업 문의 분류 (Text Classifier)

AI Node: Text Classifier

  • Input: Gmail 본문 내용
  • Model: GPT-4o-mini (OpenAI)
  • Categories:
    • 사업 문의
    • 기타 이메일

목적: 사업 문의만 RAG 에이전트로 처리하고 나머지는 필터링

4.3.3 RAG AI Agent 설정

Core Components:

  1. Chat Model: Gemini 2.5 Flash (OpenRouter를 통해 연결)

  2. Memory: Simple Memory

    • Session Key: Gmail Thread ID (각 이메일 스레드마다 별도 메모리 관리)
  3. User Prompt (동적으로 생성):

사업 문의가 접수되었습니다.

발신자: {{발신자 이메일}}
제목: {{이메일 제목}}
본문: {{이메일 본문}}

이 문의에 대해 감사를 표하고 적절한 답변을 작성해 주세요.
  1. System Message (고정 가이드):
당신은 Gucci Edu의 AI 자동화 교육 컨설턴트입니다.

역할:
- 사업 문의에 대해 전문적이고 친절하게 답변
- 제공된 문서의 정보만을 활용하여 정확한 답변 제공

원칙:
1. 반드시 Document 도구를 사용하여 관련 문서를 검색
2. 문서에 없는 내용은 추측하지 말고 추가 문의를 안내
3. 가격, 프로세스, 교육 내용 등은 문서 기반으로만 답변
4. 전문적이면서도 친근한 톤 유지
  1. Output Format (Structured Output):
{
  "subject": "Re: 이메일 제목",
  "body": "답변 본문 내용"
}

4.3.4 File Search API Tool 설정 (HTTP Request)

Tool Name: Document Description: “관련 있는 문서 정보를 가져오는 도구”

API Endpoint:

POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent

Authentication: Query Parameter (Gemini API Key)

Body (JSON):

{
  "contents": [
    {
      "parts": [
        {
          "text": "{{From AI - 자동 생성된 Query}}"
        }
      ]
    }
  ],
  "tools": [
    {
      "fileSearch": {
        "fileSearchStoreName": "{{File Store ID}}"
      }
    }
  ]
}

핵심 설정:

  • text 필드는 “From AI”로 설정하여 AI가 자동으로 최적화된 검색 쿼리 생성
  • fileSearchStoreName에 Data Table에서 조회한 File Store ID 매핑
  • Tools 배열에 fileSearch 객체를 포함하여 File Search API 활성화

동작 방식:

  1. AI Agent가 사용자 질문을 분석하여 검색에 최적화된 쿼리 생성
  2. File Search API가 해당 쿼리로 File Store 내 문서 검색
  3. 관련성 높은 청크(Chunk)들을 추출하여 반환
  4. AI Agent가 검색 결과를 바탕으로 답변 생성

4.3.5 Gmail Draft 생성

Gmail Node: Create a Draft

To: {{발신자 이메일 주소}}
Subject: {{Agent Output의 subject}}
Body: {{Agent Output의 body}}
Thread ID: {{원본 이메일의 Thread ID}}

설정 효과:

  • 기존 이메일 스레드에 답장 형태로 초안 생성
  • 발신자에게 자동으로 TO 주소 설정
  • 사용자가 검토 후 발송 가능한 상태로 저장

4.3.6 Slack 알림

메시지 내용:
📧 새로운 사업 문의가 접수되었습니다.
 
문의자: {{발신자 이메일}}
문의 내용: {{이메일 본문 요약}}
 
✅ 초안이 생성되었습니다.
👉 초안 확인하기: {{Gmail Draft URL}}

Gmail Draft URL 생성:

https://mail.google.com/mail/u/0/#drafts?compose={{Draft ID}}

4.4 실행 결과 분석

테스트 시나리오 실행

입력 이메일:

발신자: 구시 마케팅
제목: AI 자동화 교육 문의
본문: 마케팅 팀 직원 15명을 대상으로 AI 자동화 교육을 진행하고 싶습니다.

생성된 초안 내용:

제목: Re: AI 자동화 교육 문의

본문:
안녕하세요, 구시 마케팅 담당자님.

문의 주셔서 감사합니다. 귀사의 요구사항을 잘 이해했습니다.

Gucci Edu는 AI & No-Code 자동화 교육을 전문으로 제공하고 있습니다.

[교육 프로그램]
현재 제공 중인 주요 교육 내용은 다음과 같습니다:
- Search for Gemini 제대로 쓰는 법
- No-Code 자동화로 반복 업무 줄이기
- 업무별 AI 툴 사용법
- 흐름 설계 개념

[교육 형태]
특히 실습 워크숍 형태의 교육은 노트북 지참 후 각 팀의 업무 예제를 활용한 
실전형 구성으로 진행됩니다.

[견적]
귀사의 15명 규모를 고려할 때, 바닐 워크숍 패키지(20명 내외 기준)가 
적합할 것으로 판단됩니다.
- 교육 시간: 3.5시간
- 인원: 20명 내외
- 비용: 250만 원

구체적인 일정 협의를 위해 미팅을 진행하면 좋을 것 같습니다.
편하신 시간대를 알려주시면 일정을 조율하겠습니다.

감사합니다.

Grounding Chunks 분석

AI Agent의 실행 로그를 확인하면 어떤 문서 청크를 참조했는지 확인할 수 있다:

참조된 청크들:

  1. 회사 개요 - 교육 서비스 소개서에서 추출
  2. 실습형 워크숍 정보 - 교육 범위 문서에서 추출
  3. 단가 정보 - 요금 단가표에서 “바닐 워크숍 패키지, 20명 내외, 250만원” 추출
  4. 진행 프로세스 - 진행 프로세스 문서에서 추출

이를 통해 AI Agent가 File Search API를 통해 관련 문서를 정확히 검색하고, 해당 내용을 기반으로 답변을 생성했음을 확인할 수 있다.

5. File Search API의 한계점 및 주의사항

5.1 커스터마이징 제한

Fully Managed의 양면성:

  • 장점: 복잡한 설정 불필요, 즉시 사용 가능
  • 단점: 청킹 전략, 임베딩 모델, 검색 알고리즘 등을 사용자가 직접 제어할 수 없음

기존 RAG 시스템에서는 다음과 같은 세밀한 조정이 가능하다:

  • 청크 크기(Chunk Size) 조절
  • 청크 간 오버랩(Overlap) 비율 설정
  • 임베딩 모델 선택 (OpenAI, Cohere, HuggingFace 등)
  • 검색 알고리즘 변경 (Semantic Search, Hybrid Search 등)
  • 리랭킹(Re-ranking) 전략 적용

File Search API는 이러한 조정이 불가능하며, Google의 최적화된 설정을 그대로 사용해야 한다.

5.2 중복 문서 관리 문제

현재 제공되지 않는 기능:

  • 동일 문서 중복 업로드 감지 API 부재
  • 문서 버전 관리 기능 없음
  • 문서 삭제 및 업데이트 자동화 어려움

해결 방안:

  • 별도의 중복 체크 로직을 워크플로우에 추가
  • 파일 해시값 비교 또는 파일명 기반 중복 검사 구현
  • Data Table에 업로드 이력 관리 필드 추가

5.3 파일 형식 인식의 불완전성

다양한 파일 형식을 지원한다고 하지만:

  • 복잡한 레이아웃의 PDF는 텍스트 추출이 부정확할 수 있음
  • 이미지가 많은 문서는 정보 손실 가능
  • 표(Table) 구조가 복잡한 경우 데이터 파싱 오류 발생 가능

권장 사항:

  • 업로드 전 파일 품질 테스트 필수
  • 필요시 텍스트 중심의 포맷으로 전처리
  • 중요한 정보는 명확한 텍스트 형태로 정리

5.4 Google 생태계 종속성

고려해야 할 요소:

  • 데이터 프라이버시: 업로드된 문서가 Google 서버에 저장
  • 보안 정책: 기업 보안 정책과 Google의 데이터 처리 방침 검토 필요
  • 벤더 락인(Vendor Lock-in): 향후 다른 플랫폼으로 마이그레이션 시 어려움
  • 서비스 변경 리스크: Google의 정책 변경이나 서비스 종료 가능성

민감한 데이터의 경우:

  • 자체 호스팅 RAG 시스템 구축 고려
  • 온프레미스(On-premises) 벡터 데이터베이스 활용
  • 엔터프라이즈급 보안이 필요한 경우 대안 검토

6. 적용 시나리오별 권장 사항

6.1 File Search API 활용이 적합한 경우

일반적인 유즈 케이스:

  • 사업 문의 응대 자동화 (오늘 실습 사례)
  • 내부 FAQ 챗봇
  • 고객 지원 초안 생성
  • 신입사원 온보딩 가이드 시스템
  • 제품 매뉴얼 기반 Q&A

특징:

  • 검색 정확도보다 구축 속도와 편의성이 중요
  • 문서 업데이트 빈도가 낮음
  • 비용 효율성이 우선 고려사항
  • 기술 리소스가 제한적인 환경

6.2 커스텀 RAG 시스템이 필요한 경우

고급 유즈 케이스:

  • 법률 문서 분석 시스템 (높은 정확도 요구)
  • 의료 데이터 기반 진단 보조 (규제 준수 필요)
  • 금융 리서치 플랫폼 (실시간 업데이트 중요)
  • 대규모 지식 베이스 (수십만 건 이상의 문서)
  • 다국어 복합 검색 시스템

요구사항:

  • 검색 품질 최적화가 핵심
  • 세밀한 튜닝과 A/B 테스트 필요
  • 엄격한 데이터 보안 및 프라이버시 준수
  • 특수한 도메인 지식 반영 필요
  • 자체 인프라 구축 가능한 환경

6.3 하이브리드 접근 방식

전략:

  1. 프로토타입 단계: File Search API로 빠르게 MVP 구축
  2. 검증 단계: 실제 사용자 피드백 수집 및 성능 측정
  3. 최적화 단계: 필요시 커스텀 RAG로 단계적 마이그레이션
  4. 유지보수: 중요도에 따라 하이브리드 운영

7. 추가 개선 방안

7.1 Calendar Tool 통합

현재 시스템에서 미팅 시간 제안이 부정확한 문제를 해결하기 위해:

  • Google Calendar API 연동
  • 가능한 시간대 자동 조회
  • 초안에 구체적인 일정 옵션 포함

7.2 멀티 에이전트 시스템

복잡한 문의 처리를 위한 역할 분담:

  • 분류 에이전트: 문의 유형 세분화 (가격 문의, 기술 문의, 일정 문의 등)
  • 검색 에이전트: 각 유형별 최적화된 문서 검색
  • 작성 에이전트: 유형별 특화된 답변 생성
  • 검토 에이전트: 답변 품질 체크 및 개선 제안

7.3 피드백 루프 구축

지속적인 시스템 개선:

  • 발송된 답변에 대한 고객 반응 추적
  • 수정이 많이 발생한 초안 패턴 분석
  • 주기적으로 프롬프트 및 문서 업데이트
  • A/B 테스트를 통한 답변 품질 비교

8. 결론

Google Gemini File Search API는 RAG 시스템 구축의 진입 장벽을 대폭 낮춘 혁신적인 도구다. 복잡한 벡터 데이터베이스 설정, 임베딩 파이프라인 구축, 청킹 전략 수립 등의 과정을 추상화하여, 비기술 사용자도 강력한 문서 기반 AI 에이전트를 구축할 수 있게 해준다.

핵심 가치:

  • 접근성: No-Code 환경에서도 쉽게 구현 가능
  • 경제성: 스토리지 및 쿼리 임베딩 무료 제공
  • 확장성: 다양한 파일 형식 지원으로 활용 범위 넓음

명확한 한계:

  • 세밀한 커스터마이징 불가능
  • Google 생태계 종속성
  • 중복 관리 등 운영상 추가 로직 필요

따라서 프로젝트의 요구사항, 보안 정책, 기술 역량, 예산 등을 종합적으로 고려하여 File Search API와 커스텀 RAG 시스템 중 최적의 선택을 해야 한다. 많은 경우 File Search API로 시작하여 필요에 따라 점진적으로 고도화하는 전략이 현실적이고 효율적인 접근 방식이 될 것이다.