Azure AI Search의 인덱서

Azure AI Search의 인덱서는 클라우드 데이터 원본에서 텍스트 데이터를 추출하고 원본 데이터와 검색 인덱스 간의 필드 간 매핑을 사용하여 검색 인덱스를 채우는 크롤러입니다. 이 접근 방식은 인덱스에 데이터를 추가하는 코드를 작성하지 않고도 검색 서비스에서 데이터를 가져오기 때문에 ‘끌어오기 모델’로도 불립니다.

또한 인덱서는 기술 세트 실행 및 AI 보강을 유도하여 인덱스로 가는 도중에 콘텐츠의 추가 처리를 통합하는 기술을 구성할 수 있습니다. 몇 가지 예로 이미지 파일에 대한 OCR, 데이터 청크에 대한 텍스트 분할 기술, 여러 언어에 대한 텍스트 번역이 있습니다.

인덱서는 지원되는 데이터 원본을 대상으로 합니다. 인덱서 구성은 데이터 원본(원본) 및 검색 인덱스(대상)를 지정합니다. Azure Blob Storage와 같은 여러 원본에는 해당 콘텐츠 형식과 관련된 추가 구성 속성이 있습니다.

요청 시 또는 5분 간격으로 반복 실행되는 데이터 새로 고침 일정에 따라 인덱서를 실행할 수 있습니다. 더 자주 업데이트하려면 Azure AI Search와 외부 데이터 원본 모두에서 데이터를 동시에 업데이트하는 '푸시 모델'이 필요합니다.

검색 서비스는 검색 단위당 하나의 인덱서 작업을 실행합니다. 동시 처리가 필요한 경우 충분한 복제본이 있는지 확인합니다. 인덱서는 백그라운드에서 실행되지 않으므로 서비스가 압력을 받고 있는 경우 평소보다 더 많은 쿼리 제한을 감지할 수 있습니다.

인덱서 시나리오 및 사용 사례

인덱서를 데이터 수집을 위한 유일한 수단으로 사용하거나 다른 기술과 함께 사용할 수 있습니다. 주요 시나리오가 다음 테이블에 요약되어 있습니다.

시나리오 전략
단일 데이터 원본 가장 간단한 패턴입니다. 하나의 데이터 원본이 검색 인덱스에 대한 유일한 콘텐츠 공급자입니다. 지원되는 대부분의 데이터 원본은 콘텐츠가 원본에서 추가되거나 업데이트될 때 후속 인덱서 실행이 차이점을 선택할 수 있도록 일정 형태의 변경 검색을 제공합니다.
여러 데이터 원본 인덱서 사양에는 데이터 원본이 하나만 있을 수 있지만, 검색 인덱스 자체는 여러 원본의 콘텐츠를 수락할 수 있으며 각 인덱서 실행은 다른 데이터 공급자의 새 콘텐츠를 가져옵니다. 각 원본은 전체 문서의 공유를 제공하거나 각 문서에서 선택한 필드를 채울 수 있습니다. 이 시나리오를 자세히 살펴보려면 자습서: 여러 데이터 원본의 인덱스를 참조하세요.
여러 인덱서 런타임 매개 변수, 일정 또는 필드 매핑을 변경해야 하는 경우 여러 데이터 원본은 일반적으로 여러 인덱서와 트윈을 이룹니다.

Azure AI Search의 지역 간 스케일 아웃은 또 다른 시나리오입니다. 서로 다른 하위 지역에 동일한 검색 인덱스의 복사본이 있을 수 있습니다. 검색 인덱스 콘텐츠를 동기화하기 위해 동일한 데이터 원본에서 가져오는 여러 인덱서를 가질 수 있습니다. 여기서 각 인덱서는 각 지역에서 서로 다른 검색 인덱스를 대상으로 합니다. 매우 큰 데이터 세트의

병렬 인덱싱에는 각 인덱스기가 데이터의 하위 집합을 대상으로 하는 다중 인덱스기 전략도 필요합니다.
콘텐츠 변환 인덱서는 기술 세트 실행 및 AI 보강을 주도합니다. 콘텐츠 변환은 인덱서에 연결하는 기술 세트에서 정의됩니다. 기술을 사용하여 데이터 청크 및 벡터화를 통합할 수 있습니다.

모든 대상 인덱스 및 데이터 소스 조합에 대해 하나의 인덱스를 생성하도록 계획해야 합니다. 동일한 인덱스에 쓰는 여러 인덱서를 만들 수 있으며, 여러 인덱서에 동일한 데이터 원본을 다시 사용할 수 있습니다. 그러나 인덱서는 한 번에 하나의 데이터 원본만 사용할 수 있으며, 단일 인덱스에만 쓸 수 있습니다. 다음 그림과 같이 하나의 데이터 원본은 하나의 인덱서에 입력을 제공한 다음, 단일 인덱스를 채웁니다.

