메서드를 explain 사용하여 MongoDB Vector Search 쿼리 실행 쿼리 쿼리 내부적으로 실행 된 방식을 설명하는 실행 쿼리 계획 계획이 포함된 BSON 문서 반환합니다.
구문
db.<myCollection>.explain("<verbosity>").aggregate([ { "$vectorSearch": { "exact": true | false, "filter": {<filter-specification>}, "index": "<index-name>", "limit": <number-of-results>, "numCandidates": <number-of-candidates>, "path": "<field-to-search>", "queryVector": [<array-of-numbers>], "explainOptions": { "traceDocumentIds": [<array-of-document-IDs>] } } } ])
상세
상세 모드 explain 의 동작과 반환되는 정보의 양을 제어합니다. 값은 상세도가 낮은 순서대로 다음 중 하나일 수 있습니다.
쿼리에 대한 실행 쿼리 가 포함된 | |
쿼리에 대한 실행 통계가 포함된 | |
queryPlanner(기본값) | 쿼리 계획에 대한 정보입니다. 쿼리에 대한 실행 통계를 포함하는 |
결과 설명
explain 메서드는 다음 필드가 있는 BSON 문서 반환합니다.
옵션 | 유형 | 필요성 | 목적 |
|---|---|---|---|
| 문서 | 옵션 | 수집기에 대한 실행 통계를 설명합니다. |
| 문서 | 옵션 | 유용한 메타데이터를 포함합니다. |
| 문서 | 옵션 | 쿼리의 실행 통계를 설명합니다. 이것은 |
| 문서 | 옵션 | 쿼리 실행 후 문서별 데이터 검색과 관련된 세부 정보입니다. |
| 문서 | 옵션 | 쿼리가 실행되었을 때 쿼리의 리소스 사용량 세부 정보를 제공합니다. |
| 객체 배열 | 옵션 | 지정된 문서의 벡터에 대한 다음과 같은 세부 정보를 추적합니다.
|
| 객체 배열 | 옵션 |
|
collectors
collectors 은 다음 필드 있는 BSON 문서 입니다.
필드 | 유형 | 필요성 | 목적 |
|---|---|---|---|
| 문서 | 필수 사항 | Statistics of all collectors of the query. Statistics reported represent either the maximum value across all collectors used in the query or a sum of the statistic across all the sub-collectors. The timing statistics are summed to reflect the total time spent across all collectors for the entire query. To learn more, see |
allCollectorStats
allCollectorStats 은 쿼리 에 지정된 모든 수집기의 수집기 통계를 설명하는 BSON 문서 입니다. 여기에는 다음과 같은 키가 포함되어 있습니다.
필드 | 설명 |
|---|---|
| 수집기가 수집한 결과의 지속 시간과 수량을 추적합니다. |
| 수집기에서 |
| 수집기에 설정된 점수 계산기의 총 지속 시간과 횟수를 추적하는 통계입니다. |
metadata
metadata는 다음과 같은 유용한 메타데이터를 포함합니다.
필드 | 유형 | 필요성 | 목적 |
|---|---|---|---|
| 문자열 | 옵션 |
|
| 문자열 | 옵션 |
|
| 문자열 | 옵션 | 쿼리 에 사용된 MongoDB Vector Search 인덱스 . |
| 문서 | 옵션 |
|
| Integer | 옵션 | 삭제된 문서를 포함하여 인덱스 에 있는 총 문서 수입니다. |
query
explain 응답은 BSON 문서로 실행 통계를 설명하는 키와 값을 포함합니다. 결과 세트의 explain 문서에는 다음 필드가 포함되어 있습니다.
필드 | 유형 | 필요성 | 목적 |
|---|---|---|---|
| 문자열 | 옵션 | 루트가 아닌 경우에만 쿼리된 임베딩 필드 의 경로입니다. |
| 문자열 | 필수 사항 | 벡터 검색 쿼리 유형의 이름입니다. 자세한 내용은 |
| 문서 | 필수 사항 | 벡터 검색 쿼리 정보입니다. 자세한 내용은 |
| 문서 | 옵션 |
|
args
The explain response contains information how the query was executed internally. The args field includes the following details:
쿼리 유형
각 쿼리 유형에 대한 구조화된 요약 예시
구조화된 요약의 쿼리 옵션
다음 섹션에서는 구조화된 요약의 쿼리 유형과 필드에 대해 설명합니다.
WrappedKnnQuery여러 쿼리를 결합하는 ANN 벡터 검색에 사용되는 래퍼 쿼리 입니다. 구조화된 요약에는 다음 옵션에 대한 세부 정보가 포함되어 있습니다.
필드유형필요성설명query배열
필수 사항
벡터 검색 에 사용되는 하위 쿼리의 배열로, 일반적으로
KnnFloatVectorQuery및DocAndScoreQuery를 포함합니다.
KnnFloatVectorQuery부동 소수점 벡터에 대한 ANN 검색과 관련된 쿼리 유형입니다. 구조화된 요약에는 다음 옵션에 대한 세부 정보가 포함되어 있습니다.
필드유형필요성설명field문자열
필수 사항
검색 중인 벡터 필드 경로 .
kInteger
필수 사항
조회 할 가장 가까운 이웃의 수입니다.
ExactVectorSearchQueryENN 벡터 검색을 위한 쿼리 유형입니다. 구조화된 요약에는 다음 옵션에 대한 세부 정보가 포함되어 있습니다.
필드유형필요성설명field문자열
필수 사항
검색 중인 벡터 필드 경로 .
similarityFunction문자열
필수 사항
사용된 유사성 함수(
dotProduct,cosine또는euclidean)입니다.filter문서
옵션
벡터 검색 범위를 제한하는 사전 필터 쿼리 .
BooleanQueryIf you use a pre-filter in your vector search query, your explain results include the
BooleanQuerytype. To learn more about the fields for this type and other query types specific to your pre-filter query, refer to the Query Types on the MongoDB Search Explain Page.
stats
The explain response for executionStats and allPlansExecution verbosity modes includes a stats field that contains information on how much time a query spends in various stages of query execution.
타이밍 분석
타이밍 분석은 쿼리 실행 영역 과 관련된 실행 통계를 설명합니다. 다음 필드에는 타이밍 분석이 표시됩니다.
쿼리 영역
다음 쿼리 영역에 대한 통계를 사용할 수 있습니다.
옵션 | 설명 | |||||||
|---|---|---|---|---|---|---|---|---|
| 벡터 검색 쿼리 실행과 관련된 통계입니다. 이 영역에 호출 횟수가 열거되는 두 가지 작업이 있습니다.
The time spent in this area is related to the structure of the query, and is not based on the number of results that are iterated through and scored. 예를 들면 다음과 같습니다. | |||||||
| 결과 문서를 반복하고 일치시키는 것과 관련된 통계입니다. 이 통계는 어떤 문서가 다음 일치 항목인지 결정하는 데 걸리는 시간을 보여줍니다. 결과 일치에 소요되는 시간은 쿼리의 특성에 따라 크게 달라질 수 있습니다. 이 영역에서 호출 횟수가 열거되는 두 가지 작업이 있습니다.
예를 들면 다음과 같습니다. | |||||||
| 결과 세트의 문서 점수 산정과 관련된 통계입니다. 이 영역에서 호출 횟수가 열거되는 두 가지 작업이 있습니다.
예를 들면 다음과 같습니다. |
resourceUsage
resourceUsage 문서는 쿼리 실행에 사용된 리소스를 보여줍니다. 다음 필드를 포함합니다.
필드 | 유형 | 필요성 | 목적 |
|---|---|---|---|
| Long | 필수 사항 | 쿼리 실행 중 시스템이 메모리에서 필요한 데이터를 찾지 못해 디스크와 같은 백업 저장소에서 읽게 될 때 발생하는 주요 페이지 폴트 수입니다. |
| Long | 필수 사항 | 데이터가 페이지 캐시에 있지만 아직 프로세스의 페이지 테이블에 매핑되지 않은 경우 발생하는 경미한 페이지 폴트의 수입니다. |
| Long | 필수 사항 | 사용자 공간에서 소요된 CPU 시간(밀리초)입니다. |
| Long | 필수 사항 | 시스템 공간에서 소요된 CPU 시간(단위: 밀리초)입니다. |
| Integer | 필수 사항 | 모든 배치에서 쿼리 실행 중 |
| Integer | 필수 사항 | 쿼리 처리 시 요청된 |
vectorTracing
vectorTracing 배열 에는 문서 하나씩 객체 목록이 포함되며, 여기에는 문서 의 벡터에 대한 다음과 같은 세부 정보가 있습니다.
필드 | 유형 | 필요성 | 목적 |
|---|---|---|---|
| 부울 | 필수 사항 | 쿼리 실행 중에 추적된 벡터를 방문했는지 여부를 지정하는 플래그입니다. |
| 문자열 | 조건부 | 벡터를 삭제하는 이유입니다. 이는 벡터를 방문하여 결과에서 제거한 경우에만 표시됩니다. 값은 다음과 같습니다.
|
| Double | 조건부 | 벡터와 관련된 점수입니다. 이는 벡터를 방문한 경우에만 표시됩니다. |
| Integer | 필수 사항 | Lucene segment number to which the vector belongs. To learn more, see |
| 부울 | 조건부 | 벡터에 연결할 수 없는지 여부를 지정하는 플래그입니다. 이는 벡터에 연결할 수 없는 경우에만 존재합니다. |
luceneVectorSegmentStats
객체의 luceneVectorSegmentStats 배열에는 $vectorSearch 쿼리 실행에 대한 루센 세그먼트별 분석이 포함되어 있습니다. 각 세그먼트는 숫자로 식별되며 쿼리 실행 세부 정보를 설명하는 매개변수를 포함합니다.
{ "0": { "executionType": "Approximate", "approximateTimeMillis": 0.10825, "filterMatchedDocsCount": 0, "docCount": 100 }, "1": { "executionType": "Exact", "exactTimeMillis": 0.10825, "filterMatchedDocsCount": 0, "docCount": 55 }, "2": { "executionType": "ApproximateToExactFallback", "approximateTimeMillis": 0.10825, "exactTimeMillis": 0.10825, "filterMatchedDocsCount": 0, "docCount": 55 } }
필드 | 유형 | 필요성 | 목적 |
|---|---|---|---|
| 문자열 | 필수 사항 | 실행 전략. 값은 다음 중 하나일 수 있습니다.
|
| Float | 조건부 | 대략적인 단계의 시간(밀리초)입니다. 이는 |
| Float | 조건부 | 정확함 단계의 시간(밀리초)입니다. 이는 |
| Integer | 옵션 | 쿼리에 사전 필터를 지정한 경우 쿼리 필터와 일치하는 문서 수입니다. |
| Integer | 필수 사항 | 세그먼트에 있는 총 문서 수입니다. |
예시
The following examples use the explain method on sample ANN and ENN queries. If you want to run the following examples in your own environment, you must first complete the MongoDB Vector Search Quick Start using mongosh.
allPlansExecution
The following example runs the explain method on an ANN and ENN vector search query for the plot_embedding_voyage_3_large field with the allPlansExecution verbosity mode.
db.embedded_movies.explain("allPlansExecution").aggregate([ { "$vectorSearch": { "index": "vector_index", "path": "plot_embedding_voyage_3_large", "queryVector": QUERY_EMBEDDING, "numCandidates": 150, "limit": 10 } } ])
db.embedded_movies.explain("allPlansExecution").aggregate([ { "$vectorSearch": { "index": "vector_index", "path": "plot_embedding_voyage_3_large", "queryVector": QUERY_EMBEDDING, "exact": true, "limit": 10 } } ])
queryPlanner
The following example runs the explain method on an ANN and ENN vector search query for the plot_embedding_voyage_3_large field with the queryPlanner verbosity mode.
db.embedded_movies.explain("queryPlanner").aggregate([ { "$vectorSearch": { "index": "vector_index", "path": "plot_embedding_voyage_3_large", "queryVector": QUERY_EMBEDDING, "numCandidates": 150, "limit": 10 } } ])
db.embedded_movies.explain("queryPlanner").aggregate([ { "$vectorSearch": { "index": "vector_index", "path": "plot_embedding_voyage_3_large", "queryVector": QUERY_EMBEDDING, "exact": true, "limit": 10 } } ])
executionStats
The following example runs the explain method on an ANN and ENN vector search query for the plot_embedding_voyage_3_large field with the executionStats verbosity mode.
db.embedded_movies.explain("executionStats").aggregate([ { "$vectorSearch": { "index": "vector_index", "path": "plot_embedding_voyage_3_large", "queryVector": QUERY_EMBEDDING, "numCandidates": 150, "limit": 10 } } ])
db.embedded_movies.explain("executionStats").aggregate([ { "$vectorSearch": { "index": "vector_index", "path": "plot_embedding_voyage_3_large", "queryVector": QUERY_EMBEDDING, "exact": true, "limit": 10 } } ])
db.embedded_movies.explain("executionStats").aggregate([ { "$vectorSearch": { "index": "vector_index", "path": "plot_embedding_voyage_3_large", "queryVector": QUERY_EMBEDDING, "numCandidates": 150, "limit": 10, "explainOptions": { "traceDocumentIds": [ ObjectId('573a13d8f29313caabda6557'), ObjectId('573a1398f29313caabce98d9'), ObjectId('573a1391f29313caabcd8319'), ObjectId('573a1398f29313caabceb500'), ObjectId('573a1397f29313caabce780e') ] } } } ])