From ebd0c4d36b269b8d8427584d7540749e5bb4e0fb Mon Sep 17 00:00:00 2001 From: Claude-51124 Date: Mon, 10 Nov 2025 12:40:43 +0900 Subject: [PATCH] =?UTF-8?q?docs(research):=20Gemini=20File=20Search=20API?= =?UTF-8?q?=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EB=B0=8F=20=EC=BD=9C=EB=93=9C?= =?UTF-8?q?=EB=A9=94=EC=9D=BC=20=EA=B0=9C=EC=84=A0=EB=B0=A9=EC=95=88=20?= =?UTF-8?q?=ED=8F=89=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - PDF/TXT 파일 처리 성능 테스트 결과 - 콜드메일 워크플로우 적용 분석 - 48시간 제한으로 전면 교체 비권장 - 하이브리드 아키텍처 또는 선택적 활용 제안 - 테스트 환경: 51124 서버, 2.06MB PDF 13.77초 색인 완료 --- ..._및_콜드메일_개선방안_평가.md | 234 ++++++++++++++++++ 1 file changed, 234 insertions(+) create mode 100644 research/rag/251110_gemini_file_search_api_테스트_및_콜드메일_개선방안_평가.md diff --git a/research/rag/251110_gemini_file_search_api_테스트_및_콜드메일_개선방안_평가.md b/research/rag/251110_gemini_file_search_api_테스트_및_콜드메일_개선방안_평가.md new file mode 100644 index 0000000..3e1034d --- /dev/null +++ b/research/rag/251110_gemini_file_search_api_테스트_및_콜드메일_개선방안_평가.md @@ -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 환경 보존됨 +