목적
짧은 문장 기반 BGE-M3 Benchmark에서 선택한 Batch 32와 5초 read timeout이 실제 PDF의 긴 Chunk 처리시간과 메모리 사용량을 대표하지 못해, 문서 v1~v3 인덱싱이 반복 실패하고 Embedding Provider가 OOM으로 종료되는 문제를 해결한다.
제공된 실제 PDF를 기준으로 Batch Size와 요청 시간 예산을 다시 측정하고, 검색 단건 요청과 문서 Batch 요청의 timeout을 분리해 검색 응답성과 문서 인덱싱 안정성을 함께 보존한다.
범위
- 제공된 PDF 3개를 운영 PDF Parser와 Fixed Size Chunker로 변환한 실제 Chunk Corpus를 Benchmark에 사용한다.
- Batch Size 4, 8, 16과 Provider 동시 요청 1, 2를 비교한다.
- 요청 p50, p95, p99, 문서 전체 처리시간, 처리량, Peak RSS, OOM과 실패 횟수를 구조화해 기록한다.
- 위험한 부하는 애플리케이션용 Provider가 아닌 격리된 Benchmark 환경에서 실행한다.
- 검색 단건 Embedding과 문서 Batch Embedding의 read timeout을 분리한다.
- 실패와 OOM이 없고 최고 처리량의 95% 이상인 후보 중 가장 작은 Batch를 기본값으로 선택한다.
- 최악 p99와 안전 계수를 근거로 문서 Batch read timeout을 30~60초 범위에서 결정한다.
- 측정 설계와 결과를 각각
docs/design/, docs/test-results/에 기록한다.
- 실제 PDF 본문과 인증정보는 Repository에 포함하지 않는다.
- Adaptive Batch, Provider Semaphore, Retry Backoff, Circuit Breaker와 Container 운영 복구는 후속 이슈 범위로 남긴다.
완료 조건
- Batch 4, 8, 16의 단일·동시 요청 결과에 p50, p95, p99, 처리량과 Peak RSS가 기록된다.
- Benchmark 도중 Provider OOM이나 Health 실패가 발생해도 완료된 결과가 보존되고 더 위험한 Profile이 중단된다.
- 선택된 설정에서 제공 PDF v1→v2→v3 Job이 모두 성공하고 재시도 횟수가 0이다.
- 최신 v3가 검색 가능한 현재 버전으로 전환된다.
- 개선 전후 Job 성공률, 재시도 횟수, 요청 지연, 문서 처리시간, Peak RSS, OOM, 처리량과 현재 버전 전환 결과가 비교된다.
- 검색 단건 요청은 기존 5초 timeout을 유지하고 문서 Batch 요청만 측정된 timeout을 사용한다.
- Python Benchmark 테스트, 관련 Java 단위 테스트와 전체 백엔드 회귀 테스트가 통과한다.
목적
짧은 문장 기반 BGE-M3 Benchmark에서 선택한 Batch 32와 5초 read timeout이 실제 PDF의 긴 Chunk 처리시간과 메모리 사용량을 대표하지 못해, 문서 v1~v3 인덱싱이 반복 실패하고 Embedding Provider가 OOM으로 종료되는 문제를 해결한다.
제공된 실제 PDF를 기준으로 Batch Size와 요청 시간 예산을 다시 측정하고, 검색 단건 요청과 문서 Batch 요청의 timeout을 분리해 검색 응답성과 문서 인덱싱 안정성을 함께 보존한다.
범위
docs/design/,docs/test-results/에 기록한다.완료 조건