개요
이 가이드 에서는 Java 운전자 의 Atlas Vector Search 기능사용하는 방법을 학습 수 있습니다. 빌더 클래스는 $vectorSearch 파이프라인 단계를 만드는 데 사용할 Aggregates 수 있는 헬퍼 vectorSearch() 메서드를 제공합니다. 이 파이프라인 단계에서는 문서에서 시맨틱 검색 수행할 수 있습니다. 시맨틱 검색 은 제공된 검색 또는 구문 텀 의미는 비슷하지만 반드시 동일하지는 않은 정보를 찾는 검색 유형입니다.
벡터 검색 수행
이 기능 사용하려면 벡터 검색 인덱스 만들고 벡터 임베딩을 인덱스 해야 합니다. 벡터 검색 인덱스 만드는 방법에 대한 학습은 MongoDB Atlas 설명서의 지원되는 클라이언트 섹션을 참조하세요. 벡터 임베딩에 대해 자세히 학습하려면 Atlas 설명서에서 벡터 검색을 위한 벡터 임베딩을 인덱스하는 방법 을 참조하세요.
벡터 임베딩에 벡터 검색 인덱스 생성한 후 다음 섹션에 표시된 대로 파이프라인 단계에서 이 인덱스 참조할 수 있습니다.
벡터 검색 예제
다음 예에서는 vectorSearch() 및 project() 메서드를 사용하여 벡터 검색 점수를 계산하는 집계 파이프라인을 구축하는 방법을 보여줍니다.
List<Double> queryVector = (asList(-0.0072121937, -0.030757688, -0.012945653)); String indexName = "mflix_movies_embedding_index"; FieldSearchPath fieldSearchPath = fieldPath("plot_embedding"); int numCandidates = 2; int limit = 1; VectorSearchOptions options = vectorSearchOptions().filter(gte("year", 2016)); List<Bson> pipeline = asList( vectorSearch( fieldSearchPath, queryVector, indexName, numCandidates, limit, options), project( metaVectorSearchScore("vectorSearchScore")));
팁
쿼리 벡터 유형
앞의 예시 에서는 쿼리 벡터로 제공 BinaryVector 인스턴스 만들지만 Double 인스턴스의 List 을 만들 수도 있습니다. 그러나 저장 효율성 높이려면 BinaryVector 유형을 사용하는 것이 좋습니다.
다음 예시 집계 실행 하고 이전 집계 파이프라인 의 결과에서 벡터 검색 메타 점수를 출력하는 방법을 보여 줍니다.
Document found = collection.aggregate(pipeline).first(); double score = found.getDouble("vectorSearchScore").doubleValue(); System.out.println("vectorSearch score: " + score);
API 문서
이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 문서를 참조하세요.