벡터가 왜 필요할까?
1. 기존 추천 시스템의 한계
벡터 기반 추천 시스템
항목 | 내용 |
---|---|
정의 | 사용자의 행동이나 관심사를 벡터로 표현하고, 제품/콘텐츠도 벡터로 만들어 의미상 가까운 것을 추천 |
예시 | 유저 A가 본 영화 → 로맨틱 코미디 → 해당 벡터 생성 → 유사한 영화 벡터 추천 (장르 다르지만 분위기 유사 등) |
작동 방식
장점
실제 사용 예시
플랫폼 | 활용 방식 |
---|---|
Netflix | 시청 기록 → 벡터 → 유사 콘텐츠 추천 |
Spotify | 음악 벡터 → 분위기 유사 음악 추천 |
쿠팡/아마존 | 상품 벡터 + 유저 행동 → 유사 상품 추천 |
벡터 기반 이미지 검색
정의
예시
기존 이미지 검색 방식의 한계
sunset.jpg
또는 #sunset
태그 필요 → 텍스트 정보 없으면 검색 불가작동 방식
장점
텍스트 벡터화란?
주요 응용 분야
분야 | 설명 |
---|---|
의미 기반 검색 (Semantic Search) | - 사용자가 입력한 문장의 의도에 맞는 결과를 검색 - 예시: “휴가용 가벼운 책 추천” → 여행 에세이, 소설 추천 - 과학 기술 관련 서적 → 기술 서적 목록 출력 |
유사 문서 찾기 | - 논문, 기사, 리뷰 등에서 비슷한 문서 자동 연결 - 예시: 특정 논문과 관련된 다른 논문 자동 찾기 |
챗봇 응답 검색 (RAG 방식) | - 질문 → 벡터화 → 벡터 DB에서 유사한 문서 검색 - 검색된 문서를 LLM에 넣어 답변 생성 → 최신 정보 + 정확한 응답 가능 (예: ChatGPT with Retrieval) |
대표 벡터 모델
모델 | 용도 |
---|---|
BERT | 문장/단어의 문맥 벡터화 |
Sentence-BERT | 문장 간 유사도 계산에 특화 |
OpenAI Embedding | 문장 → 벡터 변환에 강력 |
CLIP | 텍스트 + 이미지 공동 벡터화 |
이 분야 공통점
벡터 DB는 AI 시스템의 의미 기반 검색 엔진 역할을 수행함.
OPENAI가 만든, 텍스트와 이미지를 함께 이해할 수 있는 AI 모델
CLIP은 이미지와 텍스트를 같은 공간(벡터 공간)에 매핑
CLIP은 2개의 인코더를 가지고 있음
CLIP은 텍스트와 이미지를 같은 벡터 공간에서 비교할 수 있기 때문에 텍스트로 이미지 찾기, 이미지로 텍스트 찾기 둘 다 가능
import clip
import torch
from PIL import Image
model, preprocess = clip.load("ViT-B/32")
image = preprocess(Image.open("cat.jpg")).unsqueeze(0)
text = clip.tokenize(["a cat", "a dog", "a car"])
with torch.no_grad():
image_features = model.encode_image(image)
text_features = model.encode_text(text)
# 유사도 계산 (Cosine similarity)
similarity = (image_features @ text_features.T).softmax(dim=-1)
print(similarity)
RAG를 구성하는 핵심 요소
구성 요소 | 역할 | 쉽게 말하면 |
---|---|---|
질문 임베딩 (Embedding) | 질문을 숫자(벡터)로 변환 | "의미를 계산하는 방식" |
벡터 DB | 의미가 비슷한 문서를 저장하고 검색 | "AI용 검색창" |
LLM (GPT 등) | 문서를 참고해서 응답 생성 | "지식과 언어 능력 담당" |
장점
항목 | 설명 |
---|---|
최신 정보 사용 가능 | 실시간으로 새로운 문서를 검색해서 반영 가능 |
사내 문서 기반 응답 | 기업 내부 매뉴얼, 정책 등을 연결해 정확한 응답 가능 |
환각(Hallucination) 줄이기 | LLM이 "모른다" 하지 않고, 문서를 기반으로 응답하여 신뢰도 향상 |
유연한 시스템 확장 | 모델을 다시 학습할 필요 없이 문서만 바꾸면 됨 |
LLM 한계 | 설명 |
---|---|
오래된 지식 | 최신 뉴스나 문서는 알지 못함 |
긴 문서 기억 어려움 | 긴 텍스트를 한 번에 모두 입력할 수 없음 |
헛소리(?) 가능성 | 모르면 그럴듯한 거짓말을 함 (AI 환각 현상) |
이 문제를 해결하기 위해 등장한 것이 바로 벡터 데이터베이스 + RAG 조합