Share via


Azure AI 검색의 인덱스 프로젝션

Important

인덱스 프로젝션은 추가 사용 약관에 따라 공개 미리 보기로 제공됩니다. Azure Portal, 2023-10-01-Preview REST API, Azure Portal 및 해당 기능을 포함하도록 업데이트된 베타 클라이언트 라이브러리를 통해 사용할 수 있습니다.

인덱스 프로젝션은 보조 인덱스 형태를 정의하는 기술 세트 정의의 구성 요소로, 보강 파이프라인의 콘텐츠가 여러 인덱스를 대상으로 할 수 있는 일대다 인덱스 패턴을 지원합니다.

인덱스 프로젝션은 보강 파이프라인에서 생성된 AI 보강 콘텐츠를 가져와서 검색 서비스의 보조 인덱스(기본적으로 인덱서가 대상으로 하는 것과는 다름)로 인덱싱합니다. 또한 인덱스 프로젝션을 사용하면 데이터를 인덱싱하기 전에 변형할 수 있습니다. 이렇게 하면 보강된 항목의 배열을 대상 인덱스의 여러 검색 문서로 구분할 수 있습니다("일대다" 인덱싱으로 잘 알려짐). "일대다" 인덱싱은 데이터 청크 시나리오에 유용하며, 이 경우 청크로 분할되지 않은 콘텐츠에 대한 기본 인덱스와 청크 분할된 콘텐츠에 대한 보조 인덱스를 사용할 수 있습니다.

이전에 인식 기술을 사용한 적이 있다면 보강된 콘텐츠가 기술 세트에 의해 생성된다는 것을 이미 잘 알고 있을 것입니다. 기술 세트는 엔터티 인식 또는 텍스트 번역과 같은 원자성 변환을 호출하는 보강 시퀀스를 통해 문서를 이동합니다. 기본적으로 기술 세트 내에서 처리된 하나의 문서가 검색 인덱스 내의 단일 문서에 매핑됩니다. 즉, 입력 텍스트의 청크 분할을 수행한 다음, 각 청크에서 보강을 수행하는 경우 outputFieldMappings를 통해 매핑될 때의 인덱스 결과는 생성된 보강의 배열입니다. 인덱스 프로젝션을 사용하면 보강된 데이터의 각 청크를 자체 검색 문서에 매핑할 컨텍스트를 정의할 수 있습니다. 이렇게 하면 문서의 보강된 데이터에 대한 일대다 매핑을 검색 인덱스에 적용할 수 있습니다.

인덱스 프로젝션 정의

인덱스 프로젝션은 기술 세트 정의 내에서 정의되며, 주로 선택기의 배열로 정의됩니다. 여기서 각 선택기는 검색 서비스의 다른 대상 인덱스에 해당합니다. 각 선택기에는 정의의 일부로 다음 매개 변수가 필요합니다.

  • targetIndexName: 인덱스 프로젝션 데이터가 인덱스싱되는 검색 서비스의 인덱스 이름입니다.
  • parentKeyFieldName: 부모 문서의 키 값을 포함하는 대상 인덱스의 필드 이름입니다.
  • sourceContext: 데이터를 개별 검색 문서에 매핑할 세분성을 정의하는 보강 주석입니다. 자세한 내용은 기술 컨텍스트 및 입력 주석 언어를 참조하세요.
  • mappings: 보강된 데이터를 검색 인덱스의 필드에 매핑하는 배열입니다. 각 매핑은 다음으로 구성됩니다.
    • name: 데이터를 인덱싱해야 하는 검색 인덱스의 필드 이름입니다.
    • source: 데이터를 끌어올 보강 주석 경로입니다.

또한 각 mapping지식 저장소 또는 쉐이퍼 기술과 유사하게 선택적 sourceContextinputs 필드를 사용하여 데이터를 재귀적으로 정의할 수 있습니다. 이러한 매개 변수를 사용하면 데이터를 검색 인덱스의 Edm.ComplexType 형식 필드로 인덱싱하도록 구성할 수 있습니다.

targetIndexName 매개 변수에 정의된 인덱스에는 다음과 같은 요구 사항이 있습니다.

  • 인덱스 프로젝션 정의를 포함하는 기술 세트를 만들기 전에 검색 서비스에서 이미 만들어져야 합니다.
  • parentKeyFieldName 매개 변수에 정의된 이름의 필드를 포함해야 합니다. 이 필드는 Edm.String 형식이어야 하며 키 필드가 될 수 없습니다. 또한 필터링 가능한 세트가 true로 설정되어 있어야 합니다.
  • 키 필드에는 true로 설정된 검색 가능한 세트가 있어야 하며 keyword 분석기를 사용하여 정의되어야 합니다.
  • mappings에 정의된 각 name에 대해 정의된 필드가 있어야 하며 그 중 어느 것도 키 필드가 될 수 없습니다.

다음은 분할 기술을 통해 개별 페이지 출력을 검색 인덱스의 고유한 문서로 프로젝션하는 데 사용할 수 있는 인덱스 프로젝션 정의에 대한 예제 페이로드입니다.

"indexProjections": {
    "selectors": [
        {
            "targetIndexName": "myTargetIndex",
            "parentKeyFieldName": "ParentKey",
            "sourceContext": "/document/pages/*",
            "mappings": [
                {
                    "name": "chunk",
                    "source": "/document/pages/*"
                }
            ]
        }
    ]
}

부모 문서 처리

