인공지능과 머신 러닝 분야, 특히 검색 증강 생성(RAG) 시스템이나 시맨틱 검색과 같은 애플리케이션을 구축할 때는 방대한 양의 비정형 데이터를 효율적으로 처리하고 검색하는 것이 매우 중요합니다. 벡터 데이터베이스는 이러한 과제를 해결하기 위한 핵심 기술로 부상했습니다. 벡터 데이터베이스는 고차원 벡터 데이터를 저장하기 위한 전문 데이터베이스일 뿐만 아니라 차세대 AI 애플리케이션을 구동하기 위한 핵심 인프라이기도 합니다.
이 글에서는 벡터 데이터베이스의 개념, 원리, 적용 시나리오를 살펴보고, 현재 주류 오픈 소스 벡터 데이터베이스인 Weaviate, Milvus, Qdrant를 비교 분석하여 독자들이 벡터 데이터베이스의 가치를 이해하고 실제 프로젝트에서 현명한 기술적 선택을 하는 데 도움이 되는 포괄적이고 심도 있는 벡터 데이터베이스 가이드를 제공하고자 합니다.
벡터 데이터베이스란 무엇인가요? 기존 데이터베이스에서 벡터 검색으로
벡터 데이터베이스의 고유한 특징을 이해하려면 먼저 벡터가 무엇이며 벡터 데이터를 다룰 때 기존 데이터베이스가 압도당하는 이유를 이해해야 합니다.
벡터: 데이터의 수학적 표현
간단히 말해, 벡터는 데이터의 특징이나 속성을 나타내는 데 사용되는 수학적 도구로, 다차원 공간에서 점으로 볼 수 있습니다. 벡터 데이터베이스의 맥락에서, 우리는 일반적으로고차원 벡터즉, 이러한 벡터는 데이터의 복잡성과 필요한 표현의 세분성에 따라 수십 개에서 수천 개에 이르는 많은 수의 차원을 갖습니다.
벡터 임베딩: 비정형 데이터의 정형화된 표현
그렇다면 이러한 고차원 벡터는 어떻게 생성될까요? 그 해답은임베디드 기능를 사용하여 원시 비정형 데이터(예: 텍스트, 이미지, 오디오, 비디오 등)를 벡터로 변환합니다. 이 변환 프로세스는벡터 임베딩기계 학습 모델, 단어 임베딩 기법 또는 특징 추출 알고리즘과 같은 방법을 사용하여 데이터의 의미 정보 또는 특징을 압축하여 컴팩트한 벡터 공간으로 압축합니다.
예를 들어 텍스트 데이터의 경우 Word2Vec, GloVe, FastText 또는 트랜스포머 모델(예: BERT, Sentence-BERT) 및 기타 기법은 각 단어, 문장 또는 전체 텍스트를 벡터로 변환합니다. 벡터 공간에서 의미적으로 유사한 텍스트는 벡터가 서로 더 가까워집니다.

벡터 데이터베이스의 핵심 강점: 유사도 검색
관계형 데이터베이스(예: PostgreSQL, MySQL) 및 NoSQL 데이터베이스(예: MongoDB, Redis)와 같은 기존 데이터베이스는 주로 정형 또는 반정형 데이터를 저장하고 쿼리하도록 설계되었으며 정확한 일치 또는 사전 정의된 기준에 따라 데이터를 검색하는 데 탁월한 성능을 발휘합니다. 그러나 다음을 기반으로 하는 데이터 검색의 경우의미적 유사성어쩌면문맥적 의미데이터 검색은 기존 데이터베이스를 비효율적으로 만듭니다.
이러한 격차를 메우기 위해 벡터 데이터베이스가 등장했습니다. 벡터 데이터베이스의 핵심 강점은 다음과 같은 기능입니다.벡터 거리 또는 유사성을 기반으로 유사성 검색 및 검색을 효율적으로 수행하세요.. 즉, 정확한 키워드 매칭을 수행하지 않고도 의미 또는 기능의 유사성을 기반으로 데이터를 찾을 수 있습니다.
벡터 데이터베이스와 기존 데이터베이스의 주요 차이점
벡터 데이터베이스의 고유성을 보다 명확하게 이해하기 위해 벡터 데이터베이스와 기존 데이터베이스의 주요 차이점을 다음과 같이 요약해 보았습니다:
특성화 | 벡터 데이터베이스 | 기존 데이터베이스(관계형/NoSQL) |
---|---|---|
데이터 유형 | 벡터 임베딩(고차원 벡터) | 구조화된 데이터 (표 형식 데이터, JSON 문서 등) |
핵심 운영 | 유사도 검색(벡터 유사도 계산) | 정확히 일치하는 쿼리, 범위 쿼리, 집계 분석 등 |
인덱스 유형 | 벡터 인덱스(ANN 인덱스 등) | B-트리 인덱스, 해시 인덱스, 반전 인덱스 등 |
문의 방법 | 벡터 거리(코사인 거리, 유클리드 거리 등) 기준 | SQL 기반 쿼리, 키-값 쿼리, 전체 텍스트 검색 등 |
애플리케이션 시나리오 | 시맨틱 검색, 추천 시스템, 추천 시스템 RAG이미지/오디오/비디오 검색 | 트랜잭션 처리, 데이터 분석, 콘텐츠 관리, 캐싱 |
데이터 모델 | 벡터 공간 모델 | 관계형 모델, 문서 모델, 키-값 모델, 그래프 모델 등이 있습니다. |
벡터 데이터베이스의 가치: AI 애플리케이션을 위한 초석
벡터 데이터베이스는 인공지능 및 머신 러닝 분야에서 특히 다음과 같은 분야에서 점점 더 중요한 역할을 하고 있습니다:
- 차세대 검색 엔진: 시맨틱 검색을 구현하여 사용자 쿼리의 의도를 파악하고 단순한 키워드 매칭이 아닌 보다 관련성 있고 맥락에 맞는 검색 결과를 반환합니다.
- 지능형 추천 시스템: 사용자의 과거 행동 및 항목 특성을 기반으로 개인화된 추천을 제공하여 추천 정확도와 사용자 경험을 개선합니다.
- LLM(대규모 언어 모델링) 애플리케이션: LLM에 장기 메모리와 효율적인 문맥 검색 기능을 제공하여 더욱 강력한 챗봇, Q&A 시스템, 콘텐츠 생성 애플리케이션을 구축할 수 있도록 지원합니다.
- 멀티모달 데이터 검색: 텍스트 설명으로 관련 이미지나 동영상을 검색하는 등 모달 간 유사성 검색을 활성화합니다.
요약하자면, 벡터 데이터베이스는 AI 시대의 비정형 데이터를 처리하고 검색하기 위한 핵심 인프라로, 기계가 의미를 이해하고 유사성을 추론할 수 있도록 지원하여 수많은 혁신적인 AI 애플리케이션을 구동합니다.
벡터 데이터베이스와 RAG: 강력한 검색 개선 생성 시스템 구축하기
RAG(검색 증강 생성) 시스템은 현재 대규모 언어 모델링 응용 분야에서 널리 사용되는 방향으로, 텍스트를 생성하기 전에 외부 지식 기반에서 관련 정보를 검색한 다음 검색된 정보를 컨텍스트로 사용하여 언어 모델이 보다 정확하고 신뢰할 수 있는 답변을 생성하도록 안내하는 것이 RAG의 핵심 아이디어입니다.
RAG 시스템에서 벡터 데이터베이스의 중심 역할
RAG 시스템에서 벡터 데이터베이스는 다음과 같은 역할을 합니다.저장소RAG 시스템은 방대한 지식 문서의 벡터 표현을 저장하고 효율적으로 검색하는 역할을 담당하며, RAG 시스템의 워크플로우는 대략 다음과 같습니다:
- 지식 기반 구축:
- 지식 문서(예: 텍스트, 웹 페이지, PDF 등)를 벡터 표현으로 벡터 임베딩하기.
- 이러한 벡터와 해당 문서 메타데이터를 벡터 데이터베이스에 저장합니다.
- 문의 검색:
- 사용자 쿼리를 수신하고 쿼리를 벡터 임베드하여 쿼리 벡터를 얻습니다.
- 쿼리 벡터를 사용하여 벡터 데이터베이스에서 유사성 검색을 수행하여 쿼리 벡터와 가장 유사한 문서 벡터를 검색합니다.
- 검색된 문서 벡터에 해당하는 원본 문서 또는 문서 조각을 가져옵니다.
- 텍스트 생성:
- 검색된 문서 조각은 사용자 쿼리와 함께 컨텍스트로서 대규모 언어 모델(LLM)에 공급됩니다.
- LLM은 문맥 정보를 기반으로 최종 답안 또는 텍스트를 생성합니다.

