guardia-docs/32_벡터DB_제안서.md
DESKTOP-TKLFCPRython 2bd7d876cc refactor: 101.79.17.164 → zioinfo.co.kr 전체 도메인 변환 + Manager UI 배포
- 37개 파일 IP → zioinfo.co.kr 치환 (소스/매뉴얼/설정/하네스)
- Manager DrConsole/NetworkConsole/CsapConsole 빌드 + /var/www/manager/ 배포
- 테스트: Manager HTTP 200, ITSM 신규 API 7개 전체 200

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 10:09:17 +09:00

125 lines
3.4 KiB
Markdown

# GUARDiA 벡터 데이터베이스 제안서
> **서버**: zio-server (zioinfo.co.kr) | **작성일**: 2026-05-30
---
## 1. 벡터 DB 비교
| DB | 설치 | 메모리 | 영속성 | REST API | 한국어 | GUARDiA 적합성 |
|----|------|--------|--------|---------|--------|--------------|
| **ChromaDB** | pip | 낮음 | 파일 기반 | ❌ (Python) | ✅ | ⭐ 1순위 |
| **Qdrant** | Docker | 중간 | 볼륨 | ✅ | ✅ | ⭐ 2순위 |
| FAISS | pip | 낮음 | 없음(메모리) | ❌ | ✅ | 빠른 검색 |
| Weaviate | Docker | 높음 | 볼륨 | ✅ | ✅ | 대규모 용 |
| Milvus | Docker | 높음 | 볼륨 | ✅ | ✅ | 엔터프라이즈 |
---
## 2. 최종 선택: ChromaDB
### 선택 이유
- **설치 간편**: `pip install chromadb` 한 줄
- **서버 RAM 절약**: 7.8GB RAM 환경에 최적
- **Python 직접 통합**: GUARDiA FastAPI와 완벽 연동
- **로컬 파일 영속**: 별도 서비스 불필요
- **Ollama 임베딩 연동**: `nomic-embed-text` 온프레미스 임베딩
### 설치 및 설정
```bash
# 설치
/opt/guardia/venv/bin/pip install chromadb langchain-chroma
# 디렉터리
mkdir -p /opt/guardia/vectordb
```
### GUARDiA 연동 코드
```python
import chromadb
from chromadb.config import Settings
# 클라이언트 초기화
client = chromadb.PersistentClient(
path="/opt/guardia/vectordb",
settings=Settings(anonymized_telemetry=False)
)
# 컬렉션 생성
collection = client.get_or_create_collection(
name="guardia_kb",
metadata={"hnsw:space": "cosine"}
)
# 문서 추가
collection.add(
documents=["서버 재시작 절차: systemctl restart guardia"],
metadatas=[{"type": "kb", "category": "deployment"}],
ids=["kb-001"]
)
# 유사도 검색
results = collection.query(
query_texts=["guardia 서비스 재시작하는 방법"],
n_results=3
)
```
---
## 3. 2순위: Qdrant (Docker)
RAM이 충분하거나 REST API가 필요한 경우 추천합니다.
```bash
docker run -d --name qdrant \
-p 6333:6333 \
-v /opt/guardia/qdrant:/qdrant/storage \
qdrant/qdrant
```
---
## 4. GUARDiA 코드베이스 학습 계획
### 학습 데이터 소스
| 소스 | 내용 | 문서 수 예상 |
|------|------|------------|
| `/opt/guardia/app/routers/*.py` | API 라우터 코드 | ~70개 |
| `/opt/guardia/app/core/*.py` | 비즈니스 로직 | ~38개 |
| `/opt/guardia/app/models.py` | 데이터 모델 | 1개 (대용량) |
| `/opt/guardia/app/static/` | UI 코드 | ~20개 |
| `C:/GUARDiA/manual/*.md` | 운영 문서 | ~32개 |
### 임베딩 스크립트
```python
# /opt/guardia/app/scripts/embed_codebase.py
from langchain_community.document_loaders import DirectoryLoader, TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_ollama import OllamaEmbeddings
from langchain_chroma import Chroma
loader = DirectoryLoader("/opt/guardia/app", glob="**/*.py",
loader_cls=TextLoader, loader_kwargs={"encoding": "utf-8"})
docs = loader.load()
splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
chunks = splitter.split_documents(docs)
embeddings = OllamaEmbeddings(
model="nomic-embed-text",
base_url="http://localhost:11434"
)
vectordb = Chroma.from_documents(
chunks, embeddings,
persist_directory="/opt/guardia/vectordb",
collection_name="guardia_codebase"
)
print(f"임베딩 완료: {len(chunks)}개 청크")
```
---
*GUARDiA ITSM v2.0.0 | (주)지오정보기술 | 2026-05-30*