From 7ed5c718a28aec98b4e22141d5816e0560f96aaf Mon Sep 17 00:00:00 2001 From: Claude-51124 Date: Mon, 10 Nov 2025 13:59:27 +0900 Subject: [PATCH] =?UTF-8?q?docs(plans):=20Gemini=20File=20Search=20?= =?UTF-8?q?=EC=BD=9C=EB=93=9C=EB=A9=94=EC=9D=BC=20=ED=86=B5=ED=95=A9=20TDD?= =?UTF-8?q?=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EA=B3=84=ED=9A=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 콜드메일 워크플로우 전체 분석 (컴퍼니엑스 → Slack Lists) - 현재 병목점: PDF 추출 실패 → evidence_count=0 → 신뢰도 0.6 고정 - 3가지 테스트 시나리오: PDF A/B, 신뢰도 개선, 하이브리드 E2E - 임베딩 차원 호환성: 384차원 vs 3,072차원 별도 컬렉션 - 테스트 위치: rb8001/tests/test_coldmail_gemini_integration.py --- ...earch_콜드메일_tdd_테스트_계획.md | 217 ++++++++++++++++++ 1 file changed, 217 insertions(+) create mode 100644 plans/251110_gemini_file_search_콜드메일_tdd_테스트_계획.md diff --git a/plans/251110_gemini_file_search_콜드메일_tdd_테스트_계획.md b/plans/251110_gemini_file_search_콜드메일_tdd_테스트_계획.md new file mode 100644 index 0000000..e730bb1 --- /dev/null +++ b/plans/251110_gemini_file_search_콜드메일_tdd_테스트_계획.md @@ -0,0 +1,217 @@ +# Gemini File Search 콜드메일 통합 TDD 테스트 계획 + +**작성일**: 2025-11-10 +**작성자**: Claude Code +**목표**: Gemini File Search API를 콜드메일 워크플로우에 통합하여 IR 분석 품질 개선 + +--- + +## 1. 배경 + +### 현재 콜드메일 워크플로우 + +참고: rb8001/app/services/workflows/coldmail_workflow.py:22-150 + +1. 컴퍼니엑스 이메일 조회 (NAVER WORKS) +2. Naive Bayes 콜드메일 필터링 +3. PDF 첨부파일 다운로드 +4. skill-rag-file 업로드 (PyPDF2 → OCR) +5. RAG 쿼리 6회 (IR 지표 추출) +6. 베이지안 가치 평가 +7. Slack Lists 등록 + +### 병목점 + +참고: +- skill-rag-file/app/api/upload.py:148-183 +- rb8001/app/services/startup_valuation.py:38-72, 296-314 + +**PDF 추출 실패 연쇄 효과**: +- OCR 품질 낮음 → RAG 검색 0건 +- IR 지표 "N/A" → evidence_count=0 +- seed 30억·신뢰도 0.6 고정 + +### Gemini File Search 개선 효과 + +참고: DOCS/research/rag/251110_gemini_file_search_api_테스트_및_콜드메일_개선방안_평가.md:166-184 + +- 한글 OCR PDF 13.77초 안정 처리 +- IR 지표 정확 추출 → evidence_count ≥ 2 +- 신뢰도 0.7~0.8 상승 +- grounding_metadata로 근거 제공 + +--- + +## 2. 임베딩 차원 호환성 + +### 현재 시스템 + +- skill-embedding: multilingual-MiniLM-L12-v2 (384차원) +- ChromaDB 컬렉션: skill_rag_file_{team_id}_documents + +### Gemini 임베딩 + +- gemini-embedding-001: 3,072차원 (기본) +- 설정 가능: 128~3,072 차원 + +### 호환성 전략 + +**옵션 1**: 별도 컬렉션 (team_id_gemini vs team_id_documents) +**옵션 2**: Gemini 차원 384로 축소 +**추천**: 옵션 1 (성능 최대화) + +--- + +## 3. 테스트 코드 위치 + +### 추천 위치 + +**파일**: `rb8001/tests/test_coldmail_gemini_integration.py` + +**이유**: +- rb8001/tests/에 기존 콜드메일 테스트 시리즈 있음 +- 전체 E2E 워크플로우 통합 테스트 가능 +- 실제 스케줄러 환경과 동일 + +**기존 콜드메일 테스트**: +- test_coldmail_filter.py +- test_coldmail_ontology.py +- test_coldmail_full_scenario.py +- test_e2e_coldmail_workflow.py + +--- + +## 4. 테스트 시나리오 + +### 시나리오 1: PDF 처리 품질 A/B 테스트 + +**목적**: PyPDF2+OCR vs Gemini File Search IR 지표 추출 정확도 + +**Given**: +- IR PDF 샘플: rb8001/state/ocr_tests/611938b0-kor.ocr.pdf +- 또는 과거 콜드메일 첨부 PDF + +**When**: +- 경로 A: skill-rag-file (PyPDF2 → OCR → 384차원) +- 경로 B: Gemini File Search (자동 색인 → 3,072차원) + +**Then 검증**: +- IR 지표 6개 추출 성공률 (사업분야, 단계, 매출, 성장률, 팀규모, 기술우위) +- evidence_count 비교 (0~4개) +- 처리 시간 비교 + +**성공 기준**: +- Gemini evidence_count ≥ 2 +- 신뢰도 ≥ 0.7 + +### 시나리오 2: 밸류에이션 신뢰도 개선 검증 + +**목적**: evidence_count 증가로 신뢰도 0.6 → 0.7~0.8 상승 확인 + +**Given**: +- evidence_count=0 과거 콜드메일 케이스 +- startup_valuation.py:296-314 함수 동작 + +**When**: +- 동일 PDF를 Gemini로 재분석 +- IR 지표 재추출 → evidence_count 증가 +- valuate_startup() 재실행 + +**Then 검증**: +- 기존: seed 30억, 신뢰도 0.6 +- 개선: seed 탈출, 신뢰도 0.7~0.8 +- compute_confidence() ev_boost 작동 + +**성공 기준**: +- evidence_count: 0 → 2 이상 +- confidence: 0.6 → 0.7 이상 +- Slack Lists 상태: HOLD → 정상 + +### 시나리오 3: 하이브리드 운영 E2E 테스트 + +**목적**: 48시간 제약 우회 이중 저장 전체 플로우 + +**Given**: +- 신규 콜드메일 수신 시뮬레이션 + +**When**: +1. PDF 다운로드 +2. Gemini File Search 업로드 (임시) +3. skill-rag-file 업로드 (영구) +4. IR 분석: Gemini RAG 우선 사용 +5. Slack Lists 등록 +6. 48시간 후: Gemini 삭제, Chroma 검색 + +**Then 검증**: +- 48시간 이내: Gemini 검색 성공, grounding 제공 +- 48시간 이후: Chroma 검색 성공 +- Slack Lists IR 파일 영구 유효 +- TCO 측정 (색인 비용 vs 운영 비용) + +**성공 기준**: +- 검색 영속성 보장 +- 결과 일관성 유지 +- 비용 효율성 검증 + +--- + +## 5. 구현 순서 + +### Phase 1: 기본 검증 (시나리오 1) +1. test_coldmail_gemini_integration.py 생성 +2. PDF A/B 테스트 함수 작성 +3. IR 지표 추출 정확도 비교 + +### Phase 2: 품질 개선 검증 (시나리오 2) +1. evidence_count 증가 테스트 +2. 신뢰도 향상 검증 +3. Slack Lists HOLD 상태 해소 + +### Phase 3: 운영 검증 (시나리오 3) +1. 이중 저장 파이프라인 구현 +2. 48시간 영속성 테스트 +3. TCO 분석 및 의사결정 + +--- + +## 6. 제약사항 + +### Gemini API 한계 + +- 무료 tier: 분당 요청 제한 +- 저장 한도: 1GB (무료) +- 파일 크기: 최대 100MB +- 보존 기간: 48시간 + +### 기술적 제약 + +- 임베딩 차원 불일치 (384 vs 3,072) +- 별도 컬렉션 필요 +- ChromaDB 스토리지 증가 (8배) + +### 운영 고려사항 + +- 색인 비용: $0.15/1M 토큰 +- 외부 API 의존성 +- 데이터 보안 리스크 + +--- + +## 7. 다음 단계 + +### 즉시 실행 가능 +1. rb8001/tests/test_coldmail_gemini_integration.py 생성 +2. 시나리오 1 구현 (PDF A/B 테스트) +3. 기존 IR PDF로 검증 + +### 의사결정 필요 +1. Gemini 차원 설정 (384 vs 3,072) +2. 하이브리드 운영 여부 +3. 예산 승인 (유료 tier 전환) + +--- + +**작성**: Claude Code, 2025-11-10 +**상태**: 계획 단계 (구현 전) +**참고**: research/rag/251110_gemini_file_search_api_테스트_및_콜드메일_개선방안_평가.md +