| IT

3D Vector Space

마우스(PC)나 터치(모바일)로 공간을 회전시켜 보세요.
단어의 의미적 거리가 공간상의 실제 거리가 됩니다.

Vector Search
과일 (Fruit)
동물 (Animal)
IT/Tech
감정 (Emotion)
아래로 스크롤하여 더 알아보기

RAG & Vector Search: AI는 어떻게 의미를 이해할까요?

1. 컴퓨터의 언어: 임베딩 (Embedding)

컴퓨터는 "사과"라는 글자를 모릅니다. 대신 숫자만 이해할 수 있습니다. 임베딩(Embedding)은 단어나 문장의 '의미'를 숫자의 좌표(Vector)로 바꾸는 과정입니다.

비유: 도서관의 좌표

"사과"와 "바나나"는 좌표가 서로 가깝습니다. (의미가 비슷함) 반면 "강아지"는 아주 멀리 떨어져 있습니다. (의미가 다름)


2. 벡터 검색 (Vector Search)

AI가 질문에 답하기 위해 정보를 찾는 방법입니다. 단어의 철자가 같은지가 아니라, 의미(거리)가 가까운지를 확인합니다.

과정 (Simulation 미리보기)

  1. 질문: "맛있는 과일"이라고 입력합니다.
  2. 변환: 질문을 좌표로 바꿉니다. → [1.15, 0.85]
  3. 거리 계산: 이 좌표와 가장 가까운 점을 찾습니다.
    • 사과(0.05 거리) → 가깝다! (정답)
    • 강아지(6.5 거리) → 멀다! (탈락)

3. RAG (검색 증강 생성)

RAG (Retrieval-Augmented Generation)는 AI에게 부닝(Open Book)을 허용하는 것입니다. AI가 모르는 내용을 질문받으면:

  1. 검색(Retrieval): 벡터 검색으로 관련 문서를 찾아옵니다. (위의 과정)
  2. 생성(Generation): 찾아온 문서를 보고 답변을 만듭니다.
요약: "시험 칠 때 책(Vector DB)에서 정답이 있을만한 페이지(Nearest Neighbor)를 펴놓고 답을 쓰는 것."

4. 핵심 알고리즘 (Deep Dive)

데이터가 수억 개라면, 일일이 거리를 재는 건 너무 느립니다. 그래서 빠른 지름길을 만드는 기술이 필요합니다.


5. 코사인 유사도 vs 유클리드 거리

벡터 간 유사도를 측정하는 방법은 크게 2가지가 있습니다.

5.1 유클리드 거리 (Euclidean Distance)

예시:

문제점: 크기만 다르고 방향이 같은 벡터도 "다르다"고 판단합니다.

5.2 코사인 유사도 (Cosine Similarity)

예시:

비교표

구분 유클리드 거리 코사인 유사도
측정 대상 절대적 거리 방향 (각도)
값 범위 0 ~ ∞ (작을수록 가까움) -1 ~ 1 (1에 가까울수록 유사)
크기 영향 영향 받음 영향 안 받음
용도 물리적 거리 의미적 유사도
예시 좌표 거리, 이미지 픽셀 문서 유사도, 추천 시스템

언제 뭘 쓸까?

RAG에서는 보통 코사인 유사도를 사용합니다! (단어의 의미를 비교하므로)

6. 벡터 데이터베이스란?

일반 데이터베이스 (MySQL, PostgreSQL):

벡터 데이터베이스:

왜 필요할까?

일반 DB로는 벡터 검색이 너무 느립니다.

대표적인 벡터 데이터베이스

이름 특징 용도
Pinecone 클라우드 기반, 쉬운 시작 프로덕션 RAG 서비스
Weaviate 오픈소스, GraphQL 지원 복잡한 검색 요구사항
ChromaDB 경량, Python 친화적 로컬 개발, 프로토타입
Milvus 대규모, Kubernetes 친화적 엔터프라이즈급 서비스
Qdrant Rust 기반, 빠른 성능 고성능 검색
pgvector PostgreSQL 확장 기존 DB 인프라 활용

기본 워크플로우