Diagram of indexer workflow.

한 번에 하나의 인덱서만 사용할 수 있지만 리소스는 여러 조합으로 사용할 수 있습니다. 다음 그림의 주요 내용은 데이터 원본을 둘 이상의 인덱서와 페어링할 수 있고 여러 인덱서가 동일한 인덱싱에 쓸 수 있다는 것입니다.

Diagram of multiple combinations of data sources, indexers, and indexes.

지원되는 데이터 원본

Azure와 Azure 외부의 인덱서 크롤링 데이터 저장소.

Azure Cosmos DB for Cassandra는 지원되지 않습니다.

인덱서는 테이블이나 뷰 또는 컨테이너나 폴더의 항목과 같은 평면화된 행 집합을 허용합니다. 대부분의 경우 행, 레코드 또는 항목당 하나의 검색 문서를 만듭니다.

원격 데이터 원본에 대한 인덱서 연결은 공유 프라이빗 링크를 사용할 때 표준 인터넷 연결(공용) 또는 암호화된 프라이빗 연결을 사용하여 만들 수 있습니다. 관리 ID를 사용하여 인증하도록 연결을 설정할 수도 있습니다. 보안 연결에 대한 자세한 콘텐츠는 Azure 네트워크 보안 기능으로 보호되는 콘텐츠에 대한 인덱서 액세스관리 ID를 사용하여 데이터 원본에 연결을 참조하세요.

인덱싱 단계

초기 실행 시 인덱스가 비어 있으면 인덱서는 테이블이나 컨테이너에 제공된 모든 데이터를 읽습니다. 후속 실행에서 인덱서는 일반적으로 변경된 데이터만 검색할 수 있습니다. Blob 데이터의 경우 변경 검색은 자동으로 검색됩니다. Azure SQL 또는 Azure Cosmos DB와 같은 다른 데이터 원본의 경우 변경 검색을 사용하도록 설정해야 합니다.

인덱서는 수신하는 각 문서에 대하여, 인덱싱을 위한 문서 검색에서 최종 검색 엔진 ‘전달’까지 여러 단계를 구현하거나 조정합니다. 필요에 따라 기술 세트가 정의되어 있다고 가정하고, 인덱서는 기술 세트 실행 및 출력을 구동합니다.

Diagram of indexer stages.

스테이지 1: 문서 크래킹

문서 크래킹은 파일을 열고 콘텐츠를 추출하는 프로세스입니다. 텍스트 기반 콘텐츠는 서비스의 파일, 테이블의 행, 컨테이너, 컬렉션의 항목에서 추출할 수 있습니다. 기술 세트와 이미지 기술을 추가하면 문서 크래킹에서 이미지를 추출하여 이미지 처리를 위해 대기할 수도 있습니다.

데이터 원본에 따라 인덱서는 잠재적으로 인덱싱 가능한 콘텐츠를 추출하기 위해 다른 작업을 수행합니다.

  • 문서가 PDF와 같이 이미지가 포함된 파일인 경우 인덱서는 텍스트, 이미지 및 메타데이터를 추출합니다. 인덱서는 Azure Blob Storage, Azure Data Lake Storage Gen2SharePoint에서 파일을 열 수 있습니다.

  • 문서가 Azure SQL 레코드인 경우, 인덱서가 각 레코드의 각 필드에서 이진이 아닌 콘텐츠를 추출합니다.

  • 문서가 Azure Cosmos DB의 레코드인 경우 인덱서는 Azure Cosmos DB 문서의 필드 및 하위 필드에서 이진이 아닌 콘텐츠를 추출합니다.

스테이지 2: 필드 매핑

인덱서는 원본 필드에서 문자를 추출하여 인덱스나 정보 저장소의 대상 필드에 보냅니다. 필드 이름과 데이터 형식이 일치하면 경로가 명확해집니다. 그러나 출력에 다른 이름이나 형식이 필요할 수 있으며, 이 경우에 필드를 매핑하는 방법을 인덱서에 알려야 합니다.

필드 매핑을 지정하려면 인덱서 정의에 원본 및 대상 필드를 입력합니다.

필드 매핑은 문서 크래킹 후, 변환 전에 인덱서가 원본 문서에서 읽을 때 발생합니다. 필드 매핑을 정의할 때 원본 필드의 값은 수정 없이 대상 필드에 그대로 보내집니다.

스테이지 3: 기술 세트 실행

기술 세트 실행은 기본 제공 또는 사용자 지정 AI 처리를 호출하는 선택적 단계입니다. 기술 세트는 콘텐츠가 이진 파일인 경우 OCR(광학 인식) 또는 다른 형태의 이미지 분석을 추가할 수 있습니다. 기술 세트는 자연어 처리를 추가할 수도 있습니다. 예를 들어, 텍스트 번역 또는 핵심 구 추출을 추가할 수 있습니다.