Milvus로 이미지 시맨틱 검색
벡터 데이터베이스가 RAG 시스템에 이상적인 이유는 무엇인가요?
- 효율적인 시맨틱 검색 기능: 벡터 데이터베이스는 의미론적 유사성을 기반으로 문서를 검색할 수 있으므로 사용자의 쿼리와 관련된 지식창고에서 문맥 정보를 찾아야 하는 RAG 시스템에 완벽하게 부합합니다.
- 방대한 지식 파일을 처리하세요: RAG 시스템은 일반적으로 많은 수의 지식 문서를 처리해야 하며, 벡터 데이터베이스는 RAG 시스템의 확장성 요구 사항을 충족하기 위해 방대한 벡터 데이터를 효율적으로 저장하고 검색할 수 있습니다.
- 사용자 문의에 빠르게 응답합니다: 벡터 데이터베이스의 유사도 검색은 매우 빠르며 RAG 시스템이 사용자 쿼리에 신속하게 응답할 수 있도록 합니다.
벡터 데이터베이스 선택: RAG 시스템을 위한 주요 결정 사항
올바른 벡터 데이터베이스를 선택하는 것은 RAG 시스템의 성능과 효율성에 매우 중요합니다. 벡터 데이터베이스마다 성능, 기능, 사용 편의성 면에서 차이가 있습니다. 다음 장에서는 벡터 데이터베이스의 선택 요소에 대해 논의하고 우수한 오픈 소스 벡터 데이터베이스인 Weaviate, Milvus, Qdrant 세 가지를 비교 분석하여 RAG 시스템에 가장 적합한 초석을 선택하는 데 도움을 드리고자 합니다.
벡터 데이터베이스 선택: 성능뿐만 아니라 다음과 같은 주요 요소에 집중하세요.
특정 제품을 비교하기 전에 벡터 데이터베이스를 선택할 때 고려해야 할 핵심 사항을 파악해 보겠습니다. 이러한 요소는 구축하는 RAG 시스템 또는 AI 애플리케이션의 성능, 확장성, 안정성 및 비용에 직접적인 영향을 미칩니다.
1. 오픈 소스 대 상용화: 자율성 대 사용 편의성
- 오픈 소스 벡터 데이터베이스(예: Milvus, Weaviate, Qdrant, Vespa):
- 장점: 자유로운 사용자 지정과 2차 개발을 위한 높은 자율성과 유연성, 데이터 보안 및 시스템 아키텍처에 대한 더 나은 제어. 활발한 오픈 소스 커뮤니티의 지원으로 빠른 반복과 신속한 문제 해결이 가능합니다. 일반적으로 저렴한 비용 또는 무료로 사용할 수 있습니다.
- 도전: 배포, 운영 및 유지 관리, 문제 해결에는 약간의 기술력이 필요합니다. 상업적 지원이 상대적으로 취약하여 커뮤니티에 의존하거나 자체적으로 문제를 해결해야 할 수 있습니다.
- 적용 가능한 시나리오: 높은 수준의 자율성과 제어가 필요하고 기술팀의 지원을 받으며 비용 절감을 원하고 커뮤니티 공동 구축에 적극적으로 참여할 수 있는 프로젝트입니다.
- 상용 벡터 데이터베이스(예: Pinecone과 같은 클라우드 제공업체의 호스팅 벡터 데이터베이스 등):
- 장점: 일반적으로 완전한 관리형 서비스와 기술 지원을 제공하고, 배포 및 O&M의 복잡성을 간소화하며, 시작과 사용이 쉽습니다. 성능과 안정성이 상업적으로 입증되었으며 서비스 품질이 보장됩니다.
- 도전: 더 높은 비용과 시간이 지남에 따라 상당한 비용이 발생할 수 있습니다. 공급업체 종속, 제한된 사용자 지정 및 2차 개발의 위험이 발생할 수 있습니다.
- 적용 가능한 시나리오: 사용 편의성과 안정성을 원하고, 빠르게 시작하고, O&M 부담을 줄이고, 예산이 충분하며, 공급업체 종속 위험에 민감하지 않은 프로젝트에 적합합니다.
2. CRUD 지원: 동적 데이터와 정적 데이터 비교
- CRUD(생성, 읽기, 업데이트, 삭제) 지원:
- 중요성: RAG 시스템과 많은 동적 데이터 애플리케이션에 필수적입니다. 데이터를 자주 업데이트, 삭제 또는 수정해야 하는 경우, 전체 CRUD 작업을 지원하는 벡터 데이터베이스를 선택하는 것이 중요합니다.
- Impact: CRUD 작업을 지원하는 데이터베이스를 사용하면 동적으로 변화하는 데이터를 쉽게 관리하고 지식창고를 실시간으로 정확하게 유지할 수 있습니다.
- 정적 데이터 시나리오:
- 수요: 사전 구축된 지식창고와 같이 데이터가 정적이고 데이터가 매우 자주 업데이트되지 않는 경우에는 읽기 전용 벡터 라이브러리나 전체 CRUD를 지원하지 않는 데이터베이스도 적합할 수 있습니다.
- 선택: 이 경우 일부 경량 벡터 라이브러리 또는 데이터 업데이트 기능이 약하고 고성능 검색에 중점을 둔 일부 벡터 데이터베이스를 고려할 수 있습니다.
3. 분산 아키텍처 및 확장성: 대규모 데이터 및 높은 동시성 대응
- 분산 아키텍처:
- 필요성: RAG 시스템과 많은 AI 애플리케이션은 일반적으로 방대한 양의 데이터와 매우 동시적인 요청을 처리해야 합니다. 분산 아키텍처는 이러한 과제를 해결하는 데 핵심적인 역할을 합니다.
- 장점: 분산형 벡터 데이터베이스는 여러 서버에 분산된 데이터를 저장하고 병렬 쿼리를 지원하여 데이터 처리 능력과 쿼리 성능을 향상시킬 수 있습니다.
- 확장성:
- 수평 확장: 좋은 벡터 데이터베이스는 데이터 볼륨과 요청의 증가에 대응하기 위해 노드를 추가하여 수평적으로 쉽게 확장할 수 있어야 합니다.
- 탄력적 스트레치: 비용과 성능을 최적화하기 위해 실제 부하에 따라 리소스를 동적으로 조정하는 탄력적 확장을 지원하는 것이 바람직합니다.
4. 데이터 복제 및 고가용성: 데이터 보안 및 서비스 안정성 보장
- 데이터 복사:
- 역할: 데이터 복사 메커니즘은 데이터 보안과 높은 시스템 가용성을 보장하는 중요한 수단입니다.
- 실현: 여러 서버에 동일한 데이터 복사본을 저장함으로써 일부 노드에 장애가 발생하더라도 데이터 손실 없이 시스템이 계속 정상적으로 작동합니다.
- 고가용성:
- 중요성: 고가용성은 높은 서비스 안정성이 요구되는 RAG 시스템과 온라인 애플리케이션에 매우 중요합니다.
- 안전 장치: 데이터 복사, 자동 장애 전송, 모니터링 및 경보와 같은 메커니즘이 함께 작동하여 시스템의 지속적이고 안정적인 작동을 보장합니다.
5. 성능: 검색 속도 및 정확도
- 지연 시간:
- 표시기: 쿼리 지연 시간, 즉 쿼리를 시작하고 결과를 얻기까지의 시간입니다.
- 영향 요인: 인덱싱 알고리즘, 하드웨어 리소스, 데이터 크기, 쿼리 복잡성 등을 고려합니다.
- 수요: 실시간 요구 사항이 높은 애플리케이션의 경우 검색 속도가 빠른 벡터 데이터베이스를 선택해야 합니다.
- 리콜, 정밀도:
- 표시기: 유사도 검색 결과의 정확도를 측정하는 리콜 및 정확도.
- 무게 측정: 일반적으로 검색 속도와 정확도 사이에는 상충 관계가 있으며, 애플리케이션 시나리오에 따라 적절한 균형을 선택해야 합니다. 예를 들어, RAG 시스템의 경우 최대한 많은 관련 문서가 검색되도록 하기 위해 리콜이 더 중요할 수 있습니다.
6. 지속적인 유지 관리 및 커뮤니티 지원: 장기적으로 안정적인 운영 보장
- 지속적인 유지 관리:
- 중요성: 벡터 데이터베이스 기술은 빠르게 발전하고 있으며 지속적인 유지 관리와 업데이트가 매우 중요합니다.
- 우려 사항: 활발한 개발팀에 의해 데이터베이스가 지속적으로 유지 관리 및 업데이트되고 있는지, 적시에 버그를 수정하고 최신 기술 트렌드를 따라잡고 있는지 여부입니다.
- 커뮤니티 지원:
- 가치: 활발한 커뮤니티는 풍부한 문서, 튜토리얼, 샘플 코드, 질문에 대한 답변을 제공하여 학습과 사용의 장벽을 낮춥니다.
- 평가: 커뮤니티 지원은 GitHub 리포지토리에서의 활동, 커뮤니티 포럼의 버즈, 사용자 수 등과 같은 메트릭을 살펴봄으로써 평가할 수 있습니다.
7. 비용 고려 사항: 오픈 소스 대 상용화, 자체 구축 대 호스팅
- 오픈 소스 대 상용화 비용:
- 오픈 소스: 데이터베이스 소프트웨어 자체는 무료이지만 하드웨어 비용, O&M 비용, 인건비 등을 고려해야 합니다.
- 상업화: 소프트웨어 라이선스 비용이나 클라우드 서비스 비용을 지불해야 하지만, 잠재적으로 O&M 비용이 절감되고 기술 지원이 개선될 수 있습니다.
- 자체 구축 비용과 호스팅 비용 비교:
- 셀프 빌드: 하드웨어 조달, 배포, 운영 및 유지 관리, 모니터링 등을 책임져야 하므로 초기 투자 비용과 장기 운영 및 유지 관리 비용이 많이 듭니다.
- 호스팅: 클라우드 제공업체의 호스팅 벡터 데이터베이스 서비스를 사용하면 기본 인프라에 대한 걱정이 없고, 종량제이며, 비용 구조가 더 유연하지만 장기적으로는 더 많은 비용이 들 수 있습니다.
합성:
벡터 데이터베이스를 선택할 때는 위의 7가지 주요 요소를 고려하고 특정 애플리케이션 시나리오, 요구 사항 및 예산에 따라 장단점을 비교하고 선택해야 합니다. 절대적인 최적의 데이터베이스는 없으며, 특정 시나리오에 가장 적합한 데이터베이스가 있을 뿐입니다.
다양한 유형의 벡터 데이터베이스 솔루션 비교: 기술 선택의 파노라마
시중에 나와 있는 수많은 벡터 데이터베이스 솔루션의 유형과 특징을 이해하면 선택의 폭을 좁히고 자신에게 맞는 솔루션을 더 빨리 찾을 수 있습니다. 벡터 데이터베이스 솔루션은 크게 다음 다섯 가지 카테고리로 분류됩니다:
1. 벡터 라이브러리(FAISS, HNSWLib, ANNOY): 경량 인덱스, 정적 데이터 가속 도구
FAISS(Facebook AI 유사성 검색), HNSWLib(계층적 탐색이 가능한 작은 세계 그래프 라이브러리), ANNOY(근사 이웃 오! 예), 이는 본질적으로벡터 인덱스 구성 및 유사도 검색을 위한 소프트웨어 라이브러리. 일반적으로 독립형 데이터베이스 서비스가 아닌 애플리케이션에 내장된 라이브러리로 실행됩니다.
최첨단::
- 고성능: 매우 빠른 검색을 위해 최적화된 벡터 인덱싱과 유사도 검색 알고리즘에 중점을 둡니다.
- 가벼움: 리소스 사용량이 적고 배포가 간편하며 기존 애플리케이션에 쉽게 통합할 수 있습니다.
- 성숙하고 안정적입니다: 오랜 기간의 개발과 폭넓은 적용 끝에 이 기술은 성숙하고 안정적이며 커뮤니티의 지지를 받고 있습니다.
제한 사항::
- 정적 데이터가 주를 이룹니다: 주로 정적 데이터를 저장하는 데 사용되며 인덱스가 구축된 후에는 데이터를 업데이트하기가 쉽지 않습니다. HNSWLib를 제외한 대부분의 벡터 라이브러리는 CRUD 작업을 지원하지 않기 때문에 데이터 업데이트 및 삭제가 어렵습니다.
- 기능이 제한적입니다: 일반적으로 기본 벡터 인덱스 및 유사도 검색 기능만 제공하고 분산, 데이터 복사, 권한 관리, 모니터링 운영 및 유지 관리 및 기타 고급 데이터베이스 기능이 부족합니다.
- 높은 O&M 비용: 자체 배포 에코시스템을 구축하고, 데이터 복제 및 내결함성을 처리해야 하며, 포괄적인 O&M 도구와 관리 인터페이스가 부족합니다.
적용 가능한 시나리오::
- 정적 데이터 세트에 대한 유사도 검색: 예를 들어 오프라인으로 구축된 지식 기반, 상품 기반, 얼굴 기반 등과 같이 데이터가 자주 업데이트되지 않는 시나리오를 들 수 있습니다.
- 성능 요구 사항은 매우 높지만 데이터 업데이트 빈도는 낮은 시나리오: 검색 엔진을 위한 오프라인 인덱스 구축과 대규모 추천 시스템을 위한 오프라인 기능 인덱싱이 그 예입니다.
- 를 다른 데이터베이스의 벡터 인덱스 가속 구성 요소로 사용할 수 있습니다: 예를 들어 Redis, MySQL 등과 같은 데이터베이스와 함께 벡터 라이브러리를 사용하면 유사도 검색이 빨라집니다.
대표 제품:
- FAISS(Facebook AI 유사성 검색): 학계와 업계에서 널리 사용되는 Facebook AI Research에서 개발했습니다. IVF, PQ, HNSW 등 다양하고 효율적인 인덱싱 알고리즘을 제공하며 특히 대규모 데이터 세트 처리에 능숙합니다.
- HNSWLib(계층 탐색 가능한 작은 세계 그래프 라이브러리): 높은 성능과 효율성으로 잘 알려진 HNSW(Hierarchical Navigable Small World) 알고리즘을 기반으로 하며, 다른 벡터 라이브러리에 비해 유연하고 CRUD 작업과 동시 읽기 및 쓰기를 지원하는 HNSWLib는 다른 벡터 라이브러리에 비해 더 유연합니다.
- ANNOY(대략적인 가장 가까운 이웃 오 예): 가장 가까운 이웃의 빠른 근사치 검색에 초점을 맞추기 위해 Spotify에서 개발했습니다. 깔끔하고 효율적인 디자인으로 잘 알려져 있으며 지연 시간에 민감한 애플리케이션 시나리오에 적합합니다.
2. 전체 텍스트 검색 데이터베이스(ElasticSearch, OpenSearch): 벡터 검색을 보완하는, 비핵심 기능
ElasticSearch 및 OpenSearch와 같은 전체 텍스트 검색 데이터베이스는 주로 다음과 같은 용도로 사용하도록 설계되었습니다.전체 텍스트 검색 및 키워드 검색역 인덱싱 기술을 기반으로 하며 텍스트 검색 및 고급 분석에 강력합니다. 최근에는 벡터 검색 기능도 추가하기 시작했지만 벡터 검색이 핵심 강점은 아닙니다.
최첨단::
- 강력한 전체 텍스트 검색 기능: 복잡한 텍스트 쿼리, 단어 분할, 동의어, 철자 수정, 관련성 정렬(예 BM25) 및 기타 기능.
- 풍부한 분석: 데이터 분석 및 비즈니스 인사이트를 위한 집계, 통계, 보고 및 데이터 시각화를 제공합니다.
- 성숙한 생태계: 대규모 사용자 기반과 잘 구축된 에코시스템을 바탕으로 다양한 주변 도구와 플러그인을 통해 쉽게 통합하고 사용할 수 있습니다.
제한 사항::
- 벡터 검색 성능이 약합니다: 전용 벡터 데이터베이스에 비해 벡터 유사도 검색 성능은 특히 고차원 데이터 및 대규모 데이터 세트에서 쿼리 지연 시간이 길고 정확도가 부족할 수 있는 경우 낮습니다.
- 리소스 소비량이 많습니다: 전체 텍스트 검색 및 분석과 같은 기능을 지원하기 위해서는 리소스 소비가 많고 배포 및 운영 및 유지 관리 비용이 많이 듭니다.
- 시맨틱 검색에 능숙하지 않습니다: 주로 키워드 매칭과 역 인덱싱에 의존하며, 시맨틱 이해도가 제한적이어서 복잡한 시맨틱 검색 요구 사항을 충족하기 어렵습니다.
적용 가능한 시나리오::
- 키워드 검색은 기본 애플리케이션이며, 벡터 검색으로 보완됩니다: 예를 들어, 전자상거래 웹사이트의 상품 검색과 뉴스 웹사이트의 기사 검색은 주로 키워드 검색을 사용하며, 벡터 검색은 검색의 의미적 연관성을 높이기 위한 보조 기능으로 사용됩니다.
- 전체 텍스트 검색과 벡터 검색의 조합이 필요한 하이브리드 검색 시나리오: 예를 들어, 키워드 및 시맨틱 검색을 모두 지원하는 지능형 고객 서비스 시스템은 사용자의 다양한 쿼리 요구를 충족합니다.
- 로그 분석, 알람 모니터링 및 강력한 분석 기능이 필요한 기타 시나리오를 지원합니다: 로그 분석, 모니터링 및 알림, 보안 감사 등을 위해 전체 텍스트 검색 데이터베이스의 강력한 분석 기능을 사용하세요.
대표 제품::
- ElasticSearch: Lucene을 기반으로 구축되어 검색, 로그 분석, 데이터 시각화 및 기타 분야에서 널리 사용되는 가장 인기 있는 오픈 소스 전체 텍스트 검색 엔진 중 하나입니다.
- OpenSearch: ElasticSearch와 Kibana를 기반으로 AWS에서 분기된 이 버전은 ElasticSearch와의 호환성을 유지하며 ElasticSearch에 새로운 기능과 개선 사항을 추가합니다.
결론: ElasticSearch와 OpenSearch는 벡터 검색 기능을 제공하지만, 그 성능과 기능은 여전히 전용 벡터 데이터베이스에 미치지 못합니다. 벡터 검색에 중점을 두는 RAG 시스템이나 AI 애플리케이션의 경우, 전용 벡터 데이터베이스가 더 나은 선택입니다. 전체 텍스트 검색 데이터베이스는 벡터 검색을 대체하기보다는 보완하는 용도로 더 적합합니다.
3. 벡터 지원 SQL 데이터베이스(pgvector, Supabase, StarRocks): 경량 애플리케이션을 위한 기존 데이터베이스의 벡터 확장입니다.
PostgreSQL과 같은 SQL 데이터베이스는 확장 기능(예: pgvector)을 통해 벡터 데이터 유형 및 유사성 검색 기능을 지원합니다. 따라서 사용자는 새로운 데이터베이스 시스템을 도입하지 않고도 기존 관계형 데이터베이스에 벡터 데이터를 저장하고 쿼리할 수 있습니다.
최첨단::
- 간편한 통합: 기존 SQL 데이터베이스와의 원활한 통합으로 기술 스택의 복잡성을 줄이고 학습 및 마이그레이션 비용을 절감할 수 있습니다.
- 성숙하고 안정적입니다: SQL 데이터베이스 기술은 성숙하고 안정적이며 강력한 데이터 관리 및 트랜잭션 처리 기능과 데이터 일관성 및 안정성을 보장합니다.
- 저렴한 학습 비용: SQL에 익숙한 개발자의 경우 학습 비용이 저렴하고 벡터 검색 기능을 빠르게 익히고 실행할 수 있습니다.
제한 사항::
- 벡터 검색 성능은 제한적입니다: 아키텍처가 벡터 검색용으로 설계되지 않은 관계형 데이터베이스는 특히 쿼리 대기 시간이 긴 대규모의 고차원 벡터 데이터를 처리할 때 전용 벡터 데이터베이스만큼 성능이 좋지 않습니다.
- 확장성이 제한적입니다: 관계형 데이터베이스는 상대적으로 확장성이 약해 대규모 벡터 데이터와 동시성이 높은 쿼리에 대처하기 어렵고 수평적 확장성이 제한적입니다.
- 벡터 치수 제한: 예를 들어, pgvector에서 지원하는 벡터 차원의 상한은 2000 차원으로, 전용 벡터 데이터베이스보다 낮아 고차원 벡터 데이터의 요구를 충족하지 못할 수 있습니다.
적용 가능한 시나리오::
- 벡터 데이터 볼륨이 작은 애플리케이션(100,000개 수준 미만): 예를 들어 소규모 추천 시스템, 간단한 이미지 검색, 개인 지식 기반 등은 벡터 데이터의 양이 적고 성능 요구 사항이 낮습니다.
- 보조 기능으로 벡터 데이터 적용: 예를 들어, 제품 추천이나 유사한 제품 조회를 위해 전자상거래 사이트의 제품 데이터베이스에 제품 벡터 필드를 추가하는 경우 벡터 검색은 데이터베이스의 보조 기능에 불과합니다.
- 이미 성숙한 SQL 데이터베이스를 보유하고 있으며 벡터 검색 기능을 빠르게 추가하려는 애플리케이션입니다: 이미 PostgreSQL과 같은 SQL 데이터베이스를 사용하고 있고 벡터 검색 기능을 빠르게 도입하려는 프로젝트에서는 pgvector와 같은 확장 기능을 사용하는 것을 고려하세요.
대표 제품::
- pgvector: Crunchy Data에서 개발한 PostgreSQL 확장 기능으로, 벡터 데이터 유형(벡터) 및 인덱스(IVF, HNSW)와 벡터 유사성 검색 기능을 제공합니다.
- 슈퍼베이스: 사용자가 벡터 검색을 지원하는 애플리케이션을 빠르게 구축할 수 있는 통합 pgvector 기반의 오픈 소스 PaaS 플랫폼입니다.
- 스타록스: 벡터 검색 기능도 추가하는 OLAP 지향 MPP 데이터베이스이지만 벡터 검색은 핵심 틈새 시장이 아니며 주로 OLAP 분석 시나리오에서 사용됩니다.
결론: 벡터 데이터의 양이 적고 성능 요구 사항이 높지 않으며 벡터 데이터가 애플리케이션의 보완적인 기능으로만 사용되는 가벼운 애플리케이션 시나리오에는 pgvector와 같이 벡터를 지원하는 SQL 데이터베이스가 더 적합합니다. 벡터 데이터가 애플리케이션의 핵심이거나 확장성에 대한 요구가 높은 경우에는 전용 벡터 데이터베이스가 더 나은 선택이 될 수 있습니다.
4. 벡터 지원 NoSQL 데이터베이스(Redis, MongoDB): 잠재력과 과제를 동시에 안고 있는 새로운 시도
Redis 및 MongoDB와 같은 NoSQL 데이터베이스도 벡터 데이터를 처리할 수 있는 기능을 제공하는 Redis 벡터 유사성 검색(VSS) 및 MongoDB Atlas 벡터 검색과 같은 벡터 지원을 추가하는 실험을 시작하고 있습니다.
최첨단::
- NoSQL 데이터베이스의 고유한 장점: 예를 들어 고성능 캐싱, 짧은 지연 시간, 높은 처리량을 제공하는 Redis와 유연한 문서 모델, 손쉬운 확장성, 풍부한 문서 조작 기능을 제공하는 MongoDB가 있습니다.
- 기술적 참신성: 이는 데이터베이스 기술의 발전 추세를 나타내며, 일정한 혁신과 발전 잠재력을 가진 성숙한 NoSQL 데이터베이스에 벡터 검색 기능을 통합합니다.
제한 사항::
- 기능이 아직 성숙하지 않았습니다: 벡터 지원 기능은 아직 초기 단계로, 기능과 성능을 개선하고 검증해야 하며 에코시스템이 상대적으로 미성숙한 상태입니다.
- 열악한 생태계: 관련 도구, 라이브러리 및 생태계가 상대적으로 부족하여 사용 및 유지 관리 비용이 많이 들 수 있으며 커뮤니티 지원도 상대적으로 취약합니다.
- 고려할 성능: Redis VSS는 뛰어난 성능을 주장하지만, 실제 결과는 더 많은 시나리오에서 검증되어야 하며 고차원 데이터 및 대규모 데이터세트에서 전용 벡터 데이터베이스만큼 성능이 좋지 않을 수 있습니다.
적용 가능한 시나리오::
- 높은 성능 요구 사항과 소량의 벡터 데이터가 있는 시나리오: 예를 들어, Redis 기반 실시간 추천 시스템, 온라인 광고 검색 등에는 지연 시간이 짧고 처리량이 많은 벡터 검색이 필요합니다.
- 새로운 기술을 시도하고 싶고 어느 정도 위험을 감수할 의향이 있는 시나리오: 기술을 시험해보고 싶다면 NoSQL 데이터베이스의 벡터 지원 기능을 사용하여 그 잠재력을 살펴보세요.
- 이미 NoSQL 데이터베이스를 사용 중이며 여기에 벡터 검색 기능을 추가하고 싶습니다: 이미 Redis 또는 MongoDB를 사용 중이고 그 위에 벡터 검색 기능을 빠르게 도입하려는 프로젝트에서는 벡터 확장 모듈을 사용하는 것을 고려하세요.
대표 제품::
- Redis 벡터 유사성 검색(VSS): 실시간 요구 사항이 많은 시나리오를 위해 고성능과 짧은 지연 시간에 중점을 두고 벡터 인덱싱(HNSW) 및 유사성 검색 기능을 제공하는 Redis용 모듈입니다.
- 몽고DB 아틀라스 벡터 검색: 몽고DB 클라우드 서비스인 Atlas의 새로운 기능은 벡터 검색을 몽고DB의 문서 데이터베이스에 통합하여 보다 포괄적인 데이터 처리 기능을 제공하도록 설계되었습니다.
결론: NoSQL 데이터베이스에 새로 추가된 벡터 지원 기능은 아직 개발 초기 단계에 있으며, 그 성숙도와 안정성을 더 검증해야 합니다. 어느 정도 잠재력은 있지만 기능과 성능 면에서 전용 벡터 데이터베이스에 비해 아직 덜 성숙하고 강력할 수 있습니다. 따라서 신중하게 평가하고 그 한계를 충분히 고려한 후 선택해야 합니다.
5. 전용 벡터 데이터베이스(Pinecone, Milvus, Weaviate, Qdrant, Vespa, Vald, Chroma, Vearch): 벡터를 위해 구축되었으며 RAG 시스템 및 AI 애플리케이션을 위한 첫 번째 선택입니다.
Pinecone, Milvus, Weaviate, Qdrant, Vespa, Vald, Chroma, Vearch 등과 같은 전용 벡터 데이터베이스는 처음부터 다음 사항에 집중하도록 설계되었습니다.벡터 데이터의 저장, 인덱싱 및 검색는 본질적으로 고차원 벡터 데이터를 처리할 수 있도록 잘 갖추어져 있습니다. RAG 시스템, 시맨틱 검색, 추천 시스템 등과 같은 AI 애플리케이션을 구축하는 데 선호되는 솔루션입니다.
최첨단::
- 뛰어난 벡터 검색 성능: 빠른 검색 속도와 높은 정확도로 벡터 유사도 검색에 매우 최적화되어 있으며, 대규모 고차원 벡터 데이터를 효율적으로 처리할 수 있습니다.
- 강력한 확장성: 일반적으로 분산 아키텍처를 채택하고 수평 확장이 용이하며 대규모 데이터 및 높은 동시성 쿼리에 대처할 수 있어 대규모 애플리케이션의 요구 사항을 충족할 수 있습니다.
- 다양한 기능을 제공합니다: 일반적으로 완벽한 벡터 데이터 관리, 인덱스 구성, 쿼리 최적화, 모니터링, 운영 및 유지 관리 기능은 물론 풍부한 유사도 검색 알고리즘과 거리 메트릭을 제공합니다.
- 유연한 인덱싱 옵션: 다양한 애플리케이션 시나리오와 데이터 특성에 따라 최적의 인덱싱 전략을 선택할 수 있는 여러 벡터 인덱싱 알고리즘(예: IVF, HNSW, PQ, 트리 인덱싱 등)을 지원합니다.
- 성숙한 에코시스템(일부 제품): 일부 제품은 활발한 커뮤니티와 잘 구축된 에코시스템을 갖추고 있어 사용과 통합이 용이한 풍부한 문서, 도구, 통합 솔루션을 제공합니다.
제한 사항::
- 더 높은 학습 비용: 기존 데이터베이스에 비해 전용 벡터 데이터베이스는 학습 곡선이 더 가파르고 벡터 인덱싱, 유사도 검색 및 기타 관련 개념에 대한 이해가 필요할 수 있습니다.
- 기술 선택은 복잡합니다: 다양한 기능과 특징을 가진 많은 제품이 있으며, 선택 시에는 여러 제품의 장단점을 비교하여 신중하게 평가해야 합니다.
- 제품의 부분 상용화: 최고의 전용 벡터 데이터베이스 중 일부는 상용 제품(예: Pinecone)으로, 사용 비용이 더 비싸고 공급업체에 종속될 위험이 있습니다.
적용 가능한 시나리오::
- 벡터 검색을 중심으로 한 애플리케이션: 예를 들어 RAG 시스템, 시맨틱 검색, 이미지 검색, 오디오 검색, 비디오 검색, 추천 시스템, 생물 정보학 분석 등, 벡터 검색은 애플리케이션의 핵심 기능입니다.
- 방대한 양의 고차원 벡터 데이터를 처리해야 하는 애플리케이션: 예를 들어 대규모 지식 그래프, 방대한 제품 라이브러리, 사용자 행동 데이터 분석에는 대규모 고차원 벡터 데이터를 처리해야 합니다.
- 검색 성능과 정확성에 대한 요구 사항이 높은 애플리케이션: 예를 들어 재무 위험 관리, 보안 모니터링, 정확한 추천은 검색 속도와 정확성에 대한 엄격한 요구 사항이 있습니다.
- 유연한 확장성과 고가용성이 필요한 애플리케이션: 예를 들어 대규모 온라인 서비스 및 클라우드 플랫폼은 서비스의 안정성과 신뢰성을 보장하기 위해 수평적 확장 및 고가용성을 지원해야 합니다.
대표 제품::
- 솔방울: 전문가 팀이 유지 관리하는 상용 클라우드 기반 벡터 데이터베이스는 사용하기 쉽고 확장성이 뛰어난 벡터 검색 서비스를 제공합니다. 사용 편의성과 고성능으로 잘 알려진 클라우드 기반 벡터 데이터베이스를 대표하는 서비스입니다. 하지만 오픈 소스의 특성과 사용자 정의에 한계가 있으며 무료 버전은 기능이 제한되어 있습니다.
- Milvus: 질리즈가 주도하는 오픈소스 분산 벡터 데이터베이스, 강력한 성능, 풍부한 기능, 활발한 커뮤니티는 오픈소스 벡터 데이터베이스의 벤치마크입니다. 다양한 인덱스 유형, 거리 메트릭 및 쿼리 방법을 지원하며 다양한 애플리케이션 시나리오에 유연하게 대처할 수 있습니다.
- Weaviate: 독일 회사 SeMI Technologies에서 개발한 오픈 소스 그래프 벡터 데이터베이스는 벡터 검색과 그래프 데이터베이스 기술을 결합하여 고유한 데이터 모델링 및 쿼리 기능을 제공합니다. 복잡한 데이터 쿼리 및 분석을 용이하게 하기 위해 GraphQL 쿼리 언어를 지원합니다.
- Qdrant: 러시아 팀이 개발한 오픈 소스 벡터 데이터베이스로, 성능과 사용 편의성, 경량 아키텍처, 낮은 리소스 소비에 중점을 두고 Rust 언어로 작성되었습니다. 고성능, 짧은 지연 시간 및 배포 용이성으로 인기가 높습니다.
- Vespa: 야후와 오픈 소스 검색 엔진 및 벡터 데이터베이스에서 개발하여 강력하고 우수한 성능을 제공하지만 아키텍처가 더 복잡하고 학습 곡선이 가파릅니다. 성능 및 기능에 대한 요구 사항이 매우 높은 시나리오에 적합합니다.
- Vald: 일본 팀이 개발한 오픈 소스 분산 벡터 데이터베이스로, 고정밀 및 고신뢰성 벡터 검색에 중점을 두고 있습니다. 높은 정밀도와 짧은 지연 시간을 강조하며, 정밀도가 매우 높은 장면에 적합합니다. 그러나 Langchain과의 통합에 결함이 있으며 커뮤니티 규모가 작습니다.
- Vearch: 중국 팀이 개발한 오픈 소스 분산 벡터 데이터베이스는 고성능, 고가용성 벡터 검색 서비스를 제공합니다. 사용 편의성과 확장성에 중점을 두고 있으며, 벡터 검색 애플리케이션을 빠르게 구축해야 하는 프로젝트에 적합합니다. Langchain과의 통합에 결함이 있으며 커뮤니티가 작습니다.
- 크로마: Chroma는 경량성과 사용 편의성에 중점을 둔 오픈 소스 임베디드 벡터 데이터베이스로, SQLite를 문서 저장소로 사용합니다. 로컬 개발, 프로토타이핑 또는 소규모 애플리케이션에 적합하며 확장성과 효율성이 상대적으로 제한적인 Chroma는 오디오 데이터용으로 특별히 설계되었지만 텍스트 데이터 처리에는 최적화되어 있지 않으며 포괄적인 성능 벤치마킹 정보가 부족합니다.
결론: RAG 시스템과 대부분의 AI 애플리케이션의 경우 전용 벡터 데이터베이스가 최선의 선택입니다. 성능, 기능 및 확장성 측면에서 이러한 애플리케이션의 요구 사항을 더 잘 충족할 수 있습니다. 많은 전용 벡터 데이터베이스 중에서 오늘날 가장 인기 있고 널리 사용되는 것은 Weaviate, Milvus, Qdrant 및 Vespa입니다.
세 가지 우수한 오픈 소스 벡터 데이터베이스인 Weaviate, Milvus, Qdrant를 보다 시각적으로 비교하기 위해 아래 표를 요약했습니다:
포괄적인 데이터베이스 | Qdrant | Weaviate | Milvus |
---|---|---|---|
오픈 소스 및 자체 호스팅 | be | be | be |
오픈 소스 프로토콜 | Apache-2.0 | BSD | Apache-2.0 |
개발 언어 | Rust | 이동 | Go, C++ |
깃허브 스타(2024년 기준) | 17k+ | 9.2k+ | 26.2k+ |
첫 출시일 | 2021 | 2019 | 2019 |
SDK | Python, JS, Go, Java, .Net, Rust | Python, JS, Java, Go | Python, Java, JS, Go |
호스팅 클라우드 서비스 | be | be | be |
내장 텍스트 임베딩 | FastEmbed | be | be |
하이브리드 검색 | be | RRF*+RSF* | 테이블 내 멀티벡터 믹싱 |
메타 정보 필터링 | be | be | be |
BM25 지원 | be | be | be |
텍스트 검색 | be | be | be |
단일점 다중 벡터(수학) | be | be | be |
텐서 검색 | be | be | be |
랭체인 통합 | be | be | be |
라마 인덱스 통합 | be | be | be |
지리 정보 검색 | be | be | be |
멀티 테넌트 지원 | 컬렉션/메타데이터를 통해 | be | be |

