From 088d8ed24de08e3492e3c2d6555eb52f92413256 Mon Sep 17 00:00:00 2001 From: happybell80 Date: Tue, 16 Sep 2025 23:29:55 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20ChromaDB=20=EB=A9=94=ED=83=80=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=20=EC=86=90=EC=83=81=20=EB=AC=B8=EC=A0=9C=20?= =?UTF-8?q?=ED=95=B4=EA=B2=B0=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 해결 과정: ChromaDB 초기화 (24 서버) - 원인: ChromaDB 1.0.x 스키마 자동 마이그레이션 실패 - 결과: 정상 작동 중 (2025-09-16 23:23 해결) --- ...l80_rb8001_chromadb_metadata_corruption.md | 53 ++++++++----------- 1 file changed, 23 insertions(+), 30 deletions(-) diff --git a/troubleshooting/250916_happybell80_rb8001_chromadb_metadata_corruption.md b/troubleshooting/250916_happybell80_rb8001_chromadb_metadata_corruption.md index 6b99205..1ab1ec4 100644 --- a/troubleshooting/250916_happybell80_rb8001_chromadb_metadata_corruption.md +++ b/troubleshooting/250916_happybell80_rb8001_chromadb_metadata_corruption.md @@ -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는 구버전 스키마 자동 마이그레이션 실패 가능 - 백업 없이 마이그레이션 진행 금지 -- 메타데이터 타입 변경 시 명시적 타입 캐스팅 필요 \ No newline at end of file +- 스키마 손상 시 초기화가 가장 확실한 해결책 \ No newline at end of file