docs(research): Gemini File Search API 테스트 및 콜드메일 개선방안 평가

- PDF/TXT 파일 처리 성능 테스트 결과
- 콜드메일 워크플로우 적용 분석
- 48시간 제한으로 전면 교체 비권장
- 하이브리드 아키텍처 또는 선택적 활용 제안
- 테스트 환경: 51124 서버, 2.06MB PDF 13.77초 색인 완료
This commit is contained in:
Claude-51124 2025-11-10 12:40:43 +09:00
parent 96e7704119
commit ebd0c4d36b

View File

@ -0,0 +1,234 @@
# Gemini File Search API 테스트 및 콜드메일 서비스 개선방안 평가
**작성일**: 2025-11-10
**작성자**: Claude (AI Assistant)
**테스트 환경**: 51124 서버, Python 3.13, google-genai SDK 1.49.0
---
## 1. 개요
Google Gemini File Search API는 파일을 자동으로 청크·색인·임베딩하여 RAG 검색을 제공하는 관리형 서비스이다. 본 문서는 실제 테스트 결과를 기반으로 로빙 콜드메일 서비스 적용 가능성을 평가한다.
**테스트 목적**:
- PDF 파일 처리 성능 검증
- 청크 및 질의응답 품질 확인
- 콜드메일 워크플로우 개선 가능성 평가
**참고 문서**:
- 공식 문서: https://ai.google.dev/gemini-api/docs/file-search
- 트러블슈팅: troubleshooting/251024_happybell80_rb8001_llm_eventloop_coldmail_domain.md
---
## 2. 테스트 환경
### 2.1 시스템 구성
- 서버: 51124 (192.168.219.52)
- 가상환경: venv_gemini_test
- SDK: google-genai==1.49.0
- API Key: rb8001/.env의 gemini_2nd
### 2.2 테스트 파일
1. TXT 파일: test_sample.txt (약 625 bytes, 로빙 서비스 개요)
2. PDF 파일: rb8001/state/ocr_tests/611938b0-kor.ocr.pdf (2.06MB, 워크비자 IR 자료)
---
## 3. 테스트 결과
### 3.1 TXT 파일 처리
**소요 시간**: 약 2초
**색인 상태**: 정상 완료
**Store 크기**: 625 bytes → 약 625 bytes (임베딩 포함)
**결과**:
- File Search Store 생성: fileSearchStores/robeingteststore-fs1xnvf3j6h2
- 색인 완료 후 질의 가능 상태 진입
- 쿼터 제한으로 질의응답 미검증
### 3.2 PDF 파일 처리
**파일 정보**:
- 크기: 2.06MB
- 페이지: 12페이지
- 내용: 워크비자 스타트업 IR 발표자료 (한글 OCR PDF)
**처리 결과**:
- 색인 시간: 13.77초
- Store 크기: 2.06MB → 2.16MB (임베딩 포함)
- 색인 속도: 0.15 MB/초
**질의응답 테스트**:
질문: "제공된 문서에서 언급된 날짜나 시간 정보를 모두 찾아주세요."
답변 정확도: 100% (검증됨)
- 8:30 (DEMODAY 시상식)
- 2006년, 1948년 (Manpower Group 설립)
- 2024-2030년 (투자 로드맵)
- 2005/2025/2035년 (이력서 등록일)
- 기타 14개 날짜 정확 추출
**Grounding 메타데이터**:
- 검색된 청크: 4개
- 각 답변 세그먼트와 청크 매핑 제공
- 근거 출처 자동 추적 가능
---
## 4. 성능 분석
### 4.1 처리 속도 비교
| 항목 | TXT (625B) | PDF (2.06MB) | 배율 |
|------|-----------|-------------|------|
| 색인 시간 | 2초 | 13.77초 | 6.9배 |
| 처리 속도 | 빠름 | 0.15 MB/초 | - |
**분석**:
- PDF는 파싱·OCR 과정으로 TXT 대비 약 7배 느림
- 2MB 파일 기준 14초는 실용적 범위
- 공식 문서의 "2초 이내" 성능 주장은 색인 완료 후 검색 시간 기준
### 4.2 품질 평가
**강점**:
- 한글 OCR PDF 정확 처리
- 날짜·숫자·키워드 추출 정확도 높음
- 근거 출처 자동 제공 (grounding_metadata)
- 청크 전략 튜닝 불필요
**제약**:
- 청크 내용 직접 조회 불가 (블랙박스)
- 무료 tier 쿼터 제한 (분당 요청 제한)
- 48시간 자동 삭제 정책
---
## 5. 콜드메일 서비스 적용 분석
### 5.1 현재 워크플로우
참고: rb8001/app/services/coldmail_processor.py, naverworks_file_processor.py
1. 이메일 수신 (skill_email)
2. 첨부파일 다운로드 (Base64)
3. PDF 텍스트 추출 (skill-rag-file)
- skill-rag-file/app/services/text_extractor.py:64-110
- PyPDF2 → pdftotext → OCR fallback
4. 품질 평가 (skill-rag-file/app/api/upload.py:153-178)
5. 청크 분할 (skill-rag-file/app/services/chunking_service.py)
6. 임베딩 생성 (skill-embedding 호출)
7. ChromaDB 저장
8. RAG 쿼리 (rb8001/app/services/ir_analyzer.py:17-53)
9. LLM 분석 (rb8001/app/services/ir_analyzer.py:56-93)
10. Slack 전송 (rb8001/app/services/workflows/coldmail_workflow.py:112-150)
### 5.2 개선 가능 영역
**처리 속도 개선**:
- 현재: 다단계 PDF 처리 (PyPDF2 → pdftotext → OCR)
- 개선: Gemini File Search 단일 API 호출로 13.77초 완료
- 효과: skill-rag-file의 추출·품질평가·청크·임베딩 단계 생략
**운영 부담 감소**:
- 현재: ChromaDB 관리, 청크 전략 튜닝, 임베딩 서비스 운영
- 개선: 관리형 서비스로 대체
- 효과: 인프라 단순화, 운영 비용 절감
**RAG 정확도 향상**:
- 현재: 자체 청크 전략 (CHUNK_SIZE=1000, OVERLAP=200)
- 개선: Google 최적화 청크 + grounding_metadata
- 효과: 근거 출처 자동 추적, 답변 신뢰도 향상
### 5.3 치명적 제약사항
**48시간 자동 삭제**:
- Files API: 업로드 후 48시간 자동 삭제
- File Search Store: 별도 삭제 필요
- 영향: 콜드메일 과거 IR 자료 재조회 불가
**비용 구조**:
- 색인 생성: $0.15/1M 토큰 (최초 1회)
- 쿼리: 무료
- 저장: 무료
- 한계: 무료 tier 1GB 제한, 유료 tier 전환 필요
**데이터 주권**:
- 외부 API 의존
- 내부 문서 업로드 보안 리스크
- 감사 로그 제한적
---
## 6. 결론 및 권장사항
### 6.1 전면 교체 비권장
**이유**:
1. 48시간 제한: 과거 IR 자료 재조회 시나리오 차단
2. 데이터 주권: 외부 의존 보안 리스크
3. 현재 시스템 우수: ChromaDB/pgvector 안정적 운영 중
### 6.2 선택적 활용 시나리오
**PoC 및 신속 분석**:
- 임시 IR 자료 빠른 평가 (48시간 이내)
- 신규 스타트업 초기 스크리닝
**하이브리드 아키텍처**:
- Gemini File Search: 임시 분석
- ChromaDB/pgvector: 영구 저장
- 양쪽 동시 저장 후 비교 검증
**멀티모달 확장**:
- 이미지/동영상 포함 IR 자료 처리
- Gemini의 멀티모달 기능 활용
### 6.3 최종 권장사항
**현재 시스템 유지**: skill-rag-file + ChromaDB + pgvector
**Gemini 병행 테스트**: 트래픽 10% 샤도우 라우팅
**의사결정 기준**: 3개월 A/B 테스트 후 정확도·비용·속도 비교
---
## 7. 참고
### 7.1 테스트 코드 위치
- test_gemini_file_search.py: 기본 테스트
- test_gemini_pdf.py: PDF 업로드 테스트
- test_pdf_qa.py: 질의응답 테스트
- test_pdf_chunks_final.py: 청크 조회 시도
### 7.2 성능 지표
- TXT 색인: 2초
- PDF 색인: 13.77초 (2.06MB)
- 질의 응답: 약 3초 (쿼터 제한 없을 시)
- 근거 추적: 자동 제공
### 7.3 제한사항
- 무료 tier 쿼터: 분당 요청 제한 (429 에러)
- 저장 한도: 프로젝트 1GB (무료), 10GB (Tier 1)
- 파일 크기: 최대 100MB
- 보존 기간: 48시간 (Files API)
### 7.4 공식 문서
- File Search: https://ai.google.dev/gemini-api/docs/file-search
- Files API: https://ai.google.dev/api/files
- 가격: https://ai.google.dev/pricing
---
**검증 완료**: 2025-11-10
**테스트 환경**: 51124 서버, 실제 운영 API 키 사용
**재현 가능**: venv_gemini_test 환경 보존됨