요약:
- Qdrant: 경량 아키텍처, 낮은 리소스 오버헤드, 뛰어난 성능, 간편한 배포 및 사용, Rust 언어 개발, 성능과 효율성에 중점을 둡니다.
- Weaviate: 포괄적인 기능, 벡터 검색, 개체 저장소 및 반전 인덱스 통합, GraphQL 쿼리 지원, 데이터 모델링 기능, Go 언어 개발, 활발한 커뮤니티.
- Milvus: 강력한 성능, 풍부한 기능, 활발한 커뮤니티, 다양한 인덱스 유형 및 쿼리 방법 지원, 다양하고 복잡한 시나리오, Go 및 C++ 언어 개발, 생태학적 완벽성 등을 유연하게 처리할 수 있습니다.
요구 사항, 기술 스택 선호도 및 팀 역량에 가장 적합한 벡터 데이터베이스를 선택할 수 있습니다.
벡터 데이터베이스 검색 방법 설명: 벡터 검색의 다양한 위치 활용하기
벡터 데이터베이스의 핵심 기능은 유사도 검색이며, 각기 다른 벡터 데이터베이스는 다양한 애플리케이션 요구 사항을 충족하기 위해 다양한 검색 방법을 제공합니다. 이러한 검색 방법을 이해하면 벡터 데이터베이스를 보다 효과적으로 활용하여 더욱 강력한 AI 애플리케이션을 구축하는 데 도움이 됩니다.

