AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

MongoDB Vector Search 결과 설명

메서드를 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 의 동작과 반환되는 정보의 양을 제어합니다. 값은 상세도가 낮은 순서대로 다음 중 하나일 수 있습니다.

쿼리에 대한 실행 쿼리 가 포함된 stats 필드를 포함한 쿼리 계획 에 대한 정보입니다. 계획 선택 중에 캡처한 부분 실행 데이터를 포함합니다.

쿼리에 대한 실행 통계가 포함된 stats 필드를 포함한 쿼리 계획에 대한 정보입니다.

queryPlanner(기본값)

쿼리 계획에 대한 정보입니다. 쿼리에 대한 실행 통계를 포함하는 stats 필드는 포함되지 않습니다.

explain 메서드는 다음 필드가 있는 BSON 문서 반환합니다.

옵션
유형
필요성
목적

collectors

문서

옵션

수집기에 대한 실행 통계를 설명합니다.

metadata

문서

옵션

유용한 메타데이터를 포함합니다.

query

문서

옵션

쿼리의 실행 통계를 설명합니다. 이것은 indexPartitionExplain의 최상위 수준에 없습니다.

resultMaterialization

문서

옵션

쿼리 실행 후 문서별 데이터 검색과 관련된 세부 정보입니다. queryPlanner 상세도 모드 에서는 이 값이 반환되지 않습니다.

resourceUsage

문서

옵션

쿼리가 실행되었을 때 쿼리의 리소스 사용량 세부 정보를 제공합니다. queryPlanner 상세 수준 모드에서는 반환되지 않습니다.

vectorTracing

객체 배열

옵션

지정된 문서의 벡터에 대한 다음과 같은 세부 정보를 추적합니다.

  • MongoDB Vector Search가 쿼리 실행 중에 벡터를 방문했는지 여부, 벡터가 MongoDB Vector Search 결과 설정하다 에 나타나는지 여부, 그렇지 않은 경우 벡터가 삭제된 이유입니다.

  • Hierarchical Navigable Small Worlds 의 확률적 특성으로 인해 일부 벡터에 연결할 수 없을 수 있기 때문에 벡터에 일반적으로 연결할 수 있는지 여부입니다.

luceneVectorSegmentStats

객체 배열

옵션

$vectorSearch 쿼리 실행의 루센별 세그먼트 세부 정보입니다.

collectors 은 다음 필드 있는 BSON 문서 입니다.

필드
유형
필요성
목적

allCollectorStats

문서

필수 사항

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 문서 입니다. 여기에는 다음과 같은 키가 포함되어 있습니다.

필드
설명

collect

수집기가 수집한 결과의 지속 시간과 수량을 추적합니다.

competitiveIterator

수집기에서 competitiveIterator가 요청된 총 지속 시간과 횟수를 추적하는 통계입니다.

setScorer

수집기에 설정된 점수 계산기의 총 지속 시간과 횟수를 추적하는 통계입니다.

metadata는 다음과 같은 유용한 메타데이터를 포함합니다.

필드
유형
필요성
목적

mongotVersion

문자열

옵션

mongot의 현재 버전입니다.

mongotHostName

문자열

옵션

mongot 호스트를 식별하는 사람이 읽을 수 있는 레이블입니다.

indexName

문자열

옵션

쿼리 에 사용된 MongoDB Vector Search 인덱스 .

cursorOptions

문서

옵션

mongot에 커서 옵션이 제공됩니다.

totalLuceneDocs

Integer

옵션

삭제된 문서를 포함하여 인덱스 에 있는 총 문서 수입니다.

explain 응답은 BSON 문서로 실행 통계를 설명하는 키와 값을 포함합니다. 결과 세트의 explain 문서에는 다음 필드가 포함되어 있습니다.

필드
유형
필요성
목적

path

문자열

옵션

루트가 아닌 경우에만 쿼리된 임베딩 필드 의 경로입니다.

type

문자열

필수 사항

벡터 검색 쿼리 유형의 이름입니다. 자세한 내용은 query 를 참조하세요.

args

문서

필수 사항

벡터 검색 쿼리 정보입니다. 자세한 내용은 query 를 참조하세요.

stats

문서

옵션

stats for the query if explain ran with executionStats or allPlansExecution verbosity.

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

