- itsm/ -> workspace/guardia-itsm/ - manager/ -> workspace/guardia-manager/ - app/ -> workspace/guardia-messenger/ - manual/ -> workspace/guardia-docs/ workspace/zioinfo-web/ unchanged. git mv preserves full commit history. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
3.4 KiB
3.4 KiB
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온프레미스 임베딩
설치 및 설정
# 설치
/opt/guardia/venv/bin/pip install chromadb langchain-chroma
# 디렉터리
mkdir -p /opt/guardia/vectordb
GUARDiA 연동 코드
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가 필요한 경우 추천합니다.
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개 |
임베딩 스크립트
# /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