6. 벡터 데이터베이스의 검색 방법 비교
Milvus, Weaviate, Qdrant 세 가지 데이터베이스의 주요 검색 방법에 대해 집중적으로 살펴봅니다:
6.1 Milvus: 다양한 시나리오를 위한 유연하고 다양한 검색 전략
Milvus는 풍부하고 유연한 검색 전략을 제공하며, 다양한 데이터 구조와 쿼리 요구사항에 따라 적절한 검색 방법을 선택할 수 있습니다.
- 단일 벡터 검색: 가장 기본적인 검색 방법은
search()
메서드를 사용하여 쿼리 벡터를 컬렉션의 기존 벡터와 비교하여 가장 유사한 엔티티 ID와 그 거리를 반환합니다. 반환된 결과의 벡터 값과 메타데이터를 선택할 수 있습니다. 특정 상품과 가장 유사한 상품 찾기, 특정 이미지와 가장 유사한 이미지 찾기 등 간단한 유사도 검색 시나리오에 이상적입니다. - 멀티 벡터 검색: 여러 벡터 필드를 포함하는 컬렉션의 경우
hybrid_search()
메서드를 사용합니다. 이 방법은 여러 개의 근사 이웃(ANN) 검색 요청을 동시에 실행하고 결과를 융합 및 재배열하여 가장 관련성이 높은 일치 항목을 반환할 수 있으며, 최신 2.4.x 버전의 Milvus는 최대 10개의 벡터를 사용한 검색을 지원합니다. 다중 벡터 검색은 예를 들어 높은 정확도가 요구되는 복잡한 시나리오에 특히 적합합니다:- 동일한 데이터가 다른 임베딩 모델을 사용하여 처리됩니다: 예를 들어, 동일한 문장이 BERT, Sentence-BERT, GPT-3 등과 같은 서로 다른 모델을 사용하여 서로 다른 벡터 표현으로 생성될 수 있습니다. 다중 벡터 검색은 이러한 서로 다른 모델의 벡터 표현을 융합하여 검색의 정확도를 향상시킬 수 있습니다.
- 멀티모달 데이터 융합: 예를 들어, 개인의 이미지, 지문, 음성 등 다양한 모달 정보를 서로 다른 벡터 형식으로 변환하여 종합적으로 검색할 수 있습니다. 다중 벡터 검색은 이러한 다양한 모달리티의 벡터 정보를 융합하여 보다 포괄적인 유사성 검색을 수행할 수 있습니다.
- 리콜률을 높이세요: 서로 다른 벡터에 가중치를 할당하고 여러 벡터의 정보를 '다중 리콜' 전략으로 활용하면 검색 결과의 리콜 기능과 효율성을 크게 향상시켜 관련 결과가 누락되지 않도록 할 수 있습니다.
- 기본 검색 작업: 단방향 및 다중 벡터 검색 외에도 Milvus는 다음과 같은 다양한 기본 검색 작업을 제공합니다:
- 일괄 벡터 검색: 여러 쿼리 벡터를 한 번에 제출하면 검색 효율성이 향상되며 쿼리를 일괄 처리해야 하는 시나리오에 적합합니다.
- 파티션 검색: 지정된 파티션에서 검색하여 검색 범위를 좁히고 검색 속도를 개선하여 대용량 데이터 시나리오에 적합하며, 데이터를 파티션별로 저장하여 쿼리의 효율성을 향상시킬 수 있습니다.
- 검색할 출력 필드를 지정합니다: 지정된 필드만 반환하고, 데이터 전송량을 줄이며, 검색 효율성을 개선하고, 필드 정보의 일부만 필요한 시나리오에 적합합니다.
- 검색 필터링: 스칼라 필드를 기반으로 조건을 필터링하여 검색 결과를 구체화합니다(예: 제품 가격, 사용자 연령, 제품 카테고리 등의 조건을 기반으로 필터링, 유사성 검색을 기반으로 결과를 추가로 필터링하여 검색의 정확도를 향상).
- 범위 검색: 쿼리 벡터와의 거리가 특정 범위 내에 있는 벡터를 찾습니다(예: 대상 제품과 유사도가 0.8 이상인 제품 찾기). 유사도 범위를 제한해야 하는 시나리오에 적합합니다.
- 그룹 검색: 특정 필드에 따라 검색 결과를 그룹화하면 결과의 다양성을 보장하고 결과의 과도한 집중을 방지할 수 있어 다양한 카테고리의 제품을 추천하려는 추천 시스템과 같이 결과의 다양성이 필요한 시나리오에 적합합니다.
6.2 Weaviate: 여러 검색 기술을 통합한 강력한 하이브리드 검색 기능
Weaviate는 벡터 유사도 검색, 키워드 검색, 생성 검색 및 기타 검색 방법을 유연하게 결합하여 복잡한 쿼리 요구 사항을 충족하고 보다 포괄적인 검색 솔루션을 제공할 수 있는 강력한 하이브리드 검색 기능을 제공합니다.
- 벡터 유사도 검색: 쿼리 벡터와 가장 유사한 객체를 찾기 위한 여러 근접 검색 방법을 제공하는 것이 Weaviate의 핵심 검색 기능입니다.
- 이미지 검색: 이미지 검색 시나리오에 적합한 이미지 검색 기능을 구현하기 위해 유사도 검색을 위한 입력으로 이미지 사용을 지원합니다.
- 키워드 검색: 결과는 기존 키워드 검색 시나리오에서 효율적인 키워드 검색을 지원하는 BM25F 알고리즘을 사용하여 순위가 매겨집니다.
- 하이브리드 검색: BM25 키워드 검색과 벡터 유사도 검색을 결합하여 시맨틱 관련성 및 키워드 매칭을 고려한 결과의 융합 순위는 키워드와 시맨틱 정보를 모두 고려해야 하는 하이브리드 검색 시나리오에 적합합니다.
- 생성 검색: 검색 결과를 힌트로 사용하여 사용자의 의도에 더 잘 맞는 답변을 생성하는 LLM을 통해 검색과 생성 AI 기술을 결합하여 더욱 스마트한 검색 환경을 제공합니다.
- 순위 재조정: 검색 결과의 정확도와 관련성을 높이기 위해 검색된 검색 결과의 순위를 재조정하는 재순위 모듈(Re-rank)을 사용하여 검색 결과의 품질을 더욱 최적화할 수 있습니다.
- 집계: 결과 수집에서 데이터를 집계하고, 통계 분석을 수행하고, 데이터 분석 기능을 제공하고, 사용자의 데이터 마이닝 및 분석을 지원합니다.
- 필터: 메타데이터 필드 등을 기반으로 검색에 조건부 필터링을 적용하여 검색 정확도를 높이고 복잡한 필터링 조건을 지원할 수 있습니다.
6.3 Qdrant: 벡터 검색에 중점을 두고, 전체 텍스트 필터링을 고려하며, 가볍고 효율적입니다.
Qdrant는 전체 텍스트 필터링의 균형을 갖춘 고성능 벡터 검색 서비스를 제공하는 데 중점을 두고 있으며, 가볍고 고성능이며 사용하기 쉬운 것으로 유명합니다.
Qdrant에서 지원하는 기본 검색 작업::
- 점수별로 필터링하기: 벡터 유사도 점수를 기반으로 필터링하면 유사도가 높은 결과만 반환되므로 검색 결과의 품질이 향상됩니다.
- 단일 요청으로 여러 검색 작업을 로드합니다(다중 검색 요청): 여러 검색 요청을 한 번에 제출하면 검색 효율성이 향상되며 쿼리를 일괄 처리해야 하는 시나리오에 적합합니다.
- 추천 API: 추천 시스템 구축을 위한 특별한 추천 API를 제공하고 추천 시스템 개발 프로세스를 간소화합니다.
- 작업 그룹화: 검색 결과를 그룹화하면 다양한 결과가 필요한 시나리오에서 결과의 다양성이 향상됩니다.
Qdrant에서 지원하는 기타 검색 방법::
Qdrant의 핵심 포지셔닝은 벡터 검색 엔진으로, 벡터 검색의 성능에 영향을 주지 않으면서 기본적인 전체 텍스트 필터링 요구 사항을 충족하기 위해 제한된 전체 텍스트 검색 지원을 제공합니다.
- 전체 텍스트 필터링을 사용합니다: 특정 키워드가 포함된 벡터 데이터를 찾기 위해 전체 텍스트 필터를 사용하여 벡터 데이터를 필터링할 수 있으므로 간단한 전체 텍스트 검색 기능을 사용할 수 있습니다.
- 벡터 검색을 사용한 전체 텍스트 필터: 특정 키워드가 포함된 레코드에서 벡터 검색을 수행하여 보다 정확한 검색을 수행하고, 전체 텍스트 필터링과 벡터 검색을 결합하여 검색의 정확도를 향상시킵니다.
- 접두사 검색 및 시맨틱 인스턴트 검색: 접두사 검색과 시맨틱 인스턴트 검색을 지원하여 보다 사용자 친화적인 환경, 퍼지 검색 및 실시간 검색을 제공합니다.
향후 계획된 큐드론의 기능::
- 스파스 벡터가 지원됩니다: 예를 들어, SPLADE 또는 유사한 모델에 사용되는 희소 벡터는 희소 데이터를 처리하는 능력을 향상시키고 벡터 검색의 효율성과 정확성을 개선합니다.
Qdrant에서 지원하지 않는 기능::
- BM25 또는 기타 비벡터 기반 검색 또는 순위 함수(비벡터 기반 검색): Qdrant는 벡터 검색을 핵심으로 고집하며, 기존의 키워드 기반 검색 방식을 지원하지 않고 아키텍처를 단순하고 효율적으로 유지합니다.
- 내장 온톨로지 또는 지식 그래프, 쿼리 분석기 및 기타 NLP 도구(내장 온톨로지 또는 지식 그래프): Qdrant는 벡터 검색의 기본 인프라에 집중하고 상위 계층 애플리케이션과 NLP 기능을 제외하여 핵심 기능에 집중하고 성능을 최적화합니다.
BM25와 단순 키워드 검색의 차이점은 무엇인가요? 정확도 점수에 대한 심층 분석
키워드 검색 분야에서 BM25(베스트 매칭 25) 알고리즘은 단순 키워드 매칭보다 더 발전되고 효과적인 연관성 점수 산정 방식입니다. 두 알고리즘의 차이점을 이해하면 특히 키워드 검색 또는 혼합 검색이 필요한 상황에서 올바른 검색 전략을 더 잘 선택할 수 있습니다.
1. 관련성 점수 매기기:
- 간단한 키워드 검색: 점수는 일반적으로 문서에 키워드가 많이 나타날수록 관련성이 높은 문서라는 의미의 용어 빈도(TF - 용어 빈도)를 기준으로 매겨집니다. 이 방법은 간단하고 직관적이지만 문서의 길이와 키워드의 중요성을 무시하는 경향이 있어 긴 문서의 점수가 과도하게 매겨질 수 있고, 자주 사용되거나 비활성화된 단어로 인해 결과에 간섭을 일으킬 수 있습니다.
- BM25(베스트 매칭 25): BM25는 보다 복잡한 알고리즘을 사용하여 용어 빈도(TF), 역문서 빈도(IDF - 역문서 빈도), 문서 길이와 같은 요소를 고려하여 문서의 관련성을 점수화함으로써 쿼리에 대한 문서의 관련성을 보다 정확하게 측정하여 단순 키워드 검색의 한계를 효과적으로 해결할 수 있습니다.
2. 문서 길이 처리:
- 간단한 키워드 검색: 문서 길이가 고려되지 않아 긴 문서가 키워드를 포함할 확률이 높기 때문에 긴 문서가 관련성 있는 문서로 간주될 가능성이 높아져 긴 문서 편향이 발생할 수 있습니다.
- BM25: 문서 길이 정규화 계수를 도입함으로써 긴 문서 편향 문제를 해결하여 긴 문서와 짧은 문서 간의 연관성 점수의 공정성을 보장하고 길이 우위로 인해 긴 문서가 너무 높은 점수를 받는 것을 방지합니다.
3. 쿼리 용어의 중요성:
- 간단한 키워드 검색: 문서 컬렉션에서 키워드의 희귀도를 무시하고 모든 키워드를 똑같이 중요하게 취급하여 일반적이고 비활성화된 단어가 결과를 방해하는 것이 일반적입니다.
- BM25: 키워드의 중요도는 역문서 빈도(IDF)를 사용하여 측정합니다. IDF 값이 높은 키워드(즉, 문서 컬렉션에서 희귀한 키워드)는 문서 관련성 점수에 더 많이 기여하여 키워드의 중요성을 효과적으로 구분하고 검색 결과의 품질을 향상시킵니다.
4. 매개변수 조정 기능:
- 간단한 키워드 검색: 일반적으로 매개변수가 적기 때문에 미세 조정이 어렵고 유연성이 떨어집니다.
- BM25: 사용자가 특정 애플리케이션 시나리오와 데이터 특성에 따라 알고리즘을 미세 조정하고 검색 결과를 최적화하며 검색의 유연성과 사용자 지정 기능을 개선할 수 있도록 조정 가능한 매개변수(예: k1 및 b)가 제공됩니다.
요약:
BM25 알고리즘은 단순 키워드 검색에 비해 연관성 점수, 문서 길이 처리, 쿼리 용어 중요도 측정, 매개변수 조정 측면에서 우수하며, 보다 정확하고 사용자가 기대하는 검색 결과를 제공할 수 있습니다. 따라서 BM25 알고리즘은 검색 품질에 대한 요구 사항이 높은 시나리오, 특히 키워드 검색이나 하이브리드 검색이 필요한 시나리오에서 더 나은 선택이며 검색 결과를 개선하는 핵심 기술입니다.
7. 성능 벤치마킹 및 메트릭 상세 정보: 벡터 데이터베이스의 강점과 약점에 대한 정량적 평가
성능은 벡터 데이터베이스를 선택할 때 중요한 고려 사항입니다. 벤치마킹은 벡터 데이터베이스의 성능을 평가하는 효과적인 수단입니다. 그러나 벤치마킹 결과는 다양한 요소의 영향을 받기 때문에 벤치마킹 결과를 참고할 때는 특정 애플리케이션 시나리오 및 요구 사항과 결합하여 종합적으로 분석할 필요가 있습니다.
7. 부록
7.1 ANN 벤치마크: 권위 있는 성능 평가 플랫폼
ANN 벤치마크 근사 최접 이웃 벤치마크(ANN-Benchmarks)는 근사 최접 이웃 알고리즘을 위한 권위 있는 성능 평가 플랫폼으로, Erik Bernhardsson이 만들고 유지 관리합니다. 다양한 근사 최인접 이웃 검색 알고리즘과 벡터 데이터베이스의 성능을 평가하기 위한 통합 벤치마킹 프레임워크와 데이터 세트를 제공하며, ANN-Benchmarks는 벡터 데이터베이스 성능 평가를 위한 중요한 참조를 제공하고 서로 다른 벡터 데이터베이스 간의 성능 차이를 이해하는 데 중요한 도구입니다.
벤치마킹에 영향을 미치는 요인:
- 검색 유형: 필터링된 검색과 일반 검색, 검색 유형에 따라 성능에 미치는 영향이 다릅니다.
- 구성 설정: 인덱스 유형, 인덱스 매개변수, 캐시 설정 등과 같은 데이터베이스 구성 매개변수는 성능에 큰 영향을 미칠 수 있습니다.
- 인덱싱 알고리즘: 인덱싱 알고리즘(예: IVF, HNSW, PQ)은 각기 다른 성능 특성을 가지며 다양한 데이터 배포 및 쿼리 시나리오에 적합합니다.
- 데이터 임베딩: 데이터 임베딩의 품질과 차원은 벡터 데이터베이스의 성능과 정확도에 영향을 미칩니다.
- 하드웨어 환경: CPU, 메모리, 디스크, 네트워크 및 기타 하드웨어 리소스는 데이터베이스의 성능에 직접적인 영향을 줍니다.
벤치마킹과 더불어 모델을 선택할 때 고려해야 할 주요 요소입니다:
- 분산 기능: 분산 배포를 지원하고 대규모 데이터와 높은 동시성에 대응하기 위해 수평적으로 확장할 수 있는지 여부.
- 데이터 복사 및 캐싱: 데이터 보안을 보장하고 시스템 성능을 개선하기 위해 데이터 복사 및 캐싱 메커니즘을 지원할지 여부입니다.
- 인덱싱 알고리즘: 어떤 종류의 인덱싱 알고리즘이 사용되는지, 알고리즘의 성능 특성 및 적용 가능한 시나리오, 여러 인덱싱 알고리즘이 지원되는지 여부입니다.
- 벡터 유사도 검색 기능: 하이브리드 검색, 필터링, 다중 유사성 메트릭 및 기타 고급 검색 기능을 지원하여 복잡한 쿼리의 요구를 충족시킬 수 있는지 여부입니다.
- 세분화 메커니즘: 데이터 슬라이싱 지원 여부, 데이터 슬라이싱 및 관리 수행 방법, 데이터 관리 및 쿼리의 효율성 향상.
- 클러스터 접근 방식: 클러스터를 구축하는 방법, 클러스터의 확장성 및 안정성, 시스템의 고가용성 및 확장성을 보장합니다.
- 확장성 잠재력: 시스템 확장성의 상한선, 향후 비즈니스 성장에 따른 요구 사항을 충족할 수 있는지 여부, 시스템의 확장 능력을 예측합니다.
- 데이터 일관성: 특히 분산된 환경에서 데이터 일관성과 신뢰성을 보장하는 방법.
- 전체 시스템 가용성: 시스템의 안정성과 신뢰성, 즉 7x24 안정적인 운영을 보장하고 비즈니스 연속성 요구 사항을 충족할 수 있는지 여부입니다.
각도 메트릭과 유클리드 메트릭: 텍스트 검색을 위한 핵심 메트릭
텍스트 검색 분야에서는 다음과 같은 벡터 데이터베이스가 사용됩니다.각도 거리 의 성능은 일반적으로유클리드 거리 가 더 중요합니다. 각도 메트릭은 텍스트 문서의 의미적 유사성에 더 민감한 반면, 유클리드 메트릭은 문서의 길이와 크기에 더 중점을 두기 때문입니다.
- 각도 측정값(예: 코사인 거리): 벡터의 길이에 민감하지 않고 벡터의 방향에 초점을 맞추며 텍스트의 의미적 유사성을 측정하는 데 더 적합하며 텍스트 검색, 문서 분류 및 기타 시나리오에 적합합니다.
- 유클리드 미터법(예: 유클리드 거리): 또한 벡터의 크기와 방향을 고려하고 벡터의 길이에 민감하며 벡터의 절대 거리를 측정하는 데 더 적합하여 이미지 인식 및 음성 인식과 같은 시나리오에 적합합니다.
따라서 RAG 시스템을 선택할 때 다양한 차원의 벡터 데이터베이스에 초점을 맞춰야 합니다.각도 데이터 세트성능은 예를 들어 glove-100-각도 및 nytimes-256-각도 데이터 세트에 대한 성능입니다.

