1. 개요
1.1 배경
기존 OpenAI Vector Store 기반 PKM RAG 시스템을 Google의 새로운 Gemini File Search 기능으로 마이그레이션했습니다. Gemini File Search는 2025년 11월에 출시된 기능으로, 관 리형 RAG 서비스를 무료 스토리지와 함께 제공합니다.
1.2 마이그레이션 동기
| 항목 | OpenAI | Gemini |
|------|--------|--------|
| 스토리지 비용 | $0.10/GB/day | 무료 |
| 쿼리 임베딩 | 유료 | 무료 |
| 인덱싱 비용 | 유료 | $0.15/1M tokens (최초만) |
| 월 예상 비용 | $20+ | $0.14 |
| 답변 생성 | 별도 GPT 호출 필요 | 자동 생성 |2. 기술 구현
2.1 아키텍처
```
┌─────────────────────────────────────────────────────────────┐
│ Gemini File Search RAG │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ init.py │───▶│ sync.py │───▶│ query.py │ │
│ │ (스토어생성) │ │ (파일업로드) │ │ (시맨틱검색) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Gemini File Search Store (7개) │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │insights │ │knowledge│ │projects │ │writing │ │ │
│ │ │CRITICAL │ │CRITICAL │ │ HIGH │ │ HIGH │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │ study │ │ weekly │ │ archive │ │ │
│ │ │ HIGH │ │ MEDIUM │ │ MEDIUM │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
```
2.2 주요 파일 구조
```
.gemini-pkms-rag/
├── config.json # 스토어 설정 및 경로 정의
├── init.py # File Search Store 생성
├── sync.py # 마크다운 파일 업로드
├── query.py # 시맨틱 검색 실행
├── store_registry.json # 생성된 스토어 ID 저장
└── sync_log.json # 동기화 결과 로그
```2.3 REST API 사용
Python SDK(v1.47.0)가 아직 File Search를 지원하지 않아 REST API로 직접 구현했습니다.
```python
# File Search Store 생성
POST https://generativelanguage.googleapis.com/v1beta/fileSearchStores
# 파일 업로드
POST https://generativelanguage.googleapis.com/upload/v1beta/{store_id}:uploadToFileSearchStore
# 시맨틱 검색 (generateContent + file_search tool)
POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent
```2.4 검색 요청 구조
```python
data = {
"contents": [{"parts": [{"text": query}]}],
"tools": [{
"file_search": {
"file_search_store_names": store_ids # 스토어 ID 배열
}
}],
"systemInstruction": {
"parts": [{
"text": "You are a helpful assistant..."
}]
}
}
```3. 동기화 결과
3.1 성공률
- 전체 성공률: 99.5%
- 실패 원인: 일시적 503 Service Unavailable (Gemini API 과부하)
- 동기화 시간: 약 15분
4. Claude Code 스킬 통합
4.1 스킬 업데이트
기존 24-pkm-search 스킬을 Gemini File Search로 업데이트했습니다.
4.2 트리거 키워드
다음 표현 사용 시 자동으로 PKM 검색이 실행됩니다:
- "~에 대해 검색해줘"
- "~찾아줘", "~찾아봐"
- "~뭐야?", "~뭐였지?"
- "전에 썼던 ~", "예전에 정리한 ~"
- "노트에서 ~", "PKM에서 ~"
4.3 검색 테스트
쿼리: "아카이브 AI 스터디"
결과:
- 10개 관련 문서 검색
- AI가 자동으로 종합 답변 생성
- 출처(문서명) 함께 제공
5. 비용 분석
5.1 OpenAI Vector Store (이전)
| 항목 | 계산 | 월 비용 |
|------|------|---------|
| 스토리지 | 1,000 files × 3KB × 30일 × $0.10/GB | ~$9 |
| 쿼리 임베딩 | 일 10회 × 30일 × ~$0.01 | ~$3 |
| GPT-4 답변 | 일 10회 × 30일 × ~$0.03 | ~$9 |
| 월 합계 | | ~$21 |5.2 Gemini File Search (현재)
| 항목 | 계산 | 월 비용 |
|------|------|---------|
| 스토리지 | 무료 | $0 |
| 쿼리 임베딩 | 무료 | $0 |
| 인덱싱 | 1,000 files × 3KB × $0.15/1M tokens (최초) | ~$0.14 |
| 월 합계 | | ~$0.14 |5.3 비용 절감
- 월간: $21 → $0.14 (**99.3% 절감**)
- 연간: $252 → $1.68 (**$250 절약**)
6. 장단점 분석
6.1 장점
1. 비용 효율성: 스토리지 및 쿼리 무료
2. 자동 답변 생성: 별도 LLM 호출 없이 RAG 답변 제공
3. 자동 청킹/임베딩: 관리형 서비스로 인프라 부담 감소
4. Grounding 메타데이터: 출처 정보 자동 제공
6.2 단점
1. SDK 미지원: Python SDK가 아직 File Search 미지원 (REST API 필요)
2. 일시적 오류: 503 에러 간헐적 발생 (재시도로 해결)
3. 미국 한정: 일부 기능 지역 제한 있음
7. 결론
OpenAI에서 Gemini File Search로 마이그레이션을 성공적으로 완료했습니다.
핵심 성과:
- PKM 파일 인덱싱 완료
- 월 비용 99.3% 절감 ($21 → $0.14)
- Claude Code 스 킬 통합으로 대화형 검색 가능
- 자동 답변 생성으로 사용성 향상
향후 계획:
- 정기 동기화 자동화 (cron 또는 hook)
- 검색 결과 품질 모니터링
- Python SDK 정식 지원 시 코드 마이그레이션
8. 참고 자료
- [Gemini File Search 공식 문서](https://ai.google.dev/gemini-api/docs/file-search)
- [REST API 레퍼런스](https://ai.google.dev/api/rest)
찐후기: 일단 OPEN AI API 썼을 때보다 검색결과 빨리 나오고 (30초 걸리던 게 5-10초 걸림) 더 상세히 찾아주는 것 같음. 끗!