---
tags: [worklog, rag, companyx, indexing, batch]
type: worklog
status: closed
closed_date: 2026-03-22
---

# CompanyX RAG 1단계 2,000개 증분 인덱싱 완료

**작성일**: 2026-03-22
**작성자**: 23서버 클로드

## 배경

- 0단계(200개) 검증 완료 후, NAS 최신 문서 2,000개를 대상으로 증분 인덱싱 실행
- 23서버(4코어/29GB)와 24서버(16코어/31GB)에서 병렬 배치 처리
- 임베딩 서비스는 24서버(192.168.0.106:8515)에서만 운영

## 실행 결과

### 인덱싱 실적

| 항목 | 값 |
|------|-----|
| 대상 파일 | ~2,000 (NAS mtime 기준 최신) |
| completed | 2,369 (기존 200 + 신규 ~1,635 + processing 재처리 38 + 기타) |
| failed | 136 |
| processing | 0 |
| 전체 청크 | 19,991 |

### 데이터 품질 수정 (`fix_data_quality.py`)

| 문제 | 수정 전 | 수정 후 |
|------|---------|---------|
| file_size/mime 누락 | 2,370 | 252 (원본 파일 없음) |
| 청크 없는 completed | 118 → 125 | 0 |
| 빈 chunk_text (<10자) | 12 | 0 |
| 임베딩 누락 | 0 | 0 |
| tsvector 누락 | 0 | 0 |

### failed 136건 내역

| 원인 | 건수 | 설명 |
|------|------|------|
| 원본 파일 없음 | 122 | `/mnt/51123data/documents/` 웹 업로드 후 삭제된 구 데이터 |
| 빈 서식 파일 | 7 | hwp 조합 등록 신청서 등 텍스트 없는 서식 |
| 텍스트 없는 pptx | 7 | 이미지만 있는 프레젠테이션 |

## 수정 이력 (이번 배치에서 해결한 문제)

1. **xlrd 미설치** → 23/24서버 모두 `xlrd-2.0.2` 설치 (.xls 127건 해소)
2. **hwpx 미지원** → `text_extractor.py`에 `_extract_hwpx()` 추가
3. **Thumbs.db 등 비문서 파일** → `.db`, `.ini`, `.lnk`, `.tmp` 파일 목록에서 제외
4. **UniqueViolationError** → 동시 실행 시 file_hash 충돌 처리 (rollback + 재조회)
5. **5% 실패율 중단 로직** → 제거, 끝까지 실행 후 실패 목록 별도 저장
6. **file_size/mime_type 누락 2,370건** → NAS os.stat 기반 일괄 채움
7. **빈 chunk_text 12건** → 삭제 + 문서 재분류

## 남은 작업 (2단계 이후)

- failed 136건 중 원본 없는 122건: DB 정리 또는 삭제 판단 필요
- file_size/mime 누락 252건: 원본 파일 없어 채울 수 없음, 동일 판단 필요
- hwpx 14건: text_extractor에 추가됨, 배치 재실행 시 처리 가능
- processing 51건 → 재처리 완료 (38 성공, 7 빈 pptx failed, 6 파일 없음 failed)

## 관련 문서

- [Front Matter 메타데이터 설계 리서치](../research/rag/260320_FrontMatter_메타데이터_설계_리서치.md)
- [CompanyX RAG 문서 완벽도 평가](../../valuation/260322_companyx_rag_문서_완벽도_평가.md)
- [MD 중간표현 SSOT 설계 리서치](../research/rag/260320_MD_중간표현_SSOT_설계_리서치.md)
- [다형식문서 RAG 1차 계획](../plans/260320_다형식문서_RAG_1차_MD_메타_정규화_계획.md)
