docs: ChromaDB 컬렉션 재생성 및 최종 해결 문서화

- 근본 원인: 기존 컬렉션의 잘못된 임베딩 설정
- 해결: 컬렉션 재생성 + 코드 수정
- 성능: 6-20초 → 1.77초 (91% 개선)
This commit is contained in:
happybell80 2025-08-07 12:07:08 +09:00
parent db500b05e2
commit 9b811504c5

View File

@ -214,6 +214,58 @@ results = collection.query(
- 모델 다운로드 제거 - 모델 다운로드 제거
- 벡터 일치로 정확도 향상 - 벡터 일치로 정확도 향상
## 오후 12시 04분
### ChromaDB 컬렉션 재생성으로 완전 해결
**근본 원인 발견**:
- 기존 컬렉션이 DefaultEmbeddingFunction(ONNX)로 생성되어 있었음
- get_or_create_collection은 기존 설정을 변경하지 않음
- HTTPEmbeddingFunction 설정이 계속 무시됨
**서버팀 작업**:
```bash
# 서버에서 컬렉션 재생성
- 5개 컬렉션 삭제 (잘못된 ONNX 설정)
- 4개 컬렉션 재생성 (HTTPEmbeddingFunction)
```
**최종 코드 수정**:
```python
# storage.py:108-112 - embedding_function 파라미터 제거
results = collection.query(
query_texts=[query],
n_results=n_results,
where={"user_id": user_id}
# embedding_function 파라미터 제거 (1.0.15 미지원)
)
```
**최종 성능 개선**:
- 전체 응답: 6-20초 → 1.77초 (91% 개선)
- ChromaDB 검색: ~100ms
- Mistral 선택: ~200ms
- Gemini 생성: ~1.4초 (정상)
## 교훈
1. **ChromaDB 버전별 API 차이**
- 1.0.15: query()에 embedding_function 파라미터 없음
- 최신 버전과 문서가 다를 수 있음
2. **get_or_create_collection의 함정**
- 이미 존재하는 컬렉션의 설정은 변경 안 됨
- 잘못된 설정이 계속 유지됨
3. **ONNX 모델 위치의 중요성**
- 중앙 서비스(8015): 1개 모델 공유
- 각 로빙: 개별 모델 다운로드 (79.3MB × N)
4. **성능 문제 디버깅**
- 첫 실행 vs 이후 실행 구분
- 숨겨진 다운로드 확인
- 임베딩 함수 일치 검증
## 다음 작업 ## 다음 작업
- [ ] 남은 하드코딩 환경변수화 - [ ] 남은 하드코딩 환경변수화