수정: Gemini File Search API 48시간 삭제 정책 오류 정정 및 구현 방안 추가

- Files API 임시 객체는 48시간 삭제되나 File Search Store 색인 데이터는 영구 보존됨을 명시
- 무료 tier RPM/RPD 제약사항 구체화 (RPM 5회, RPD 25회)
- 단계적 적용 시나리오를 최종 형태로 통합
- 구현 방안 5가지 추가: gemini_file_search_client.py 생성, coldmail_processor.py/ir_analyzer.py 수정, 의존성 추가, 환경변수 설정

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Claude-51124 2025-11-10 16:33:12 +09:00
parent 7ed5c718a2
commit 9edd531ed4

View File

@ -104,8 +104,8 @@ Google Gemini File Search API는 파일을 자동으로 청크·색인·임베
**제약**: **제약**:
- 청크 내용 직접 조회 불가 (블랙박스) - 청크 내용 직접 조회 불가 (블랙박스)
- 무료 tier 쿼터 제한 (분당 요청 제한) - 무료 tier 쿼터 제한 (RPM 5회, RPD 25회)
- 48시간 자동 삭제 정책 - Files API 임시 객체 48시간 삭제 (Store 색인 데이터는 영구 보존)
--- ---
@ -145,12 +145,12 @@ Google Gemini File Search API는 파일을 자동으로 청크·색인·임베
- 개선: Google 최적화 청크 + grounding_metadata - 개선: Google 최적화 청크 + grounding_metadata
- 효과: 근거 출처 자동 추적, 답변 신뢰도 향상 - 효과: 근거 출처 자동 추적, 답변 신뢰도 향상
### 5.3 치명적 제약사항 ### 5.3 주요 제약사항
**48시간 자동 삭제**: **Files API vs File Search Store 저장 정책**:
- Files API: 업로드 후 48시간 자동 삭제 - Files API 임시 객체: 업로드 후 48시간 자동 삭제
- File Search Store: 별도 삭제 필요 - File Search Store 색인 데이터: 수동 삭제 전까지 영구 보존
- 영향: 콜드메일 과거 IR 자료 재조회 - 영향: 과거 IR 자료 재조회 가능 (이전 평가 오류 수정됨)
**비용 구조**: **비용 구조**:
- 색인 생성: $0.15/1M 토큰 (최초 1회) - 색인 생성: $0.15/1M 토큰 (최초 1회)
@ -163,6 +163,11 @@ Google Gemini File Search API는 파일을 자동으로 청크·색인·임베
- 내부 문서 업로드 보안 리스크 - 내부 문서 업로드 보안 리스크
- 감사 로그 제한적 - 감사 로그 제한적
**무료 tier 실용성 제약 (실질적 장애물)**:
- RPM 5회: 동시 사용자 10명 기준 30초 내 소진
- RPD 25회: 일일 처리량 극히 제한적
- 프로덕션 적용 시 유료 tier 필수 ($250+ 지출 후 Tier 2 권장)
### 5.4 IR 평가 품질 개선 효과 분석 ### 5.4 IR 평가 품질 개선 효과 분석
참고: rb8001/app/services/startup_valuation.py:38-72, 296-314 참고: rb8001/app/services/startup_valuation.py:38-72, 296-314
@ -177,43 +182,50 @@ Google Gemini File Search API는 파일을 자동으로 청크·색인·임베
- seed 탈출하고 증거 2개 이상 시 신뢰도가 0.7~0.8로 상승 - seed 탈출하고 증거 2개 이상 시 신뢰도가 0.7~0.8로 상승
- grounding_metadata로 근거 제공하여 설명가능성 개선 - grounding_metadata로 근거 제공하여 설명가능성 개선
**실무 운영 제약**: **실무 운영 권장사항**:
- 48시간 삭제 제약으로 전면 교체 불가 - 무료 tier RPM/RPD 제약으로 프로덕션 즉시 적용 어려움
- "신속 PoC·임시 분석"은 File Search 활용 - 유료 tier 전환 후 ChromaDB/pgvector 대체 검토 가능
- "영구 보관·재조회"는 Chroma/pgvector 유지 - 초기 단계: 샤도우 라우팅으로 정확도·비용·속도 A/B 테스트
- 하이브리드 병행 운영 권장 - File Search Store는 영구 보존되므로 재조회 시나리오 문제 없음
--- ---
## 6. 결론 및 권장사항 ## 6. 결론 및 권장사항
### 6.1 전면 교체 비권장 ### 6.1 즉시 전면 교체 비권장 (단계적 전환 권장)
**이유**: **이유**:
1. 48시간 제한: 과거 IR 자료 재조회 시나리오 차단 1. 무료 tier 제약: RPM 5회/RPD 25회로 프로덕션 불가능
2. 데이터 주권: 외부 의존 보안 리스크 2. 데이터 주권: 외부 의존 보안 리스크 (내부 문서 업로드)
3. 현재 시스템 우수: ChromaDB/pgvector 안정적 운영 중 3. 현재 시스템 우수: ChromaDB/pgvector 안정적 운영 중
4. 비용 불확실성: 유료 tier 전환 후 비용 검증 필요
### 6.2 선택적 활용 시나리오 ### 6.2 단계적 적용 시나리오
**PoC 및 신속 분석**: **1단계: 무료 tier 검증 (현재 가능)**:
- 임시 IR 자료 빠른 평가 (48시간 이내) - 개발/테스트 환경에서 품질 검증
- 신규 스타트업 초기 스크리닝 - 소량 IR 자료 정확도 비교 테스트
- 비용 대비 효과 측정
**하이브리드 아키텍처**: **2단계: 유료 tier 샤도우 라우팅**:
- Gemini File Search: 임시 분석 - 트래픽 10% Gemini로 분기
- ChromaDB/pgvector: 영구 저장 - ChromaDB와 동시 처리 후 결과 비교
- 양쪽 동시 저장 후 비교 검증 - 3개월 A/B 테스트로 정확도·비용·속도 평가
**멀티모달 확장**: **3단계: 점진적 전환 또는 하이브리드 운영**:
- 평가 결과에 따라 비율 조정 (10% → 50% → 100%)
- 또는 용도별 분리: 신규 분석은 Gemini, 레거시 데이터는 ChromaDB
**멀티모달 확장 기회**:
- 이미지/동영상 포함 IR 자료 처리 - 이미지/동영상 포함 IR 자료 처리
- Gemini의 멀티모달 기능 활용 - Gemini의 멀티모달 기능 활용
### 6.3 최종 권장사항 ### 6.3 최종 권장사항
**현재 시스템 유지**: skill-rag-file + ChromaDB + pgvector **단기 (1~3개월)**: 현재 시스템 유지 + 무료 tier 품질 검증
**Gemini 병행 테스트**: 트래픽 10% 샤도우 라우팅 **중기 (3~6개월)**: 유료 tier 전환 후 10% 샤도우 라우팅 A/B 테스트
**의사결정 기준**: 3개월 A/B 테스트 후 정확도·비용·속도 비교 **장기 (6개월~)**: 테스트 결과 기반 점진적 전환 또는 하이브리드 운영
**핵심 수정**: File Search Store 영구 보존 확인으로 재조회 제약 해소됨
--- ---
@ -235,10 +247,11 @@ Google Gemini File Search API는 파일을 자동으로 청크·색인·임베
### 7.3 제한사항 ### 7.3 제한사항
- 무료 tier 쿼터: 분당 요청 제한 (429 에러) - 무료 tier 쿼터: RPM 5회, RPD 25회 (프로덕션 사용 불가)
- 저장 한도: 프로젝트 1GB (무료), 10GB (Tier 1) - 저장 한도: 프로젝트 1GB (무료), 10GB (Tier 1), 100GB (Tier 2), 1TB (Tier 3)
- 파일 크기: 최대 100MB - 파일 크기: 최대 100MB
- 보존 기간: 48시간 (Files API) - File Search Stores: 프로젝트당 최대 10개
- Files API 임시 객체: 48시간 자동 삭제 (Store 색인 데이터는 영구 보존)
### 7.4 공식 문서 ### 7.4 공식 문서
@ -248,7 +261,21 @@ Google Gemini File Search API는 파일을 자동으로 청크·색인·임베
--- ---
**검증 완료**: 2025-11-10 **검증 완료**: 2025-11-10
**테스트 환경**: 51124 서버, 실제 운영 API 키 사용 **테스트 환경**: 51124 서버, 실제 운영 API 키 사용
**재현 가능**: venv_gemini_test 환경 보존됨 **재현 가능**: venv_gemini_test 환경 보존됨
---
## 8. 구현 방안 (최종 형태)
1. **rb8001/app/services/gemini_file_search_client.py 생성**: `google-genai` SDK 기반 비동기 클라이언트 구현, `upload_and_index()`, `query()`, `delete_store()` 메서드 제공, API 키는 settings.GEMINI_API_KEY로 환경변수화
2. **rb8001/app/services/coldmail_processor.py 수정**: 기존 skill-rag-file 호출 경로와 병행하여 Gemini File Search 경로 추가, 환경변수 `USE_GEMINI_FILE_SEARCH=true` 시 Gemini 사용, 결과 비교 로깅 추가
3. **rb8001/app/services/ir_analyzer.py 수정**: RAG 쿼리 로직에 Gemini grounding_metadata 파싱 추가, 근거 출처(청크 ID, 페이지 번호) 자동 추출하여 startup_valuation.py의 evidence_count 계산에 반영
4. **requirements.txt에 google-genai 추가**: `google-genai>=1.49.0` 의존성 추가, Docker 이미지 재빌드 필요, 기존 httpx 사용으로 aiohttp 선택사항
5. **.env 및 settings.py 업데이트**: `GEMINI_API_KEY`, `USE_GEMINI_FILE_SEARCH` (default: false), `GEMINI_FILE_SEARCH_STORE_ID` 환경변수 추가, aistudio.google.com에서 API 키 발급 후 설정