어떤 변환이든 보강이 발생하는 곳에 기술 세트를 실행합니다. 인덱서가 파이프라인인 경우 기술 세트를 ‘파이프라인 내의 파이프라인’이라고 생각할 수 있습니다.

스테이지 4: 출력 필드 매핑

기술 세트를 포함하는 경우 인덱서 정의에서 출력 필드 매핑을 지정해야 합니다. 기술 세트의 결과는 내부적으로 보강 문서라고 하는 트리 구조로 나타납니다. 출력 필드 매핑을 사용하여 인덱스의 필드에 매핑할 해당 트리의 파트를 선택할 수 있습니다.

이름의 유사성에도 불구하고 출력 필드 매핑과 필드 매핑은 서로 다른 원본에서 연결을 빌드합니다. 필드 매핑은 원본 필드의 콘텐츠를 검색 인덱스의 대상 필드에 연결합니다. 출력 필드 매핑은 내부 보강 문서(기술 출력)의 콘텐츠를 인덱스의 대상 필드에 연결합니다. 선택 사항으로 간주되는 필드 매핑과 달리 인덱스에 있어야 하는 변환된 콘텐츠에는 출력 필드 매핑이 필요합니다.

다음 이미지는 문서 크래킹, 필드 매핑, 기술 세트 실행 및 출력 필드 매핑과 같은 인덱서 스테이지의 샘플 인덱서 디버그 세션 표현을 보여 줍니다.

Screenshot of a sample debug session.

기본 워크플로

인덱서는 데이터 원본에 고유한 기능을 제공할 수 있습니다. 이러한 점에서 인덱서 또는 데이터 원본 구성의 일부 측면은 인덱서 유형에 따라 달라집니다. 그러나 인덱서는 모두 동일한 기본 구성 및 요구 사항을 공유합니다. 인덱서 모두에 공통되는 단계는 아래에서 다룹니다.

1단계: 데이터 소스 만들기

인덱서에는 연결 문자열 및 자격 증명을 제공하는 데이터 원본 개체가 필요합니다. 데이터 원본은 독립적인 개체입니다. 여러 인덱서는 동일한 데이터 원본 개체를 사용하여 한 번에 두 개 이상의 인덱스를 로드할 수 있습니다.

다음 방법 중 하나를 사용하여 데이터 원본을 만들 수 있습니다.

2단계: 인덱스 만들기

인덱서는 데이터 수집과 관련된 몇 가지 작업을 자동화하지만 인덱스를 만드는 작업은 일반적으로 포함되지 않습니다. 필수 조건으로 외부 데이터 원본의 모든 원본 필드에 해당하는 대상 필드가 포함된 미리 정의된 인덱스가 있어야 합니다. 필드는 이름 및 데이터 형식으로 일치해야 합니다. 그렇지 않은 경우 필드 매핑을 정의하여 연결을 설정할 수 있습니다.

자세한 내용은 인덱스 만들기를 참조하세요.

3단계: 인덱서 만들기 및 실행(또는 예약)

인덱서 정의는 인덱서를 고유하게 식별하고, 사용할 데이터 원본 및 인덱스를 지정하고, 인덱서가 요청 시 실행되는지 또는 일정에 따라 실행되는지를 포함하여 런타임 동작에 영향을 주는 다른 구성 옵션을 제공하는 속성으로 구성됩니다.

데이터 액세스 또는 기술 세트 유효성 검사에 대한 모든 오류 또는 경고는 인덱서 실행 중에 발생합니다. 인덱서 실행이 시작될 때까지 데이터 원본, 인덱스 및 기술 세트와 같은 종속 개체는 검색 서비스에서 수동적입니다.

자세한 내용은 인덱서 만들기를 참조하세요.

첫 번째 인덱서 실행 후 요청 시 다시 실행하거나 일정을 설정할 수 있습니다.

포털에서 또는 인덱서 상태 가져오기 API를 통해 인덱서 상태를 모니터링할 수 있습니다. 또한 인덱스에 대하여 쿼리 실행을 통해 결과가 예상한 결과인지 확인해야 합니다.

인덱서에는 전용 처리 리소스가 없습니다. 이를 기반으로 인덱서의 상태는 실행되기 전에 유휴 상태로 표시될 수 있으며(큐의 다른 작업에 따라 다름) 런타임을 예측할 수 없습니다. 문서 크기, 문서 복잡성, 이미지 분석 등과 같은 다른 요소도 인덱서 성능을 정의합니다.

다음 단계

이제 인덱서를 소개했으므로 다음 단계는 인덱서 속성 및 매개 변수, 예약 및 인덱서 모니터링을 검토하는 것입니다. 또는 특정 소스에 대한 자세한 내용을 보려면 지원되는 데이터 원본 목록을 다시 참조하면 됩니다.