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

MongoDB Vector Search에서 뷰 사용

View 에 MongoDB Vector Search 인덱스 생성하여 문서 및 컬렉션을 변환하여 컬렉션 부분적으로 인덱스, 호환되지 않는 데이터 유형 또는 데이터 모델을 지원 등의 작업을 수행할 수 있습니다.

다음 예제에서는 sample_mflix 샘플 데이터베이스 사용합니다.

참고

명확화

이 페이지에서는 표준 보기에 대해 설명합니다. 온디맨드 구체화된 보기에 대한 자세한 내용은 온디맨드 구체화 보기를 참조하세요.

뷰 유형 간의 차이점에 대해 학습하려면 온디맨드 구체화된 뷰 와의 비교를 참조하세요.

MongoDB 8.0 이상을 사용해야 합니다.

  • MongoDB v8.0 이상:

    • Atlas UI 또는 Atlas 관리 API 사용하여 View에 MongoDB Vector Search 인덱스를 생성합니다.

    • 소스 컬렉션 에 대해 MongoDB Vector Search 쿼리를 실행합니다. 뷰에서 생성된 MongoDB Vector Search 인덱스 참조합니다. 이러한 쿼리는 소스 컬렉션 에 나타나는 원본 문서를 반환합니다.

  • MongoDB v8.1 이상에서는 추가로 다음을 수행할 수 있습니다.

  • MongoDB v8.2 이상에서는 추가로 다음을 수행할 수 있습니다.

뷰를 편집하려면 사용자 관리자 역할 있어야 하며 collMod 데이터베이스 명령 사용해야 합니다.

  • MongoDB Vector Search는 다음 단계에서 뷰를 지원합니다.

    $expr 연산자 $match 단계 내에서만 사용할 수 있습니다.

  • 인덱스 이름은 소스 컬렉션과 모든 보기에서 고유해야 합니다.

  • MongoDB Vector Search는 $$USER_ROLES 시스템 변수 및 $rand 집계 연산자 와 같이 동적 결과를 생성하는 연산자가 있는 뷰 정의를 지원 하지 않습니다.

  • MongoDB Vector Search 쿼리는 소스 컬렉션 에 나타나는 원본 문서를 반환합니다.

뷰를 생성하려면 createCollection 권한 있어야 합니다.

매우 복잡한 뷰 변환은 인덱싱 및 쿼리 시간을 증가시킬 수 있습니다. 이는 mongod 인덱싱 중에 oplog 항목을 필터링하고 변환할 때( 초기 동기화 및 정상 상태 복제), 그리고 쿼리 시점에 반환된 문서에 이러한 변환을 적용할 때 뷰 정의를 읽어야 하기 때문입니다.

Atlas 에서 예비 복제 로드를 방지하려면 구체화된 뷰 를 생성하는 것이 좋습니다. 소스 컬렉션 직접 쿼리 뷰 변환으로 인한 쿼리 지연 시간 방지할 수도 있습니다.

다음 시나리오에서는 인덱스 상태가 FAILED로 변경됩니다.

  • View에 MongoDB Vector Search와 호환되지 않는 인덱스 생성합니다.

  • MongoDB Vector Search 호환성 요구 사항을 충족하지 않는 방식으로 뷰를 편집합니다.

  • 보기의 소스 컬렉션을 제거하거나 변경한 경우

    예를 들어 하나의 보기가 다른 보기를 기반으로 생성되었고 그 상위 보기 소스를 다른 컬렉션으로 변경하는 경우입니다.

    참고

    이 제한은 뷰가 다른 뷰의 하위인 경우에도 적용됩니다. 예를 들어, 모든 하위 항목의 출처가 되는 소스 컬렉션을 변경하거나 제거할 수 없습니다.

다음 시나리오에서는 인덱스 상태가 STALE로 변경됩니다.

경고

뷰에 정의된 집계 파이프라인이 컬렉션의 문서와 호환되지 않으면 검색 복제가 실패합니다. 예를 들어, 배열이 포함된 문서 필드에서 $toDouble 표현식이 작동하는 경우 복제가 실패합니다. 뷰가 컬렉션의 모든 문서에서 오류 없이 작동하는지 확인하세요.

  • 인덱스 READY인 동안 뷰 정의로 인해 집계 실패가 발생하면 인덱스 STALE이(가) 됩니다. 문서 확인하거나 더 이상 실패하지 않도록 뷰 정의를 변경한 후에는 인덱스 READY (으)로 돌아갑니다. STALE인 경우 인덱스 쿼리 가능한 상태로 유지됩니다. 인덱스 oplog에서 떨어지면 인덱스 재작성이 트리거됩니다.

  • 인덱스가 BUILDING일 때 뷰 정의가 집계 파이프라인 오류를 일으키면 문서를 수정할 때까지 인덱스 생성이 중단됩니다. 문서를 해결하거나 뷰 정의를 변경하여 더 이상 실패하지 않도록 하면 인덱스가 READY로 돌아갑니다.

Atlas UI 의 인덱스 상태 세부 정보 페이지에서 인덱스 상태를 확인할 수 있습니다.

이 오류는 8.1 이전 MongoDB 버전을 사용하여 뷰를 쿼리 때 나타납니다.

  • 8.0 이전 MongoDB 버전을 사용하는 경우 8.1+로 업그레이드 뷰를 직접 쿼리 것이 좋습니다. 8.0 으로 업그레이드 소스 컬렉션 쿼리 할 수 있습니다.

  • MongoDB 8.0을 사용하는 경우 소스 컬렉션 에 대해 뷰 인덱스 쿼리 해야 합니다. 예시 를 들어 보기 대신 컬렉션 에서 .aggregate() 를 실행 .

뷰에서 MongoDB Vector Search 인덱스 생성하면 mongot 프로세스 일반 컬렉션 에서 MongoDB Vector Search 인덱스 생성할 때와 동일한 작업을 수행합니다. mongot 프로세스:

  1. 컬렉션 에 대한 인덱스 정의의 규칙을 기반으로 MongoDB Vector Search 인덱스를 생성합니다.

  2. MongoDB Vector Search 인덱스를 정의한 컬렉션의 문서 및 인덱스의 현재 상태 에 대한 변경 스트림을 모니터링합니다.

  3. MongoDB Vector Search 쿼리를 처리하고 일치하는 문서에 대한 문서 ID 및 기타 검색 메타데이터 mongod로 반환한 다음, 가 전체 문서 조회를 수행하고 결과를 클라이언트 에 반환합니다.

View에 MongoDB 벡터 검색 인덱스를 만들면 1 및 2 단계에서 View 정의가 적용되고, 검색 인덱스 정의를 기반으로 변환된 문서가 인덱싱된 다음 디스크에 저장됩니다.

에 대해 자세히 학습 뷰를 참조하세요.

뷰에 MongoDB Search 인덱스 만들려면 MongoDB Search에서 뷰 사용을 참조하세요.