Skip to content

[ai-assisted] fix(rag): 대용량 청크 저장 메모리 사용량 제한#519

Draft
donghyuck wants to merge 1 commit into
2.xfrom
codex/fix-rag-chunk-write-memory
Draft

[ai-assisted] fix(rag): 대용량 청크 저장 메모리 사용량 제한#519
donghyuck wants to merge 1 commit into
2.xfrom
codex/fix-rag-chunk-write-memory

Conversation

@donghyuck

Copy link
Copy Markdown
Owner

Why

대용량 Markdown 문서의 청크를 JDBC staging에 저장할 때 log4jdbc가 batch SQL과 파라미터를 하나의 문자열로 조립하면서 JVM heap을 소진했다. 이 때문에 청킹이 OutOfMemoryError로 중단되고 임베딩 job은 시작되지 않았다.

What

  • studio.ai.rag.indexing.chunk-write-batch-size 설정을 추가했다.
  • staging과 영속 ChunkSet 저장을 기본 25개, 최대 200개 단위로 분할했다.
  • 설정값이 0 이하이면 기본값 25로, 200을 초과하면 200으로 보정한다.
  • staging의 기존 데이터 삭제와 batch 재저장을 동일 transaction으로 처리한다.
  • 기존 API, DB schema, 청킹 결과 및 임베딩 계약은 유지한다.
  • 설정 바인딩과 batch 분할 경계 테스트를 추가했다.

Related Issues

별도 Issue 없음. PR #518 병합 후 첨부 5 대용량 문서의 청킹 OOM을 분석하면서 발견한 후속 조치다.

Validation

  • ./gradlew :starter:studio-platform-starter-ai:test --no-daemon 성공
  • git diff --check 성공
  • 서버 composite build에서 신규 constructor와 설정 주입 컴파일 성공

Risk / Rollback

작은 batch로 인해 DB round trip 횟수가 증가할 수 있다. 필요하면 studio.ai.rag.indexing.chunk-write-batch-size를 최대 200 범위에서 조정할 수 있으며, 문제가 발생하면 이 PR을 revert해 기존 200개 고정 batch 동작으로 복구할 수 있다.

AI / Subagent Usage

AI-Assisted: Yes. Codex가 장애 분석, 구현, 테스트 작성 및 검증을 수행했다. 별도 subagent는 사용하지 않았다.

Checklist

  • commit message가 정책 형식을 따른다.
  • 별도 Issue가 없는 사유를 기록했다.
  • AI-Assisted 사용을 기록했다.
  • validation 명령과 결과를 기록했다.
  • 관련 없는 로컬 상태 파일을 제외했다.
  • human review가 필요하다.

Issue: 별도 Issue 없음 - PR #518 병합 후 발견된 대용량 청크 staging OOM 후속 조치

Why: log4jdbc가 대형 batch SQL 문자열을 조립할 때 JVM heap을 소진해 청킹이 중단되고 임베딩이 시작되지 않았다.

What: staging과 ChunkSet JDBC 저장 batch 크기를 설정화하고 기본 25개 단위로 분할 저장하며 staging 교체를 transaction으로 묶었다.

Validation: ./gradlew :starter:studio-platform-starter-ai:test --no-daemon (성공), git diff --check (성공)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant