docs: skill-rag-file 연동 문서 업데이트

- 중복 코드 제거
- 미해결 문제 추가 (파일 활용, 볼륨 마운트)
- ChromaDB 검색 구조 설명 추가
This commit is contained in:
happybell80 2025-09-16 23:54:13 +09:00
parent e475480277
commit 44896f1b1e

View File

@ -72,30 +72,9 @@ brain_service/llm_service (파일 처리 없이 텍스트만 처리)
## 5. 데이터베이스 상태 (51123 PostgreSQL) ## 5. 데이터베이스 상태 (51123 PostgreSQL)
### team_document 테이블 상태 ### team_document 테이블 상태
**PostgreSQL 실제 테이블** (file_size, mime_type, chunk_count, processing_status 포함): - 테이블과 모델 동기화 완료
```sql - file_size, mime_type, chunk_count, processing_status 컬럼 포함
id UUID PRIMARY KEY DEFAULT gen_random_uuid() - 유니크 인덱스: idx_team_doc_hash (file_hash)
team_id UUID NOT NULL REFERENCES team(id)
filename VARCHAR(255) NOT NULL
file_hash VARCHAR(64) NOT NULL
file_size BIGINT
mime_type VARCHAR(100)
storage_path TEXT NOT NULL
text_content TEXT
chunk_count INTEGER DEFAULT 0
processing_status VARCHAR(20) DEFAULT 'pending'
metadata JSONB DEFAULT '{}'
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
```
**skill-rag-file 코드 모델** (app/models/database.py - 수정 완료):
```python
# 실제 테이블과 동기화됨
id, team_id, filename, file_hash, file_size, mime_type,
storage_path, text_content, chunk_count, processing_status,
metadata, created_at, updated_at
```
## 6. 확인 완료 사항 ## 6. 확인 완료 사항
- ✅ team_document 테이블 생성됨 (코드 모델 동기화 완료) - ✅ team_document 테이블 생성됨 (코드 모델 동기화 완료)
@ -138,10 +117,36 @@ metadata, created_at, updated_at
- API 응답: 200 OK - API 응답: 200 OK
### 비동기 병렬 처리 구현 (2025-09-16) ### 비동기 병렬 처리 구현 (2025-09-16)
- **문제**: 큰 파일(XLSX 10분) 처리 중 작은 파일(PDF) 대기 - 문제: 큰 파일 처리 중 작은 파일 대기
- **해결**: asyncio.Semaphore(3)로 최대 3개 동시 처리 - 해결: asyncio.Semaphore(3)로 최대 3개 동시 처리
- **구현**: - 결과: 전체 처리 시간 단축
- process_single_file() 함수로 개별 파일 처리 분리
- asyncio.gather()로 모든 파일 병렬 처리 ## 9. 미해결 문제 (2025-09-16)
- 각 파일이 독립적으로 처리되어 작은 파일 빠른 응답
- **결과**: 전체 처리 시간 단축, 사용자 경험 개선 ### 파일 처리 후 로빙 활용 문제
- **현상**: 파일이 skill-rag-file로 저장되지만 로빙이 파일 내용 모름
- **원인**: process_slack_files_async와 process_slack_message_async가 독립 실행
- **필요**: 파일 처리 완료 후 검색 결과를 LLM context에 포함
### ChromaDB 볼륨 마운트 불일치
- **rb8001**: /home/admin/ivada_project/rb8001/chroma_db → /code/chroma_db (영구 저장)
- **skill-rag-file**: 볼륨 마운트 없음 (컨테이너 재시작 시 데이터 손실)
- **해결 필요**: skill-rag-file에도 영구 볼륨 마운트 추가
### 대화와 문서 분리 저장 구조
- **설계 의도**:
- rb8001: 사용자 대화 임베딩 (짧고 자주 변경)
- skill-rag-file: 문서 임베딩 (크고 고정적)
- **장점**: 검색 성능 최적화, 용도별 처리 분리
- **단점**: 두 컬렉션 간 연동 복잡도 증가
### ChromaDB 검색 구조 (API 통신)
- **현재 구조**:
- rb8001: 자체 ChromaDB에서만 검색
- skill-rag-file: 자체 ChromaDB에서만 검색
- 서로 직접 폴더 참조 없음
- **문서 검색 플로우**:
1. rb8001 → skill-rag-file API 호출 (http://localhost:8508/api/search)
2. skill-rag-file이 자체 ChromaDB 검색 후 결과 반환
3. rb8001이 API 응답 받아서 LLM context에 포함
- **결론**: API 통신으로 분리된 구조, 직접 폴더 참조 불필요