문자열

필수 사항

검색 중인 벡터 필드 경로 .

k

Integer

필수 사항

조회 할 가장 가까운 이웃의 수입니다.

DocAndScoreQuery

문서 일치 및 점수 산정을 처리하는 쿼리 유형입니다. 구조화된 요약에는 일반적으로 쿼리 실행에 대한 통계가 포함됩니다.

ExactVectorSearchQuery

ENN 벡터 검색을 위한 쿼리 유형입니다. 구조화된 요약에는 다음 옵션에 대한 세부 정보가 포함되어 있습니다.

필드
유형
필요성
설명

field

문자열

필수 사항

검색 중인 벡터 필드 경로 .

similarityFunction

문자열

필수 사항

사용된 유사성 함수(dotProduct, cosine 또는 euclidean)입니다.

filter

문서

옵션

벡터 검색 범위를 제한하는 사전 필터 쿼리 .

BooleanQuery

If you use a pre-filter in your vector search query, your explain results include the BooleanQuery type. 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.

DefaultQuery

다른 쿼리 에서 명시적으로 정의되지 않은 쿼리는 기본값 쿼리 사용하여 직렬화됩니다. 구조화된 요약에는 다음 옵션에 대한 세부 정보가 포함되어 있습니다.

필드
유형
필요성
설명

queryType

문자열

필수 사항

쿼리 유형입니다.

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.

타이밍 분석은 쿼리 실행 영역 과 관련된 실행 통계를 설명합니다. 다음 필드에는 타이밍 분석이 표시됩니다.

필드
유형
설명

millisElapsed

Long

쿼리의 이 영역에서 보낸 시간을 포함하여 하위 항목이 이 영역에서 작업을 수행하는 데 경과된 대략적인 벽시계 시간입니다. 이 값은 이 영역에서 작업을 수행하는 동안 경과한 대략적인 밀리초 숫자입니다.

invocationCounts

문서

Number of invocations of tasks included in this area. The value is a map of task names to their invocation count.

다음 쿼리 영역에 대한 통계를 사용할 수 있습니다.

옵션
설명

context

벡터 검색 쿼리 실행과 관련된 통계입니다. 이 영역에 호출 횟수가 열거되는 두 가지 작업이 있습니다.

  • createScorer: Scorer는 문서를 반복하고 각 문서에 대한 점수를 생성합니다. createScorer을(를) 호출하면 점수 매기기를 담당하는 객체가 생성됩니다. 이 작업과 관련된 시간은 실제로 문서 점수를 매기는 데 소요된 시간이 아닙니다. 개수에는 scorerSupplier 호출 수가 포함됩니다.

  • createWeight가중치는 쿼리 및 IndexSearcher 과 관련된 상태를 저장. 개수에는 createWeight 호출 수가 포함됩니다.

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.

예를 들면 다음과 같습니다.

"context" : {
"millisElapsed" : NumberDouble(4.934751),
"invocationCounts" : {
"createWeight" : NumberLong(1),
"createScorer" : NumberLong(10)
}
}

match

결과 문서를 반복하고 일치시키는 것과 관련된 통계입니다. 이 통계는 어떤 문서가 다음 일치 항목인지 결정하는 데 걸리는 시간을 보여줍니다. 결과 일치에 소요되는 시간은 쿼리의 특성에 따라 크게 달라질 수 있습니다. 이 영역에서 호출 횟수가 열거되는 두 가지 작업이 있습니다.

  • nextDoc: 결과 집합의 다음 문서로 이동하기 위한 요청입니다. 여기에는 건너뛰기 식별 및 이동, 또는 다음 일치를 찾기 위해 필요한 기타 작업이 포함됩니다. 개수에는 nextDoc 및 advance 호출 횟수가 포함됩니다.

  • refineRoughMatch: 더 철저한 일치를 수행합니다. 일부 쿼리는 문서가 먼저 '대략' 일치하는 2단계 프로세스로 실행되고, 첫 번째 대략적인 일치를 충족한 후에만 두 번째, 보다 철저한 단계에서 확인됩니다. refineRoughMatch 작업은 2단계 프로세스의 두 번째 단계입니다. 개수에는 refineRoughMatch 호출 수가 포함됩니다.

예를 들면 다음과 같습니다.

