벡터 검색 이해: 키워드 검색의 한계와 해결 방안
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
데이터 분석, 인공지능
대상자
- 대상자: 소프트웨어 개발자, 데이터 과학자, AI 엔지니어
- 난이도: 중급(벡터 검색, Qdrant 사용, Python 코드 포함)
핵심 요약
- 키워드 검색의 한계: "table tennis"와 같은 질의는 "테이블"이라는 단어가 포함된 문서(예: 식탁, 테니스)를 반환할 수 있음.
- 벡터 검색의 원리: 텍스트/이미지 등 모든 데이터를 고차원 벡터로 변환하여 의미 유사도 기반 검색 수행.
- 하이브리드 검색 전략: 스파스(키워드) 임베딩과 디즈(의미) 임베딩을 결합하여 정확성과 유연성 균형 도달.
섹션별 세부 요약
1. 문서 벡터화 (Document Vectorization)
- 임베딩 모델(예: BAAI/bge-small-en
)을 통해 텍스트를 고차원 벡터로 변환.
- 임베딩 벡터(word/sentence embeddings)는 텍스트의 의미를 좌표로 표현.
- 예: table tennis
은 관련 키워드가 아닌 의미 유사도로 검색.
2. 질의 벡터화 및 검색 (Query Vectorization & Retrieval)
- 사용자 질의를 동일한 임베딩 모델로 변환 후 코사인 유사도 계산.
- 유사도 기반으로 최근접 벡터 검색(예: machine-learning-zoomcamp
코스 관련 문서).
- Retrieval-Augmented Generation(RAG) 파이프라인 핵심 기술.
3. Qdrant 설치 및 사용 (Vector DB 구현)
- Qdrant 설치: Docker 명령어(docker pull qdrant/qdrant
, docker run
) 활용.
- Python 클라이언트 설치: pip install "qdrant-client[fastembed]>=1.14.2"
- 컬렉션 생성: create_collection
API로 벡터 공간 정의(예: EMBEDDING_DIMENSIONS=384
, COSINE
거리 계산).
4. 문서 인서트 및 검색 수행 (Upsert & Search)
- 점(문서) 생성: PointStruct
로 벡터와 메타데이터(예: course
, section
) 저장.
- 검색 API: query_points
로 질의 벡터와 유사도 계산 후 결과 반환(예: vector_search("How to install Kafka?")
).
5. 하이브리드 검색 전략 (Hybrid Search)
- 스파스 임베딩: 정확한 키워드 매칭(예: 선수 통계, 특정 제품 코드).
- 디즈 임베딩: 의미 유사도 기반 검색(예: "nail-biter" 게임 유사도).
- 퓨전 기법: 코사인 유사도와 키워드 필터 병합(예: reciprocal rank fusion
또는 multi-stage pipeline
).
결론
- 실무 적용 팁: Qdrant와 임베딩 모델을 결합하여 하이브리드 검색 구현.
- 예시:
llm-zoomcamp
프로젝트에서rag("How to install Kafka?")
로 문서 검색 후 LLM 답변 생성. - 핵심: 벡터 검색은 "의미가 같은 문서"를 찾는 핵심 기술로, RAG 파이프라인에서 필수적.