docs: ChromaDB 메타데이터 손상 문제 해결 완료

- 해결 과정: ChromaDB 초기화 (24 서버)
- 원인: ChromaDB 1.0.x 스키마 자동 마이그레이션 실패
- 결과: 정상 작동 중 (2025-09-16 23:23 해결)
This commit is contained in:
happybell80 2025-09-16 23:29:55 +09:00
parent 9a6ce27e27
commit 088d8ed24d

View File

@ -19,9 +19,10 @@ Collection with name rb8001_rag already exists
```
### 근본 원인
- ChromaDB 내부 메타데이터 컬럼이 BLOB으로 저장됨
- 시스템이 INTEGER(u64)로 읽으려 시도
- 데이터베이스 마이그레이션이나 버전 업그레이드 중 스키마 불일치 발생 추정
- ChromaDB 버전 업그레이드 시 스키마 변경 (0.5.x 이상)
- seq_id 타입: BLOB → INTEGER(u64) 변경 (성능 최적화)
- ChromaDB 1.0.21이 구 스키마 자동 마이그레이션 실패
- 기존 컬렉션의 메타데이터 테이블 손상
## 부가 문제
@ -38,46 +39,38 @@ Collection with name rb8001_rag already exists
- 실제 이메일 API 호출 시 500 에러 발생
## 현재 상태
- PostgreSQL: 정상 작동
- 기본 대화: 가능 (품질 저하)
- ChromaDB 의존 기능: 전면 마비
- 대화 맥락 유지 불가
- 개인화 기능 불가
- RAG 검색 불가
- **해결됨** (2025-09-16 23:23)
- ChromaDB 초기화 완료
- 백업: chroma_backup_20250916_232341
- rb8001: 정상 작동 (healthy)
- 모든 기능 정상화
## 해결 방향 (코드 수정 없이)
## 해결 과정
### 옵션 1: ChromaDB 컬렉션 재생성
### 실행한 해결책: ChromaDB 초기화 (24 서버에서 실행)
```bash
# ChromaDB 데이터 백업
cp -r /mnt/hdd/chromadb_data /mnt/hdd/chromadb_backup_20250916
# 1. 백업 생성
mv /mnt/hdd/chromadb_data /mnt/hdd/chromadb_data/chroma_backup_20250916_232341
# 컬렉션 삭제 및 재생성
docker exec rb8001 python -c "
import chromadb
client = chromadb.PersistentClient(path='/mnt/hdd/chromadb_data')
client.delete_collection('rb8001_rag')
"
```
# 2. 새 디렉토리 생성
mkdir -p /mnt/hdd/chromadb_data
### 옵션 2: ChromaDB 초기화
```bash
# 전체 ChromaDB 데이터 초기화
mv /mnt/hdd/chromadb_data /mnt/hdd/chromadb_data_old
mkdir /mnt/hdd/chromadb_data
# 3. rb8001 재시작
docker restart rb8001
```
### 옵션 3: 메타데이터 재인덱싱
- 기존 벡터 데이터를 새 컬렉션으로 마이그레이션
- 메타데이터 타입 명시적 지정 필요
### 결과
- 모든 컬렉션 삭제되어 깨끗한 상태로 초기화
- 새 대화 시작 시 자동으로 새 컬렉션 생성
- INTEGER(u64) 스키마로 정상 작동
## 영향 범위
- 모든 사용자 대화 영향
- 10:22부터 지속적 발생
- 10:22부터 23:23까지 약 13시간 지속
- skill-rag-file 등 연계 서비스도 영향 받음
## 교훈
- ChromaDB 버전 업그레이드 전 스키마 호환성 검증 필수
- ChromaDB 1.0.x는 구버전 스키마 자동 마이그레이션 실패 가능
- 백업 없이 마이그레이션 진행 금지
- 메타데이터 타입 변경 시 명시적 타입 캐스팅 필요
- 스키마 손상 시 초기화가 가장 확실한 해결책