"match" : {
"millisElapsed" : NumberDouble(4.901597),
"invocationCounts" : {
"nextDoc" : NumberLong(541),
"refineRoughMatch" : NumberLong(0)
}
}

score

결과 세트의 문서 점수 산정과 관련된 통계입니다. 이 영역에서 호출 횟수가 열거되는 두 가지 작업이 있습니다.

  • score: 결과 세트의 각 문서에 점수를 매깁니다. 개수에는 score 호출 수가 포함됩니다.

  • setMinCompetitiveScore: 점수가 주어진 값보다 낮은 문서를 무시합니다. 점수가 경쟁적이지 않은 일부 임계값보다 낮은 문서를 무시하여 쿼리가 수행되는 점수 산정 작업 수를 줄일 수 있었음을 나타냅니다. 개수에는 setMinCompetitiveScore 호출 수가 포함됩니다.

예를 들면 다음과 같습니다.

"score" : {
"millisElapsed" : NumberDouble(3.931312),
"invocationCounts" : {
"score" : NumberLong(536),
"setMinCompetitiveScore" : NumberLong(0)
}
}

resourceUsage 문서는 쿼리 실행에 사용된 리소스를 보여줍니다. 다음 필드를 포함합니다.

필드
유형
필요성
목적

majorFaults

Long

필수 사항

쿼리 실행 중 시스템이 메모리에서 필요한 데이터를 찾지 못해 디스크와 같은 백업 저장소에서 읽게 될 때 발생하는 주요 페이지 폴트 수입니다.

minorFaults

Long

필수 사항

데이터가 페이지 캐시에 있지만 아직 프로세스의 페이지 테이블에 매핑되지 않은 경우 발생하는 경미한 페이지 폴트의 수입니다.

userTimeMs

Long

필수 사항

사용자 공간에서 소요된 CPU 시간(밀리초)입니다.

systemTimeMs

Long

필수 사항

시스템 공간에서 소요된 CPU 시간(단위: 밀리초)입니다.

maxReportingThreads

Integer

필수 사항

모든 배치에서 쿼리 실행 중 mongot가 사용한 최대 스레드 수입니다. 동시 실행되지 않는 설명 쿼리의 경우 값은 1입니다.

numBatches

Integer

필수 사항

쿼리 처리 시 요청된 mongot의 총 배치 수입니다.

vectorTracing 배열 에는 문서 하나씩 객체 목록이 포함되며, 여기에는 문서 의 벡터에 대한 다음과 같은 세부 정보가 있습니다.

필드
유형
필요성
목적

visited

부울

필수 사항

쿼리 실행 중에 추적된 벡터를 방문했는지 여부를 지정하는 플래그입니다.

dropReason

문자열

조건부

벡터를 삭제하는 이유입니다. 이는 벡터를 방문하여 결과에서 제거한 경우에만 표시됩니다. 값은 다음과 같습니다.

  • Merge

  • NonCompetitiveScore

  • Filter

  • Rescoring

vectorSearchScore

Double

조건부

벡터와 관련된 점수입니다. 이는 벡터를 방문한 경우에만 표시됩니다.

luceneSegment

Integer

필수 사항

Lucene segment number to which the vector belongs. To learn more, see luceneVectorSegmentStats.

unreachable

부울

조건부

벡터에 연결할 수 없는지 여부를 지정하는 플래그입니다. 이는 벡터에 연결할 수 없는 경우에만 존재합니다.

객체의 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
}
}
필드
유형
필요성
목적

executionType

문자열

필수 사항

실행 전략. 값은 다음 중 하나일 수 있습니다.

  • Approximate

  • Exact

  • ApproximateToExactFallback

approximateStage

Float

조건부

대략적인 단계의 시간(밀리초)입니다. 이는 Approximate 및 ApproximateFallbackToExact 실행 유형에 대해서만 반환됩니다.

exactStage

Float

조건부

정확함 단계의 시간(밀리초)입니다. 이는 Exact 및 ApproximateFallbackToExact 실행 유형에 대해서만 반환됩니다.

filterMatchedDocsCount

Integer

옵션

쿼리에 사전 필터를 지정한 경우 쿼리 필터와 일치하는 문서 수입니다.

docCount

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.

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
}
}
])

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
}
}
])

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
}
}
])