type, tags, status, depends_on, closing_criteria
| type |
tags |
status |
depends_on |
closing_criteria |
| plans |
| plans |
| rag |
| companyx |
| indexing |
| incremental |
| stage2 |
|
open |
260320_로빙_다형식문서_RAG_적용1_계획.md |
증분 ~1,800개 인덱싱 완료 + 품질 게이트 3축 통과 + AGE 그래프 반영 + 문서 갱신 |
260323 다형식문서 RAG 2단계 ~1,800개 증분 인덱싱 계획
목적
1단계(2,000개) 완료 후, NAS mtime 2025-11-30 이후 증분 ~1,800개를 인덱싱하여 검색 범위를 확장한다.
참조 문서
실측 기반 수치 (260323)
| 항목 |
값 |
| NAS mtime 2025-11-30 이후 |
5,038개 |
| 사전 제외 (이미지/압축/임시/빈) |
771개 |
| 기존 인덱싱 |
2,506건 |
| 실제 증분 |
~1,761개 |
| 현재 청크 |
19,996 |
| AGE 노드 |
2,369 / 엣지 2,064,720 |
대상 리스트 관리
- 3분할 JSONL: 전체 후보 / 사전 제외 / 실행 대상
- 포맷:
{"path": "...", "mtime": "...", "size": 0, "ext": ".pdf"}
- 위치: git 레포(
scripts/targets_stage2.jsonl) + NAS 스냅샷
- 생성 주체: 23 클로드 (DB diff + NAS 스캔)
실행 전략
23·24 서버 동시 진행
| 서버 |
역할 |
| 23서버 |
리스트 JSONL 생성, AGE 엣지 시간 측정, DB 모니터링, 문서 관리 |
| 24서버 |
배치 스크립트 실행 (skill-rag-file 컨테이너), 품질 검증 |
배치 전략
파일럿 200개 → 검증 → 500개 배치 × ~3회 → 나머지 → 완료
- concurrency: 2
- 배치 간 5초 sleep (WAL write 집중 방지)
- 야간 실행 (APScheduler 충돌 없음 확인)
배치별 로그 (필수 기록)
- 소요 시간
- 생성 문서 수 / 청크 수
- 실패 수 + 원인 분류
- AGE 엣지 생성 시간
- DB CPU / 메모리
품질 게이트 3축
- 기존 17개 질문 비회귀
- chunk_text 품질 (길이 0 또는 50자 미만 비율)
- 확장자별 실패율
실패 분류
| 유형 |
재시도 |
처리 |
| 텍스트 추출 실패 |
1회 |
격리 |
| 임베딩 API 실패 (429/5xx) |
3회 (지수 백오프) |
재시도 |
| DB write 실패 |
1회 |
중단 + 조사 |
| PPTX no_chunks |
0회 |
즉시 격리 |
| OCR 깨짐 (chunk < 50자) |
0회 |
격리 + 파일명 보완 |
주의사항
- AGE 엣지 200만개: 1,800개 추가 시 엣지 수백만 추가 가능. 파일럿에서 반드시 측정
- 1단계 실패 7건 전부 PPTX no_chunks: 2단계에서도 반복 예상
- DB 증분 ~300MB: 디스크(가용 140GB) 문제없음
담당 분배
| 작업 |
담당 |
서버 |
| 리스트 JSONL 3분할 생성 |
23 클로드 |
23 |
| 200개 파일럿 실행 |
24 클로드 |
24 |
| 파일럿 검증 |
24 코덱스 |
24 |
| AGE 엣지 시간 측정 |
23 클로드 |
23 |
| 500개 배치 실행 |
24 클로드 |
24 |
| DB 모니터링 |
23 클로드 |
23 |
| 문서 갱신 |
23 코덱스 |
23 |
| 코드/로그 리뷰 |
23 Cursor |
23 |
실행 순서
[23] 리스트 JSONL 생성 ──→ [24] 200개 파일럿 실행 ──→ [24] 검증
[23] AGE 측정 (병렬) ──┘ ↓
통과 → [24] 500개 배치 × ~3회
[23] DB 모니터링 (병렬)
↓
[23] 문서 갱신 + [24] 최종 검증
닫는 조건