벡터DB의 이해
벡터 형식으로 저장된 데이터를 관리하고 유사도 기반 검색 및 작업을 최적화 하도록 설계된 데이터베이스이다
AI/ML, 자연어 처리(NLP), 이미지 검색, 추천 시스템에서 주로 사용 / 최근접 이웃 검색(ANN)기법 활용
벡터DB의 특징
벡터DB의 종류
- 라이브러리/검색엔진 (실제 DB는 따로 있어야함)
- Redis : 빠른 검색 속도와 캐시 기능 제공
- MongoDB : Atlas Vector Search 기능을 제공하며, 기존 MongoDB 환경에서 사용 가능
- Elasticsearch : KNN검색 기능 지원
- FAISS : 고속 유사도 제공
- Pinecone : 대규모 벡터 데이터 처리 가능
- Weaviate : 데이터 검색과 AI통합 기능 제공
- Milvus : 대규모 데이터 처리 지원 오픈소스
- Qdrant : 벡터 검색과 필터링 기능에 강점
- Chroma : 빠르게 가볍게 사용가능
유사도 계산 방식
- Cosine Similarty
- 방향이 얼마나 비슷한지(의미가 비슷하면 방향이 비슷)
- 유클리드 거리
코사인: 패턴/비율 위주
유클리드: 값 자체가 얼마나 비슷한지(절대 크기 포함) 위주
- 점수 기반 검색
- 유사도 거리 계산 후 기준점수를 정하고 그 이상(이하)인 것만 결과로 내보내는 방식
벡터DB 활용 사례
- 추천 시스템 : 사용자 행동(별점, 시청콘텐츠, 구매 물건, 어떤것을클릭)
- 이미지 검색 : 유사한 이미지 검색(이미지의 특징값 => 벡터)
- 문서 검색 : 텍스트 임베딩 기반으로 문서 찾기(->RAG(검색증강기법))
- 음성 검색 : 음색, 패턴, 발화 특징 => 벡터
- 의료 데이터 검색 : 모든 증상(혈압,체온)들을 다 가져와 벡터화한뒤 환자의 증세랑 비슷한거 찾기