AI 에이전트

Ollama와 Qdrant 벡터 데이터베이스로 완성하는 로컬 RAG 지식 검색 엔진

📅2026년 8월 5일
✍️꼬꼬마 (kkokkmakn)
1인 유니콘 AI-Native
⏱️10분

1. 로컬 RAG(Retrieval-Augmented Generation)가 필수적인 이유

대규모 언어 모델은 뛰어난 언어 능력을 지니고 있지만, 특정 개인이나 기업의 비공개 인프라 설정, 수십 년간 축적된 전문 기술 노하우, 또는 최신 실측 수치를 자체적으로 알지 못합니다. 이로 인해 잘못된 답변을 사실처럼 말하는 환각(Hallucination) 현상이 발생합니다.

**RAG(검색 증강 생성)**는 질문이 들어왔을 때 나의 개인 지식 저장소(Obsidian Vault)에서 가장 연관성이 높은 문서를 벡터 유사도로 먼저 검색한 뒤, 해당 문맥(Context)을 프롬프트에 동봉하여 LLM에게 전달함으로써 100% 사실에 기반한 정확한 답변을 도출하는 기법입니다.

2. 30년 지식의 벡터화: 청킹(Chunking)과 BGE-M3 고밀도 임베딩

옵시디언 마크다운 파일 수천 장을 무작정 벡터 DB에 밀어 넣으면 문맥이 깨져 검색 품질이 급락합니다. 이를 방지하기 위해 다음과 같은 의미론적 청킹(Semantic Chunking)을 적용했습니다:

  • 마크다운 헤더 기반 분할: H2, H3 태그를 기준으로 문맥 단위 분할 (평균 500~800 토큰).
  • BGE-M3 다국어 임베딩 모델: 한국어와 영어를 동시에 지원하는 1024차원 고밀도 벡터 공간에 매핑.
  • HNSW (Hierarchical Navigable Small World) 인덱싱: 수십만 개의 벡터 중 가장 유사한 상위 5개 문서를 **5ms 이내**에 초고속 탐색.

3. Qdrant 벡터 데이터베이스 클러스터 구축

Rust 언어로 작성되어 극단적인 속도와 적은 메모리 점유율을 자랑하는 Qdrant를 Proxmox LXC 컨테이너 위에 배포하고 분산 컬렉션을 생성했습니다:

# Qdrant 컬렉션 생성 예시 (1024차원 코사인 유사도)
curl -X PUT "http://10.10.10.141:6333/collections/makers_second_brain"   -H "Content-Type: application/json"   -d '{
    "vectors": {
      "size": 1024,
      "distance": "Cosine"
    },
    "optimizers_config": {
      "default_segment_number": 4
    }
  }'

4. 실시간 질의응답 지연시간 300ms 최적화

사용자가 질문을 입력했을 때 [질문 벡터화(40ms) → Qdrant HNSW 검색(8ms) → Ollama 로컬 LLM 스트리밍 시작(120ms)]의 전체 파이프라인 레이턴시를 **300ms 이내**로 최적화했습니다.

외부 인터넷 연결이 완전히 차단된 폐쇄망 환경에서도 12대 홈랩 클러스터의 로컬 인프라만으로 완벽한 지식 비서가 24시간 작동하며 1인 유니콘의 의사결정을 실시간 보조합니다.

스폰서 링크 / ADVERTISEMENT