Atlas Vector Search 개요
Atlas Vector Search 를 사용하여 Atlas 에 저장된 데이터에 대해 벡터 검색 검색을 수행할 수 있습니다. 벡터 검색 을 사용하면 단순한 키워드 일치가 아닌 의미론적 의미를 기반으로 데이터를 쿼리 할 수 있으므로 더 관련성 높은 검색 결과를 조회 하는 데 도움이 됩니다. 이를 통해 AI 기반 애플리케이션은 RAG를 포함한 시맨틱 검색, 하이브리드 검색 및 생성 검색 과 같은 사용 사례를 지원 수 있습니다.
Atlas 를 벡터 데이터베이스 로 사용하면 Atlas 에서 다른 데이터와 함께 벡터 데이터를 원활하게 인덱스 할 수 있습니다. 이를 통해 컬렉션 의 필드를 필터하다 하고 벡터 데이터에 대해 벡터 검색 쿼리를 수행할 수 있습니다. 또한 벡터 검색 과 전체 텍스트 검색 쿼리를 결합하여 사용 사례 에 가장 관련성이 높은 결과를 반환할 수도 있습니다. Atlas Vector Search 를 인기 있는 AI 프레임워크 및 서비스와 통합하여 애플리케이션에서 벡터 검색 을 쉽게 구현 수 있습니다.
참고
Atlas Vector Search는 MongoDB6.0.11, v7.0.2 이상을 실행하는 클러스터에서 ANN 검색을 지원합니다. ENN 검색은 MongoDB v6.0.16, v7.0.10, v7.3.2, 이상을 실행하는 클러스터에서 지원합니다.
Vector Search란 무엇입니까?
벡터 검색은 데이터의 의미론적 또는 기본 의미를 기반으로 결과를 반환하는 검색 방법입니다. 일치하는 텍스트를 찾는 기존의 전체 텍스트 검색과 달리 벡터 검색은 다차원 공간에서 검색 쿼리에 가까운 벡터를 찾습니다. 벡터가 쿼리에 가까울수록 의미가 더 유사합니다.
벡터 검색은 검색 쿼리와 데이터의 의미를 해석함으로써 검색자의 의도와 검색 컨텍스트를 고려하여 보다 관련성 높은 결과를 검색할 수 있도록 합니다.
예를 들어, 'red fruit(빨간 과일)'이라는 용어를 검색한 경우, 전체 텍스트 검색은 이 키워드가 명시적으로 포함된 데이터만 반환합니다. 그러나 시맨틱 검색은 사과나 딸기와 같이 색깔이 빨간색인 과일과 같이 의미가 유사한 데이터를 반환할 수 있습니다.
사용 사례
Atlas Vector Search 는 다음과 같은 벡터 검색 사용 사례를 지원합니다.
시맨틱 검색: ANN 또는 ENN 검색 알고리즘을 사용하여 의미적 유사성을 기반으로 벡터 임베딩을 쿼리합니다.
학습 내용은 시맨틱 검색을 수행하는 방법및 벡터 검색 쿼리를 실행하는 방법을 참조하세요.
하이브리드 검색: 의미론적 검색과 전체 텍스트 검색 쿼리의 결과를 결합합니다. 자세히 알아보려면 Atlas Vector Search 및 Atlas Search를 사용한 하이브리드 검색 수행을 참조하세요.
생성 검색: Atlas 를 벡터 데이터베이스 로 사용하면 Atlas Vector Search 를 사용하여 언어 처리 (NLP), 머신 러닝 (ML) 및 생성 AI 애플리케이션을 강화할 수 있습니다. 구체적으로 다음을 수행하여 검색 보강 생성(RAG)을 구현 수 있습니다.
Atlas에 데이터를 수집합니다.
Atlas Vector Search 를 사용하여 관련 문서를 검색합니다.
LLM을 사용하여 데이터에 대한 응답을 생성합니다.
AI 통합
Atlas Vector Search 를 OpenAI, AWS, Google과 같은 AI 제공자의 인기 있는 임베딩 및 채팅 모델과 함께 사용할 수 있습니다. MongoDB 와 파트너사는 AI 기반 애플리케이션에서 Atlas Vector Search 를 활용하는 데 도움이 되는 특정 제품 통합도 제공합니다. 이러한 통합에는 처음부터 끝까지 RAG를 구현 수 내장 활성화 도구와 라이브러리가 포함됩니다.
자세한 내용은 벡터 검색과 AI 기술 통합을 참조하세요.
주요 개념
- 벡터
벡터는 데이터를 여러 차원으로 표현하는 숫자 배열입니다. 벡터는 텍스트, 이미지, 오디오 데이터부터 비정형 데이터까지 모든 종류의 데이터를 표현할 수 있습니다. 의미적 유사성은 벡터 사이의 거리를 측정하여 결정됩니다.
벡터 차원은 배열 의 요소 수를 나타내므로 벡터가 표시되는 벡터 공간의 차원 수를 나타냅니다.
특히, Atlas Vector Search는 더 작은 저장 용량과 의미적 풍부함을 선호하는 일종의 고차원 벡터인 고밀도 벡터를 사용합니다. 고밀도 벡터는 희소 벡터와 달리 더 많은 데이터를 담을 수 있으므로 Atlas Vector Search가 더 복잡한 관계를 포착할 수 있습니다.
- 벡터 임베딩
벡터 임베딩은 데이터를 표현하는 데 사용하는 벡터입니다. 이러한 임베딩은 데이터의 의미 있는 관계를 캡처하고 시맨틱 검색 및 조회와 같은 작업을 활성화 합니다.임베딩 모델을 통해 데이터를 전달하여 벡터 임베딩을 만들고 이러한 임베딩을 Atlas 에 문서 의 필드 로 저장 수 있습니다.
Atlas Vector Search는 쿼리 벡터와 가장 가까운 거리에 있는 벡터 임베딩을 식별하여 의미적 유사성을 결정합니다.
자세한 내용은 벡터 임베딩을 만드는 방법을 참조하세요.
- 임베딩 모델
임베딩 모델은 데이터를 벡터 임베딩으로 변환하는 데 사용하는 알고리즘입니다. 이를 위해 임베딩 모델은 대규모 데이터 코퍼스에 대해 학습된 머신 러닝 모델인 LLM을 사용하여 데이터의 의미를 포착하는 벡터 임베딩을 생성합니다.
선택한 임베딩 모델에 따라 벡터 임베딩의 크기가 결정됩니다. 이러한 차원을 Atlas Vector Search 인덱스 의 필드 로 지정해야 합니다.
임베딩 모델은 모델 학습 방법에 따라 달라집니다. 따라서 모델마다 데이터와 사용 사례 에 따라 다양한 이점이 있습니다. 학습 내용은 임베딩 모델 선택을 참조하세요.
Atlas Vector Search 인덱스
Atlas에서 데이터의 벡터 검색을 수행하려면 Atlas Vector Search 인덱스를 만들어야 합니다. Atlas Vector Search 인덱스는 다른 데이터베이스 인덱스와 별개이며 쿼리 시점에 벡터 임베딩을 포함하는 문서를 효율적으로 조회하는 데 사용됩니다. Atlas Vector Search 인덱스 정의에서 임베딩이 포함된 컬렉션의 필드를 인덱싱하여 해당 필드에 대한 벡터 검색을 활성화합니다. Atlas Vector Search는 길이가 4096 차원 이하인 임베딩을 지원합니다.
또한 Atlas Vector Search 쿼리를 실행하려는 컬렉션의 부울, 날짜, 숫자, objectId, 문자열 및 UUID 필드를 인덱싱하여 데이터를 사전 필터링할 수도 있습니다. 데이터를 필터링하면 검색 범위가 좁아지고 특정 벡터 임베딩이 비교 대상으로 고려되지 않습니다.
Atlas Vector Search를 위해 필드를 인덱싱하는 방법에 대한 자세한 내용은 벡터 검색을 위해 필드를 인덱싱하는 방법을 참조하세요.
Atlas Vector Search 쿼리 정보
Atlas Vector Search는 계층적 탐색 가능한 작은 세계 알고리즘 및 정확한 근사 최근접 이웃(ENN) 검색을 사용한 근사 최근접 이웃(ANN) 검색을 지원합니다.
가장 유사한 벡터를 찾기 위해 Atlas Vector Search는 모든 벡터 임베딩을 스캔하지 않고 ANN 검색을 수행하며, 인덱싱된 모든 벡터 임베딩에 대해 ENN 검색을 철저하게 진행합니다. 자세한 내용은 vectorSearch 정의를 참조하세요.
Atlas Vector Search 쿼리는 단계가 파이프라인의 첫 번째 단계인 $vectorSearch
집계 파이프라인 단계 로 구성됩니다. 기본 Atlas Vector Search 쿼리 프로세스는 다음과 같습니다.
ANN 또는 ENN 검색을 선택하고 검색 쿼리를 나타내는 벡터 임베딩인 쿼리 벡터를 지정합니다.
Atlas Vector Search는 데이터에서 쿼리 벡터에 가장 가까운 벡터 임베딩을 찾습니다.
Atlas Vector Search는 가장 유사한 벡터가 포함된 문서를 반환합니다.
벡터 검색 쿼리를 사용자 지정하려면, 지원되는 쿼리 또는 집계 연산자와 함께 MQL일치 표현식을 사용하여 인덱싱한 필드에 대한 데이터를 사전 필터링하거나 집계 단계를 추가하여 결과를 추가로 처리하고 구성할 수 있습니다.
Atlas Vector Search 쿼리를 생성하고 실행하는 방법을 알아보려면 벡터 검색 쿼리 실행을 참조하세요.
다음 단계
Atlas Vector Search 인덱스를 만들고 샘플 데이터에 대해 Atlas Vector Search 쿼리를 실행하는 실습을 해보고 싶다면 MongoDB University의 Atlas Search 교육 과정과 다음 페이지의 튜토리얼을 참조하세요.
최적의 성능을 위해서는 워크로드 격리를 위한 별도의 검색 노드를 배포하는 것이 좋습니다. 검색 노드는 개별 쿼리 지연 시간을 개선하기 위해 동시 쿼리 실행을 지원합니다. 자세히 알아보려면 배포 옵션 검토를 참조하세요.