인덱스 프로젝션은 기술 세트를 통해 실행되는 각 "부모" 문서에 대해 "자식" 문서를 효과적으로 생성하므로 다음과 같이 "부모" 문서의 인덱싱을 처리하는 방법도 선택할 수 있습니다.

  • 부모 및 자식 문서를 별도의 인덱스로 유지하려면 인덱서 정의에 대한 targetIndexName이 인덱스 프로젝션 선택기에서 정의된 targetIndexName과 다른지 확인합니다.

  • 부모 및 자식 문서를 동일한 인덱스로 인덱싱하려면 대상 인덱스의 스키마가 인덱서 정의에 정의된 fieldMappingsoutputFieldMappings 및 인덱스 프로젝션 선택기의 mappings에서 작동하는지 확인해야 합니다. 그런 다음, 인덱서 정의 및 인덱스 프로젝션 선택기에서 동일한 targetIndexName을 제공합니다.

  • 부모 문서를 무시하고 자식 문서만 인덱싱하려면 인덱서 정의에 targetIndexName을 제공해야 합니다(인덱스 프로젝션 선택기에서 제공하는 것과 동일한 항목만 제공할 수 있음). 그런 다음, 아래와 같이 skipIndexingParentDocuments로 설정된 projectionMode 키를 사용하여 selectors 정의 다음에 별도의 parameters 개체를 정의합니다.

    "indexProjections": {
        "selectors": [
            ...
        ],
        "parameters": {
            "projectionMode": "skipIndexingParentDocuments"
        }
    }
    

REST API 버전 2023-10-01-Preview를 사용하면 기술 세트에 추가하여 인덱스 프로젝션을 만들 수 있습니다.

콘텐츠 수명 주기

인덱서 데이터 원본이 변경 내용 추적 및 삭제 검색을 지원하는 경우, 인덱싱 프로세스는 기본 인덱스와 보조 인덱스를 동기화하여 해당 변경 내용을 선택할 수 있습니다.

인덱서와 기술 세트를 실행할 때마다 기술 세트 또는 기본 원본 데이터가 변경된 경우 인덱스 프로젝션이 업데이트됩니다. 인덱서에서 선택한 모든 변경 내용이 보강 프로세스를 통해 인덱스의 프로젝션에 전파되어 프로젝션된 데이터가 원래 데이터 원본 콘텐츠의 현재 표현이 되도록 합니다.

참고 항목

인덱스 푸시 API를 사용하여 프로젝션된 문서의 데이터를 수동으로 편집할 수 있지만 원본 데이터의 문서가 업데이트된 경우 다음에 파이프라인을 호출하면 편집 내용을 모두 덮어씁니다.

프로젝션된 키 값

각 인덱스 프로젝션 문서에는 고유성을 보장하고 변경 및 삭제 추적이 올바르게 작동하도록 하기 위해 인덱서가 생성하는 고유 식별 키가 포함되어 있습니다. 이 키에는 다음 세그먼트가 포함됩니다.

  • 고유성을 보장하는 임의의 해시. 인덱서가 실행되는 동안 부모 문서가 업데이트되면 이 해시가 변경됩니다.
  • 부모 문서의 키
  • 해당 문서가 생성된 컨텍스트를 식별하는 보강 주석 경로

예를 들어 키 값이 "123"인 부모 문서를 4페이지로 분할한 다음, 각 페이지가 인덱스 프로젝션을 통해 자체 문서로 프로젝션되면 텍스트의 세 번째 페이지에 대한 키는 "01f07abfe7ed_123_pages_2"와 같이 표시됩니다. 그런 다음, 부모 문서를 업데이트하여 다섯 번째 페이지를 추가하면 나머지 프로젝션 데이터가 변경되지 않은 경우에도 인덱서 실행 간에 임의의 해시 값이 변경되기 때문에 세 번째 페이지의 새 키는 "9d800bdacc0e_123_pages_2"가 될 수 있습니다.

변경 내용 또는 추가 내용

프로젝션된 인덱스 문서 내의 데이터가 변경되도록 부모 문서를 변경하는 경우(예: 특정 페이지의 단어가 변경되었지만 새 페이지가 추가되지 않은 경우), 해당 특정 프로젝션에 대한 대상 인덱스의 데이터가 해당 변경 내용을 반영하도록 업데이트됩니다.

이전에 없었던 새로 프로젝션된 자식 문서가 있도록 부모 문서를 변경하는 경우(예: 문서에 텍스트가 있는 페이지가 하나 이상 추가된 경우), 다음 번에 인덱서가 실행될 때 해당하는 새 자식 문서가 추가됩니다.

두 경우 모두 특정 콘텐츠가 업데이트되었는지에 관계없이 프로젝션된 모든 문서가 새 해시 값을 키에 포함하도록 업데이트됩니다.

삭제

인덱스 프로젝션에 의해 생성된 자식 문서가 더 이상 존재하지 않도록 부모 문서를 변경하는 경우(예: 텍스트가 줄어 이전보다 적은 청크가 있는 경우), 검색 인덱스의 해당 자식 문서가 삭제됩니다. 나머지 자식 문서는 콘텐츠가 변경되지 않더라도 새 해시 값을 포함하도록 키를 업데이트합니다.

부모 문서가 데이터 원본에서 완전히 삭제된 경우, 해당 자식 문서는 데이터 원본 정의에 정의된 dataDeletionDetectionPolicy에 의해 삭제가 감지된 경우에만 삭제됩니다. dataDeletionDetectionPolicy가 구성되지 않았고 데이터 원본에서 부모 문서를 삭제해야 하는 경우, 자식 문서가 더 이상 필요하지 않으면 수동으로 삭제해야 합니다.