성능 분석(장갑-100각 데이터 세트):
- 초당 쿼리 수(QPS): Milvus는 리콜이 0.95보다 낮을 때 가장 높은 처리량을 보이는데, 이는 Milvus가 특정 리콜을 보장하면서 더 나은 성능으로 더 높은 쿼리 동시성을 처리할 수 있다는 것을 의미합니다. 리콜이 0.95를 초과하면 데이터베이스 간의 처리량 격차가 좁아지고, 높은 리콜에서는 성능 격차가 뚜렷하지 않습니다.
- 인덱스 작성 시간: 인덱스 빌드 시간이 가장 긴 것은 베스파이고, 위비게이트와 밀버스는 빌드 시간이 비슷하지만 밀버스가 약간 더 깁니다. 인덱스 빌드 시간은 데이터베이스 시작 속도와 데이터 업데이트 효율성에 직접적인 영향을 미치며, 빌드 시간이 짧을수록 데이터베이스 시작과 데이터 업데이트가 빨라집니다.
- 색인 크기: Weaviate의 인덱스가 가장 작고 Milvus의 인덱스가 가장 큽니다. 인덱스 크기는 저장 비용과 메모리 사용량에 영향을 미치며, 인덱스가 작을수록 저장 비용과 메모리 사용량이 줄어듭니다. Milvus의 인덱스는 크지만 120만 개의 100차원 벡터가 포함된 데이터 세트의 경우 인덱스 크기는 1.5GB 미만으로 여전히 허용 가능한 수준이며, 실제 적용 시 데이터의 크기에 따라 인덱스 크기의 영향을 평가해야 합니다.
7.1.2 NYTIMES-256-각 데이터 세트 성능