# 1. 벡터 DB에 데이터 저장
db.add(id="doc1", vector=[0.1, 0.2, ...], text="사과는 과일")

# 2. 검색 (질문을 벡터로 변환 후)
results = db.search(query_vector=[0.15, 0.25, ...], top_k=5)

# 3. 결과 반환
# → [("doc1", 유사도: 0.95), ...]

7. LLM과 RAG의 결합: 프롬프트 엔지니어링

RAG의 핵심: AI에게 관련 문서를 함께 제공하는 것입니다.

프롬프트 구조

기본 RAG 프롬프트

[시스템]
당신은 문서를 참고해 답변하는 AI입니다.

[검색된 문서]
- 사과는 과일입니다. 빨갛고 달콤합니다.
- 사과에는 비타민 C가 풍부합니다.

[질문]
사과의 영양소는?

[답변]
사과에는 비타민 C가 풍부합니다. (문서 2 참고)

고급 기법

1. 인용 포함 (Citation)

질문: 사과의 색깔은?
답변: 사과는 빨갛습니다. [출처: 문서 1, 3번째 줄]

2. 다단계 검색 (Multi-hop)

1단계: "사과" 검색 → 문서 A, B, C
2단계: 문서 A에서 "비타민 C" 검색 → 더 자세한 정보

3. 하이브리드 검색


8. RAG의 한계와 미래

8.1 현재의 한계

환각 (Hallucination)

검색 품질

문서 길이 제한

8.2 Fine-tuning과의 차이

구분 RAG Fine-tuning
원리 문서를 검색해서 제공 AI 모델 자체를 재학습
비용 낮음 (검색만) 높음 (GPU 학습 필요)
속도 빠름 느림 (학습 시간)
업데이트 실시간 (문서만 추가) 재학습 필요
용도 자주 바뀌는 정보 고정된 전문 지식

결론: RAG와 Fine-tuning은 적대 관계가 아니라 보완 관계입니다!

8.3 미래 기술

GraphRAG

Adaptive RAG

Multimodal RAG


9. 실무 활용 사례

9.1 고객 지원 챗봇

문제: 고객이 "환불 어떻게 해요?"라고 물어봄

RAG 프로세스:

  1. 질문을 벡터로 변환
  2. "환불 정책" 문서 검색 (유사도 0.92)
  3. 문서 내용 + 질문 → GPT에 전달
  4. 답변: "환불은 구매 후 7일 이내 가능합니다. (환불 정책 3조 참고)"

효과: 24시간 자동 응답, 정확도 95%+

9.2 사내 문서 검색

문제: 회사에 수천 개의 내부 문서, 찾기 어려움

RAG 프로세스:

  1. 모든 문서를 벡터 DB에 저장
  2. 직원이 "AWS 비용 절감 방법?"이라고 검색
  3. 관련 문서 10개 자동 추출 + 요약 생성
  4. 출처와 함께 답변 제공

효과: 검색 시간 80% 단축, 정보 접근성 향상

9.3 의료 진단 보조

문제: 의사가 희귀병 증상을 정확히 기억하기 어려움

RAG 프로세스:

  1. "발열 + 발진 + 관절통" 입력
  2. 의학 논문 DB에서 유사 증례 검색
  3. "류마티스 열 가능성 87%" 제안 + 논문 인용

주의: AI는 보조 도구일 뿐, 최종 판단은 의사!


정리

개념 핵심 비유
임베딩 의미를 숫자(좌표)로 변환 도서관 좌표
벡터 검색 의미적으로 가까운 것 찾기 가까운 책장 찾기
RAG 검색 + AI 답변 생성 오픈북 시험
코사인 유사도 방향(의미) 비교 각도 측정
벡터 DB 고속 벡터 검색 전용 도서관 색인 시스템
Fine-tuning AI 모델 재학습 선생님 교육

핵심 워크플로우:

  1. 문서를 임베딩으로 변환 → 벡터 DB에 저장
  2. 질문도 임베딩으로 변환
  3. 벡터 검색 (HNSW 등)으로 가장 가까운 문서 찾기
  4. 문서 + 질문 → LLM에 전달
  5. 정확한 답변 생성 (인용 포함!)