docs(research): Gemini File Search API 테스트 및 콜드메일 개선방안 평가
- PDF/TXT 파일 처리 성능 테스트 결과 - 콜드메일 워크플로우 적용 분석 - 48시간 제한으로 전면 교체 비권장 - 하이브리드 아키텍처 또는 선택적 활용 제안 - 테스트 환경: 51124 서버, 2.06MB PDF 13.77초 색인 완료
This commit is contained in:
parent
96e7704119
commit
ebd0c4d36b
234
research/rag/251110_gemini_file_search_api_테스트_및_콜드메일_개선방안_평가.md
Normal file
234
research/rag/251110_gemini_file_search_api_테스트_및_콜드메일_개선방안_평가.md
Normal 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 환경 보존됨
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user