docs: skill-rag-file 연동 문서 업데이트
- 중복 코드 제거 - 미해결 문제 추가 (파일 활용, 볼륨 마운트) - ChromaDB 검색 구조 설명 추가
This commit is contained in:
parent
e475480277
commit
44896f1b1e
@ -72,30 +72,9 @@ brain_service/llm_service (파일 처리 없이 텍스트만 처리)
|
||||
## 5. 데이터베이스 상태 (51123 PostgreSQL)
|
||||
|
||||
### team_document 테이블 상태
|
||||
**PostgreSQL 실제 테이블** (file_size, mime_type, chunk_count, processing_status 포함):
|
||||
```sql
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid()
|
||||
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
|
||||
```
|
||||
- 테이블과 모델 동기화 완료
|
||||
- file_size, mime_type, chunk_count, processing_status 컬럼 포함
|
||||
- 유니크 인덱스: idx_team_doc_hash (file_hash)
|
||||
|
||||
## 6. 확인 완료 사항
|
||||
- ✅ team_document 테이블 생성됨 (코드 모델 동기화 완료)
|
||||
@ -138,10 +117,36 @@ metadata, created_at, updated_at
|
||||
- API 응답: 200 OK
|
||||
|
||||
### 비동기 병렬 처리 구현 (2025-09-16)
|
||||
- **문제**: 큰 파일(XLSX 10분) 처리 중 작은 파일(PDF) 대기
|
||||
- **해결**: asyncio.Semaphore(3)로 최대 3개 동시 처리
|
||||
- **구현**:
|
||||
- process_single_file() 함수로 개별 파일 처리 분리
|
||||
- asyncio.gather()로 모든 파일 병렬 처리
|
||||
- 각 파일이 독립적으로 처리되어 작은 파일 빠른 응답
|
||||
- **결과**: 전체 처리 시간 단축, 사용자 경험 개선
|
||||
- 문제: 큰 파일 처리 중 작은 파일 대기
|
||||
- 해결: asyncio.Semaphore(3)로 최대 3개 동시 처리
|
||||
- 결과: 전체 처리 시간 단축
|
||||
|
||||
## 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 통신으로 분리된 구조, 직접 폴더 참조 불필요
|
||||
Loading…
x
Reference in New Issue
Block a user