성능 분석(nytimes-256-각 데이터 집합):
이 데이터 세트의 성능은 장갑 100각 데이터 세트와 유사하며 전체적으로 일관된 추세를 보입니다.
- 인덱스 빌드 시간: Weaviate는 인덱스 빌드 시간이 가장 길고, Milvus와 Qdrant는 상대적으로 짧으며, 빌드 시간 순서는 장갑 100각 데이터 세트와 일치합니다.
- 인덱스 크기: Weaviate의 인덱스가 가장 작고, Milvus의 인덱스가 가장 크지만 440MB(256차원 벡터 290,000개가 포함된 데이터 세트)에 불과하며, 인덱스 크기 순서는 장갑 100각 데이터 세트와 일치합니다.
요약:
ANN 벤치마크는 다양한 벡터 데이터베이스의 성능 특성을 이해하는 데 도움이 되는 귀중한 성능 참조 데이터를 제공합니다. Milvus는 처리량이 뛰어나 동시성이 높은 쿼리 시나리오에 적합하고, Weaviate는 인덱스 크기와 저장 공간 절약에 유리하며, Vespa는 상대적으로 구축 시간이 길어 인덱스 구축 효율성을 고려할 필요가 있는 것으로 나타났습니다.
실제로 모델을 선택할 때는 특정 애플리케이션 시나리오, 데이터 특성 및 성능 요구 사항을 결합하여 종합적으로 평가해야 하며 벤치마크 테스트 결과에만 의존해서는 안 됩니다.
7.2 벡터 유사성 메트릭: 검색 결과를 개선하기 위한 올바른 메트릭 선택하기
벡터 유사성 메트릭은 두 벡터 간의 유사성 정도를 측정하는 데 사용되며, 데이터 유형과 애플리케이션 시나리오에 따라 서로 다른 유사성 메트릭이 적합합니다. 올바른 유사도 메트릭을 선택하는 것은 벡터 검색의 정확도와 효과에 직접적인 영향을 미칩니다. 벡터 데이터베이스마다 서로 다른 유사성 지표를 지원하므로 실제 필요에 따라 적합한 데이터베이스와 유사성 지표를 선택해야 합니다.
표준 | 설명 | 최첨단 | 열등한 | 적용 가능한 시나리오 | 지원되는 데이터베이스 |
---|---|---|---|---|---|
코사인 거리 | 두 벡터 사이의 각도의 코사인을 측정합니다. | 벡터 길이에 민감하지 않고 벡터 방향에 집중, 고차원 희소 데이터에 적합 | 벡터 길이 정보에 민감하지 않으며, 볼록하지 않은 데이터 세트에는 적용되지 않습니다. | 텍스트 유사도 계산, 문서 분류, 추천 시스템 | pgvector, Pinecone, Weaviate, Qdrant, Milvus, Vespa |
유클리드 거리(L2) | 다차원 공간에서 두 벡터 사이의 직선 거리를 계산합니다. | 직관적이고 이해하기 쉬우며 벡터의 크기와 방향을 모두 고려합니다. | "차원 재앙"으로 인한 고차원 공간에서의 성능 저하; 이상값에 대한 민감도 | 이미지 인식, 음성 인식, 필기 분석 | pgvector, Pinecone, Qdrant, Milvus, Vespa |
도트 제품 | 벡터의 해당 구성 요소의 곱의 합을 계산합니다. | 빠른 계산, 벡터 크기와 방향을 모두 반영합니다. | 벡터 스케일에 민감하며 데이터 정규화가 필요할 수 있습니다. | 추천 시스템, 협업 필터링, 매트릭스 분해 | pgvector, Pinecone, Weaviate, Qdrant, Milvus |
L2 제곱 유클리드 거리 | 유클리드의 거리 제곱 | 벡터 요소 간의 큰 차이에 불이익을 주며, 경우에 따라 더 효과적입니다. | 제곱 연산은 거리를 왜곡할 수 있으며 이상값에 더 민감합니다. | 이미지 처리, 이상 징후 감지 | Weaviate |
망치질 거리 | 이진 벡터의 위치에 해당하는 다양한 값의 개수 측정 | 이진 또는 범주형 데이터에 적합하며 빠른 계산이 가능합니다. | 연속 숫자 데이터에는 적용되지 않음 | 오류 감지 및 수정, DNA 염기서열 매칭 | 위아베이트, 밀버스, 베스파 |
맨해튼 거리(L1) | 좌표축 방향으로 두 벡터 사이의 거리의 합을 측정합니다. | 유클리드 거리보다 이상값에 더 강함 | 기하학적 의미는 유클리드 거리보다 직관적이지 않습니다. | 보드 거리 계산, 도시 블록 거리 계산 | Weaviate |
7.2.1 코사인 거리: 텍스트 유사도 계산을 위한 첫 번째 선택지
코사인 거리는 두 벡터 사이의 각도의 코사인을 계산하여 벡터의 유사성을 측정합니다. 코사인 값이 1에 가까울수록 벡터가 더 유사하고, 코사인 값이 -1에 가까울수록 벡터가 덜 유사하며, 코사인 값이 0이면 벡터가 직교하는 것으로 서로 관련이 없음을 나타냅니다.
- vantage::
- 벡터 방향에 초점을 맞추고 벡터 길이는 무시하세요: 코사인 거리는 벡터의 방향에 초점을 맞추며 벡터의 길이에 민감하지 않습니다. 따라서 문서의 길이가 텍스트 유사도 계산의 핵심 요소가 아닌 경우가 많고 문서의 주제와 의미 방향이 중요하기 때문에 텍스트 데이터를 처리하는 데 적합합니다.
- 고차원 희소 데이터의 경우: 고차원 희소 데이터 시나리오에서 코사인 거리는 여전히 우수한 성능을 유지할 수 있으며 텍스트 및 사용자 행동과 같은 고차원 희소 데이터의 유사도 계산에 적합합니다.
- 단점::
- 벡터 길이 정보에 민감하지 않습니다: 일부 시나리오에서는 벡터의 길이 정보도 중요할 수 있습니다. 예를 들어 추천 시스템에서는 사용자의 활동 수준(벡터 길이)이 중요한 특징이 될 수 있습니다. 코사인 거리는 이 정보를 무시하므로 정보가 손실될 수 있습니다.
- 볼록하지 않은 데이터 세트에는 적용되지 않습니다: 데이터 분포가 볼록 집합이 아닌 경우 코사인 거리가 정확한 유사도 측정값을 제공하지 못할 수 있으므로 데이터 분포에 따라 적절한 유사도 지표를 선택해야 합니다.
- 적용 가능한 시나리오::
- 텍스트 유사도 계산: 예를 들어, 두 개의 기사, 두 문장 또는 두 단락의 의미적 유사성을 계산하는 것은 텍스트 유사성 계산의 일반적인 메트릭입니다.
- 문서 분류: 문서는 문서 벡터의 유사성에 따라 다양한 카테고리로 분류됩니다.
- 권장 시스템: 추천은 사용자 행동 또는 항목 특성을 기반으로 하며, 개인화된 추천을 위해 사용자 벡터와 항목 벡터 간의 유사성을 계산합니다.
- 고차원 희소 데이터 시나리오: 예를 들어, 사용자 행동 데이터와 제품 기능 데이터와 같은 고차원 희소 데이터의 유사도 계산을 예로 들 수 있습니다.
7.2.2 유클리드 거리(L2): 직관적이고 이해하기 쉽지만 고차원 공간에서는 성능이 제한됩니다.
L2 규범이라고도 하는 유클리드 거리는 다차원 공간에서 두 벡터 사이의 직선 거리를 계산합니다. 거리가 작을수록 벡터는 더 유사하고, 거리가 클수록 벡터는 덜 유사합니다.
- vantage::
- 직관적이고 이해하기 쉽습니다: 유클리드 거리의 개념은 간단하고 직관적이며 이해와 사용이 쉬워 사람들이 가장 많이 사용하는 거리 측정법 중 하나입니다.
- 벡터의 크기와 방향을 모두 고려합니다: 유클리드 거리는 벡터의 크기와 방향을 모두 고려하므로 벡터의 차이를 보다 완벽하게 파악할 수 있으며, 벡터의 크기와 방향을 모두 고려해야 하는 시나리오에 적합합니다.
- 단점::
- 고차원 공간의 성능은 '차원 재앙'으로 인해 저하됩니다: 고차원 공간에서는 모든 점 사이의 유클리드 거리가 동일해지는 경향이 있어 유사도 검색의 정확도에 영향을 미치고 고차원 데이터 시나리오에서 성능이 제한됩니다.
- 이상값에 민감합니다: 유클리드 거리는 이상값에 민감하여 거리 계산 결과에 큰 영향을 미치고 견고성이 떨어집니다.
- 적용 가능한 시나리오::
- 이미지 인식: 예를 들어 얼굴 인식, 물체 인식 등 이미지 특징 벡터의 유클리드 거리를 기반으로 유사도를 비교합니다.
- 음성 인식: 예를 들어 음성 특징 매칭은 음성 특징 벡터의 유클리드 거리를 기반으로 유사성 비교를 수행합니다.
- 필체 분석: 예를 들어 필기 문자 인식, 필기 문자 특징 벡터의 유클리드 거리를 기반으로 한 유사도 비교 등이 있습니다.
- 저차원 데이터 시나리오: 저차원 데이터 시나리오에서 유클리드 거리는 저차원 데이터의 유사성 검색에 여전히 효과적인 유사성 메트릭입니다.
7.2.3 도트 제품: 효율적인 계산, 추천 시스템에 적합
도트 곱이라고도 하는 내적은 두 벡터의 해당 구성 요소의 곱의 합을 계산합니다. 내적 곱이 클수록 벡터의 유사도가 높고, 내적이 작을수록 벡터의 유사도가 낮습니다.
- vantage::
- 계산이 빠릅니다: 내부 곱은 매우 빠르며, 특히 벡터 차원이 높을 때 성능 이점이 더 분명하여 대규모 데이터 및 높은 동시성 시나리오에 적합합니다.
- 벡터 크기와 방향을 모두 반영합니다: 내적 곱은 벡터의 크기와 방향을 모두 고려하여 벡터의 전반적인 유사성을 반영하며, 벡터의 크기와 방향을 고려해야 하는 시나리오에 적합합니다.
- 단점::
- 벡터 스케일에 민감합니다: 내적 곱의 값은 벡터의 스케일에 영향을 받으며, 벡터의 스케일 차이가 큰 경우 내적 곱의 유사도 측정값이 왜곡되어 벡터의 스케일에 민감하게 반응할 수 있습니다.
- 데이터 정규화가 필요할 수 있습니다: 벡터 스케일 차이의 영향을 제거하기 위해, 예를 들어 벡터를 단위 길이로 정규화하는 등 데이터를 정규화하여 내부 곱의 유사도 측정값의 정확성을 보장해야 하는 경우가 종종 있습니다.
- 적용 가능한 시나리오::
- 권장 시스템: 예를 들어, 개인화된 추천을 위해 사용자 벡터와 항목 벡터 간의 유사성을 계산하기 위해 내부 곱은 추천 시스템에서 일반적으로 사용되는 유사성 측정 지표입니다.
- 공동 필터링: 추천은 내부 제품을 사용하여 사용자 또는 항목 간의 유사성을 계산하여 사용자 또는 항목의 유사성을 기반으로 이루어집니다.
- 매트릭스 분해: 차원 축소 및 특징 추출에 사용되며, 내부 곱은 벡터 간의 유사성을 측정하고 행렬 분해 알고리즘의 구현을 지원하는 데 사용할 수 있습니다.
- 고성능 컴퓨팅이 필요한 시나리오: 예를 들어 대규모 온라인 추천 시스템, 실시간 검색 시스템, 벡터 유사도를 빠르게 계산해야 하는 기타 시나리오 등이 있습니다.
7.2.4 L2 제곱 유클리드 거리: 차이를 증폭하여 특정 장면에 효과적입니다.
L2 제곱 거리는 유클리드 거리의 제곱이며, 유클리드 거리의 제곱값으로 계산됩니다.
- vantage::
- 페널티 벡터의 요소 간에 큰 차이가 있습니다: 제곱 연산은 벡터 요소 간의 차이를 확대하여 거리 값을 차이에 더 민감하게 만듭니다. 경우에 따라 이 속성은 유사점을 구별하고 차이점을 강조하는 데 더 유용할 수 있습니다.
- 제곱근 계산을 피하면 계산 효율성이 향상됩니다: 일부 계산 시나리오에서는 제곱근 계산을 피하여 효율성을 개선하고 계산 프로세스를 간소화할 수 있습니다.
- 단점::
- 제곱 연산은 거리를 왜곡할 수 있습니다: 제곱 연산은 거리의 배율을 변경하므로 유클리드 거리보다 직관적이지 않은 거리의 의미를 해석할 수 있습니다.
- 이상값에 더 민감합니다: 제곱 연산은 이상값의 효과를 더욱 증폭시켜 L2 제곱 거리가 이상값에 더 민감하고 덜 견고하게 만듭니다.
- 적용 가능한 시나리오::
- 이미지 처리: 예를 들어, 픽셀 수준에서 두 이미지를 비교할 때 L2 제곱 거리는 픽셀 차이를 확대하여 이미지의 뉘앙스를 보다 효과적으로 비교합니다.
- 이상 징후 탐지: 이상값의 영향을 증폭하면 이상 데이터를 더 쉽게 탐지할 수 있으며 이상값에 민감한 이상 징후 탐지 시나리오에 적합합니다.
- 차이를 증폭시켜야 하는 특정 시나리오: 차별화를 강조해야 하는 특정 시나리오에서는 L2 제곱 거리가 유클리드 거리보다 더 효과적일 수 있습니다.
7.2.5 해밍 거리: 바이너리 데이터 전용 메트릭
해밍 거리는 길이가 같은 두 이진 벡터의 해당 위치에서 서로 다른 값의 수를 측정하는 것으로, 이진 벡터 간의 차이 정도를 측정하는 데 사용됩니다.
- vantage::
- 이진 또는 범주형 데이터의 경우: 해밍 거리는 특히 이진 또는 범주형 데이터의 차이를 측정하는 데 사용되며 이진 벡터의 유사도 계산에 적합합니다.
- 계산이 빠릅니다: 해밍 거리 계산은 매우 간단하고 효율적이며, 이진 벡터의 해당 위치를 비교하고 다른 값의 개수를 세기만 하면 됩니다.
- 단점::
- 연속 숫자 데이터에는 적용되지 않습니다: 해밍 거리는 이진 또는 범주형 데이터에만 사용할 수 있으며, 연속적인 숫자 데이터는 처리할 수 없으므로 적용 범위가 제한적입니다.
- 적용 가능한 시나리오::
- 오류 감지 및 수정: 예를 들어, 통신 코딩에서 해밍 거리는 오류 감지 및 수정을 위해 코드 단어 간의 차이를 측정하는 데 사용되며 코딩 이론에서 중요한 개념입니다.
- DNA 염기서열 비교: DNA 서열을 이진 표현으로 변환하고 생물정보학 분석을 위해 해밍 거리를 사용하여 서열 비교를 수행했습니다.
- 하위 유형 데이터 유사성 계산: 예를 들어 사용자 라벨, 제품 속성 등과 같은 범주형 데이터의 유사도 계산과 같은 하위 유형 데이터의 유사도 계산에 적합합니다.
7.2.6 맨해튼 거리(L1): 이상값에 강한 보다 강력한 거리 측정 기준
L1 규범 또는 도시 블록 거리라고도 하는 맨해튼 거리는 모든 차원에서 두 벡터 간의 절대적인 차이의 합으로 계산됩니다.
- vantage::
- 유클리드 거리보다 이상값에 더 강합니다: 맨해튼 거리는 제곱 차이가 아닌 절대 차이만 계산하기 때문에 유클리드 거리보다 이상값에 덜 민감하며, 이상값 간섭에 더 강력하고 저항력이 있습니다.
- 계산이 비교적 빠릅니다: 맨해튼 거리는 유클리드 거리보다 약간 빠르며 거리를 빠르게 계산해야 하는 시나리오에 적합합니다.
- 단점::
- 기하학적 의미는 유클리드 거리보다 직관적이지 않습니다: 맨해튼 거리의 기하학적 의미는 유클리드 거리보다 직관적이지 않고 이해하기 어렵고 기하학적으로 해석하기 어렵습니다.
- 적용 가능한 시나리오::
- 보드 거리 계산: 예를 들어 체스 판에서 두 사각형 사이의 거리를 계산할 때 일반적으로 맨해튼 거리를 사용하여 판의 거리를 계산합니다.
- 도시 주변 거리 계산: 예를 들어 대각선 방향의 거리를 무시하고 도시 내 두 위치 사이의 거리를 계산할 때 맨해튼 거리를 도시 블록 거리라고도 합니다.
- 물류 계획의 최단 경로 문제: 맨해튼 거리는 물류 계획에서 경로 길이를 평가하고 최단 경로 알고리즘을 구현하는 데 사용할 수 있습니다.
- 이상값에 덜 민감한 시나리오: 이상값의 영향을 줄여야 하는 시나리오에서는 유클리드 거리보다 맨해튼 거리가 더 적합하고 견고합니다.
8. 참고 자료
- https://github.com/milvus-io/milvus
- 벡터 데이터베이스로 Al 강화하기: 벤치마크 - 1부 - 데이터 - 블로그 - 에프테크
- 기본 사항 - Qdrant
- Milvus 문서
- 홈 > Weaviate - 벡터 데이터베이스
- Qdrant 문서 - Qdrant
- 벡터 데이터베이스 사용 사례 - Qdrant
- 벡터 데이터베이스: 소개, 사용 사례, 상위 5가지 벡터 DB
- ANN 벤치마크
- 벡터 검색의 거리 메트릭 - Weaviate
- BM25 - 바이두 백과사전
© 저작권 정책
기사 저작권 AI 공유 서클 모두 무단 복제하지 마세요.
관련 문서
댓글 없음...