다음을 통해 공유


빠른 시작: Azure Portal을 사용하여 텍스트 및 이미지 벡터화

이 빠른 시작은 Azure Portal에서 데이터 가져오기 및 벡터화 마법사를 사용하여 통합 벡터화를 시작하는 데 도움이 됩니다. 이 마법사는 콘텐츠를 청크 분할하고 포함 모델을 호출하여 인덱싱 및 쿼리 중에 콘텐츠를 벡터화합니다.

필수 구성 요소

지원되는 데이터 원본

데이터 가져오기 및 벡터화 마법사광범위한 Azure 데이터 원본을 지원하지만, 이 빠른 시작에서는 전체 파일에서 작동하는 데이터 원본에 대한 단계를 제공합니다.

지원되는 포함 모델

Azure AI Search와 동일한 지역의 Azure AI 플랫폼에 포함 모델을 사용합니다. 배포 지침은 이 문서에 나와 있습니다.

공급자 지원되는 모델
Azure OpenAI Service text-embedding-ada-002
text-embedding-3-large
text-embedding-3-small
Azure AI Foundry 모델 카탈로그 텍스트의 경우:
Cohere-embed-v3-english
Cohere-embed-v3-multilingual
이미지의 경우:
Facebook-DinoV2-Image-Embeddings-ViT-Base
Facebook-DinoV2-Image-Embeddings-ViT-Giant
Azure AI 서비스 다중 서비스 계정 선택한 지역에서 사용할 수 있는 이미지 및 텍스트 벡터화를 위한 Azure AI Vision 다중 모드입니다. 다중 서비스 리소스를 연결하는 방법에 따라 다중 서비스 계정이 Azure AI Search와 동일한 지역에 있어야 할 수 있습니다.

Azure OpenAI 서비스를 사용하는 경우 엔드포인트에 연결된 사용자 지정 하위 도메인이 있어야 합니다. 사용자 지정 하위 도메인은 고유한 이름(예 https://hereismyuniquename.cognitiveservices.azure.com: )을 포함하는 엔드포인트입니다. Azure Portal을 통해 서비스를 만든 경우 이 하위 도메인은 서비스 설정의 일부로 자동으로 생성됩니다. Azure AI Search 통합과 함께 사용하기 전에 서비스에 사용자 지정 하위 도메인이 포함되어 있는지 확인합니다.

Azure AI Foundry 포털에서 만든 Azure OpenAI 서비스 리소스(모델 포함에 대한 액세스 권한 포함)는 지원되지 않습니다. Azure Portal에서 만든 Azure OpenAI 서비스 리소스만 Azure OpenAI 포함 기술 통합과 호환됩니다.

공용 엔드포인트 요구 사항

이 빠른 시작의 목적을 위해 Azure Portal 노드에서 액세스할 수 있도록 이전의 모든 리소스에 공용 액세스가 활성화되어 있어야 합니다. 그렇지 않으면 마법사가 실패합니다. 마법사가 실행된 후 보안을 위해 통합 구성 요소에서 방화벽 및 프라이빗 엔드포인트를 사용하도록 설정할 수 있습니다. 자세한 정보는 가져오기 마법사의 보안 연결을 참조하세요.

프라이빗 엔드포인트가 이미 있고 이를 사용하지 않도록 설정할 수 없는 경우 대체 옵션은 가상 머신의 스크립트 또는 프로그램에서 해당 엔드투엔드 흐름을 실행하는 것입니다. 가상 머신은 프라이빗 엔드포인트와 동일한 가상 네트워크에 있어야 합니다. 통합된 벡터화를 위한 Python 코드 샘플은 다음과 같습니다. 동일한 GitHub 리포지토리에는 다른 프로그래밍 언어로 된 샘플이 있습니다.

사용 권한

키 인증 및 모든 액세스 연결 문자열 또는 역할 할당에 Microsoft Entra ID를 사용할 수 있습니다. 다른 리소스에 검색 서비스를 연결하기 위한 역할 할당을 권장합니다.

  1. Azure AI 검색에서 역할을 사용하도록 설정합니다.

  2. 관리 ID를 사용하도록 검색 서비스를 구성합니다.

  3. 데이터 원본 플랫폼 및 포함 모델 공급자에서 검색 서비스가 데이터 및 모델에 액세스할 수 있도록 하는 역할 할당을 만듭니다. 샘플 데이터 준비는 지원되는 각 데이터 원본에 대한 역할을 설정하기 위한 지침을 제공합니다.

무료 검색 서비스는 Azure AI Search에 대한 역할 기반 연결을 지원하지만 Azure Storage 또는 Azure AI Vision에 대한 아웃바운드 연결에서 관리 ID를 지원하지 않습니다. 이 수준의 지원은 무료 검색 서비스와 다른 Azure 서비스 간의 연결에 키 기반 인증을 사용해야 함을 의미합니다.

더 안전한 연결이 필요한 경우:

  • 기본 계층 이상을 사용합니다.
  • 관리 ID를 구성하고 권한 있는 액세스에 역할을 사용합니다.

참고 항목

옵션을 사용할 수 없기 때문에(예: 데이터 원본 또는 포함 모델을 선택할 수 없음) 마법사를 진행할 수 없는 경우 역할 할당을 다시 방문합니다. 오류 메시지는 모델 또는 배포가 존재하지 않음을 나타내지만, 실제로는 검색 서비스에 액세스 권한이 없는 것이 진짜 원인입니다.

공간 확인

무료 서비스를 시작하는 경우 세 개의 인덱스, 데이터 원본, 기술 세트 및 인덱서로 제한됩니다. 기본 서비스는 15개로 제한됩니다. 시작하기 전에 추가 항목에 대한 공간이 있는지 확인합니다. 이 빠른 시작에서는 각 개체를 하나씩 만듭니다.

샘플 데이터 준비

이 섹션에서는 이 빠른 시작에 적합한 콘텐츠를 가리킵니다.

  1. Azure 계정으로 Azure Portal에 로그인하고 Azure Storage 계정으로 이동합니다.

  2. 왼쪽 창의 데이터 스토리지에서 컨테이너를 선택합니다.

  3. 새 컨테이너를 만든 다음 이 빠른 시작에 사용된 상태 계획 PDF 문서를 업로드합니다.

  4. 왼쪽 창의 액세스 제어에서 Storage Blob 데이터 읽기 권한자 역할을 검색 서비스 ID에 할당합니다. 또는 액세스 키 페이지에서 스토리지 계정에 대한 연결 문자열을 가져옵니다.

  5. 필요에 따라 컨테이너의 삭제를 검색 인덱스 삭제와 동기화합니다. 다음 단계를 통해 삭제 검색을 위해 인덱서를 구성할 수 있습니다.

    1. 스토리지 계정에서 일시 삭제를 사용하도록 설정합니다.

    2. 네이티브 일시 삭제를 사용하는 경우 Azure Storage에서 추가 단계가 필요하지 않습니다.

    3. 그렇지 않은 경우 인덱서가 검색할 수 있는 사용자 지정 메타데이터를 추가하여 삭제용으로 표시된 Blob을 확인합니다. 사용자 지정 속성에 설명이 포함된 이름을 지정합니다. 예를 들어 속성 이름을 “IsDeleted”로 지정하고 false로 설정할 수 있습니다. 컨테이너의 모든 Blob에 대해 이 작업을 수행합니다. 나중에 Blob을 삭제하려면 속성을 true로 변경합니다. 자세한 내용은 Azure Storage에서 인덱싱할 때 탐지 변경 및 삭제를 참조하세요.

포함 모델 설정

마법사는 Azure OpenAI, Azure AI Vision 또는 Azure AI Foundry 포털의 모델 카탈로그에서 배포된 포함 모델을 사용할 수 있습니다.

마법사는 text-embedding-ada-002, text-embedding-3-large, text-embedding-3-small을 지원합니다. 내부적으로 마법사는 AzureOpenAIEmbedding 기술을 호출하여 Azure OpenAI에 연결합니다.

  1. Azure 계정으로 Azure Portal에 로그인하고 Azure OpenAI 리소스로 이동합니다.

  2. 사용 권한 설정:

    1. 왼쪽 메뉴에서 액세스 제어를 선택합니다.

    2. 추가를 선택한 다음 역할 할당 추가를 선택합니다.

    3. 작업 함수 역할에서 Cognitive Services OpenAI 사용자,를 선택한 다음, 다음을 선택합니다.

    4. 구성원 아래에서 관리 ID를 선택한 다음, 구성원을 선택합니다.

    5. 구독 및 리소스 종류(검색 서비스)를 필터링한 다음 검색 서비스의 관리 ID를 선택합니다.

    6. 검토 + 할당을 선택합니다.

  3. 개요 페이지에서 엔드포인트 또는 API 키를 복사해야 하는 경우 엔드포인트를 보려면 여기를 클릭 또는 키를 관리하려면 여기를 클릭을 선택하세요. 키 기반 인증과 함께 Azure OpenAI 리소스를 사용하는 경우 이러한 값을 마법사에 붙여넣을 수 있습니다.

  4. 리소스 관리 및 모델 배포에서 배포 관리를 선택하여 Azure AI Foundry를 엽니다.

  5. text-embedding-ada-002의 배포 이름 또는 지원되는 다른 포함 모델을 복사합니다. 포함 모델이 없는 경우 지금 포함 모델을 배포합니다.

마법사 시작

  1. Azure 계정으로 Azure Portal에 로그인하고 Azure AI 검색 서비스로 이동합니다.

  2. 개요 페이지에서 데이터 가져오기 및 벡터화를 선택합니다.

    데이터 가져오기 및 벡터화를 위한 마법사를 여는 명령의 스크린샷.

데이터에 연결

다음 단계는 검색 인덱스에 사용할 데이터 원본에 연결하는 것입니다.

  1. 데이터에 연결 시 Azure Blob Storage를 선택합니다.

  2. Azure 구독을 지정합니다.

  3. 데이터를 제공하는 스토리지 계정 및 컨테이너를 선택합니다.

  4. 삭제 검색 지원 여부를 지정합니다. 이후 인덱싱 실행 시, Azure Storage에서 일시 삭제된 Blob을 기반으로 검색 문서를 제거하도록 검색 인덱스가 업데이트됩니다.

    • Blob은 네이티브 Blob 일시 삭제 또는 사용자 지정 데이터를 사용하여 일시 삭제를 지원합니다.
    • 이전에 Azure Storage에서 일시 삭제를 사용하도록 설정했어야 하며, 선택적으로 인덱싱이 삭제 플래그로 인식할 수 있는 사용자 지정 메타데이터를 추가했어야 합니다. 이러한 단계에 대한 자세한 내용은 샘플 데이터 준비를 참조하세요.
    • Blob을 사용자 지정 데이터를 사용하여 일시 삭제용으로 구성한 경우 이 단계에서 메타데이터 속성 이름 값 쌍을 제공합니다. "IsDeleted"를 사용하는 것이 좋습니다. Blob에서 "IsDeleted"가 true로 설정된 경우 인덱서는 다음 인덱서 실행 시 해당 검색 문서를 삭제합니다.

    마법사는 Azure Storage에서 유효한 설정을 확인하지 않거나 요구 사항이 충족되지 않으면 오류를 throw합니다. 대신 삭제 탐지가 작동하지 않으며 검색 인덱스는 시간이 지남에 따라 분리된 문서를 수집할 가능성이 높습니다.

    삭제 탐지 옵션이 있는 데이터 원본 페이지의 스크린샷

  5. 검색 서비스가 관리 ID를 사용하여 Azure Storage에 연결할지 여부를 지정합니다.

    • 시스템 관리 ID 또는 사용자 관리 ID를 선택하라는 메시지가 표시됩니다.
    • ID에는 Azure Storage에 대한 Storage Blob 데이터 읽기 권한자 역할이 있어야 합니다.
    • 이 단계를 건너뛰지 마세요. 마법사가 Azure Storage에 연결할 수 없는 경우 인덱싱하는 동안 연결 오류가 발생합니다.
  6. 다음을 선택합니다.

텍스트 벡터화

이 단계에서는 청크 분할 데이터를 벡터화하기 위한 포함 모델을 지정합니다.

청크는 기본 제공되고 구성할 수 없습니다. 효과적인 설정은 다음과 같습니다.

"textSplitMode": "pages",
"maximumPageLength": 2000,
"pageOverlapLength": 500,
"maximumPagesToTake": 0, #unlimited
"unit": "characters"
  1. 텍스트 벡터화 페이지에서 포함 모델의 원본을 선택합니다.

    • Azure OpenAI
    • Azure AI Foundry 모델 카탈로그
    • Azure AI 검색과 동일한 지역에 있는 기존 Azure AI 비전 다중 모달 리소스입니다. 동일한 지역에 Azure AI 서비스 다중 서비스 계정이 없는 경우 이 옵션을 사용할 수 없습니다.
  2. Azure 구독을 선택합니다.

  3. 리소스에 따라 선택합니다.

    • Azure OpenAI의 경우 text-embedding-ada-002, text-embedding-3-large 또는 text-embedding-3-small의 기존 배포를 선택합니다.

    • Azure AI Foundry 카탈로그의 경우 Azure 또는 Cohere 포함 모델의 기존 배포를 선택합니다.

    • AI 비전 멀티모달 포함 기술의 경우 계정을 선택합니다.

    자세한 내용은 이 문서 앞부분의 포함 모델 설정을 참조하세요.

  4. 검색 서비스가 API 키 또는 관리 ID를 사용하여 인증할지 여부를 지정합니다.

    • ID에는 Azure AI 다중 서비스 계정에 대한 Cognitive Services OpenAI 사용자 역할이 있어야 합니다.
  5. 이러한 리소스 사용의 청구 효과를 인정하는 확인란을 선택합니다.

    마법사의 벡터화 텍스트 페이지 스크린샷

  6. 다음을 선택합니다.

이미지 벡터화 및 보강

상태 계획 PDF에는 회사 로고가 포함되어 있지만 그렇지 않으면 이미지가 없습니다. 샘플 문서를 사용하는 경우 이 단계를 건너뛸 수 있습니다.

그러나 유용한 이미지가 포함된 콘텐츠를 사용하는 경우 다음 두 가지 방법으로 AI를 적용할 수 있습니다.

  • 카탈로그에서 지원되는 이미지 포함 모델을 사용하거나 Azure AI Vision 멀티모달 포함 API를 선택하여 이미지를 벡터화합니다.

  • OCR(광학 인식)을 사용하여 이미지의 텍스트를 인식합니다. 이 옵션은 이미지에서 텍스트를 읽기 위해 OCR 기술을 호출합니다.

Azure AI Search 및 Azure AI 리소스는 동일한 지역에 있거나 키 없는 청구 연결에 대해 구성되어야 합니다.

  1. 이미지 벡터화 페이지에서 마법사가 수행해야 하는 연결 종류를 지정합니다. 이미지 벡터화를 위해 마법사는 Azure AI Foundry 포털 또는 Azure AI Vision에서 모델 포함에 연결할 수 있습니다.

  2. 구독을 지정합니다.

  3. Azure AI Foundry 모델 카탈로그의 경우 프로젝트 및 배포를 지정합니다. 자세한 내용은 이 문서 앞부분의 포함 모델 설정을 참조하세요.

  4. 선택적으로 이진 파일 이미지(예: 검사한 문서 파일)를 해독하고 OCR을 사용하여 텍스트를 인식할 수 있습니다.

  5. 이러한 리소스 사용의 청구 효과를 인정하는 확인란을 선택합니다.

    마법사의 벡터화 이미지 페이지 스크린샷

  6. 다음을 선택합니다.

의미 체계 순위 추가

고급 설정 페이지에서 선택적으로 의미 체계 순위 지정을 추가하여 쿼리 실행이 끝날 때 결과의 순위 지정을 다시 지정할 수 있습니다. 순위 지정을 다시 매기면 의미 체계상 가장 관련성이 높은 일치 항목이 상위로 승격됩니다.

새 필드 매핑

이 단계의 핵심 사항은 다음과 같습니다.

  • 인덱스 스키마는 청크 분할된 데이터에 대한 벡터 및 비벡터 필드를 제공합니다.
  • 필드를 추가할 수 있지만 생성된 필드를 삭제하거나 수정할 수는 없습니다.
  • 문서 구문 분석 모드는 청크를 만듭니다(청크당 하나의 검색 문서).

고급 설정 페이지에서 데이터 원본이 첫 번째 패스에서 선택되지 않은 메타데이터 또는 필드를 제공한다고 가정하고 필요에 따라 새 필드를 추가할 수 있습니다. 기본적으로 마법사는 이러한 특성을 사용하여 다음 필드를 생성합니다.

필드 적용 대상 설명
chunk_id 텍스트 및 이미지 벡터 생성된 문자열 필드입니다. 검색 가능, 검색 가능, 정렬 가능. 인덱스 문서 키입니다.
text_parent_id 텍스트 벡터 생성된 문자열 필드입니다. 검색 가능하고 필터링할 수 있습니다. 청크가 시작되는 부모 문서를 식별합니다.
chunk 텍스트 및 이미지 벡터 문자열 필드입니다. 사람이 읽을 수 있는 데이터 청크 버전입니다. 검색 가능하고 검색 가능하지만 필터링할 수 없거나 패싯 가능하거나 정렬할 수 없습니다.
title 텍스트 및 이미지 벡터 문자열 필드입니다. 사람이 읽을 수 있는 문서 제목 또는 페이지 제목 또는 페이지 번호입니다. 검색 가능하고 검색 가능하지만 필터링할 수 없거나 패싯 가능하거나 정렬할 수 없습니다.
text_vector 텍스트 벡터 Collection(Edm.single). 청크의 벡터 표현입니다. 검색 가능하고 검색 가능하지만 필터링할 수 없거나 패싯 가능하거나 정렬할 수 없습니다.

생성된 필드 또는 해당 특성을 수정할 수는 없지만 데이터 원본에서 제공하는 경우 새 필드를 추가할 수 있습니다. 예를 들어 Azure Blob Storage는 메타데이터 필드 컬렉션을 제공합니다.

  1. 새로 추가를 선택합니다.

  2. 사용 가능한 필드 목록에서 원본 필드를 선택하고, 인덱스의 필드 이름을 제공하고, 필요에 따라 기본 데이터 형식을 적용하거나 재정의합니다.

    메타데이터 필드는 검색할 수 있지만 검색할 수 없거나, 필터링 가능하거나, 패싯 가능하거나, 정렬할 수 없습니다.

  3. 스키마를 원래 버전으로 복원하려면 다시 설정을 선택합니다.

인덱싱 예약

고급 설정 페이지에서 선택적으로 인덱서에 대한 실행 일정을 지정할 수 있습니다.

  1. 고급 설정 페이지를 완료하면 다음선택합니다.

마법사 마침

  1. 구성 검토 페이지에서 마법사에서 만드는 개체의 접두사를 지정합니다. 공통 접두사는 정리하는 데 도움이 됩니다.

  2. 만들기를 실행합니다.

마법사가 구성을 완료하면 다음 개체가 만들어집니다.

  • 데이터 원본을 연결합니다.

  • 벡터 필드, 벡터라이저, 벡터 프로필 및 벡터 알고리즘으로 인덱스를 생성합니다. 마법사 워크플로 중에는 기본 인덱스를 설계하거나 수정할 수 없습니다. 인덱스는 2024-05-01-preview REST API를 준수합니다.

  • 청킹을 위한 텍스트 분할 기술과 벡터화를 위한 포함 기술을 갖춘 기술 세트입니다. 포함 기술은 Azure OpenAI에 대한 AzureOpenAIEmbeddingModel 기술 또는 Azure AI Foundry 모델 카탈로그에 대한 AML 기술 입니다. 또한 기술 세트에는 데이터 원본의 한 문서에서 "자식" 인덱스의 해당 청크로 데이터를 매핑할 수 있는 인덱스 프로젝션 구성도 있습니다.

  • 필드 매핑 및 출력 필드 매핑(해당되는 경우)이 있는 인덱서입니다.

결과 확인

검색 탐색기는 텍스트 문자열을 입력으로 받아들인 다음 벡터 쿼리 실행을 위해 텍스트를 벡터화합니다.

  1. Azure Portal에서 검색 관리>인덱스로 이동한 다음 만든 인덱스를 선택합니다.

  2. 쿼리 옵션을 선택하고 검색 결과에서 벡터 값을 숨깁니다. 이 단계를 수행하면 검색 결과를 더 쉽게 읽을 수 있습니다.

    쿼리 옵션 단추의 스크린샷.

  3. 보기 메뉴에서 JSON 보기를 선택하면 text 벡터 쿼리 매개 변수에 벡터 쿼리에 대한 텍스트를 입력할 수 있습니다.

    JSON 보기를 열기 위한 메뉴 명령의 스크린샷.

    기본 쿼리는 빈 검색("*")이지만 숫자 일치를 반환하기 위한 매개 변수를 포함합니다. 텍스트 및 벡터 쿼리를 병렬로 실행하는 하이브리드 쿼리입니다. 의미 체계 순위가 포함됩니다. 문을 통해 select 결과에 반환할 필드를 지정합니다.

     {
       "search": "*",
       "count": true,
       "vectorQueries": [
         {
           "kind": "text",
           "text": "*",
           "fields": "text_vector,image_vector"
         }
       ],
       "queryType": "semantic",
       "semanticConfiguration": "my-demo-semantic-configuration",
       "captions": "extractive",
       "answers": "extractive|count-3",
       "queryLanguage": "en-us",
       "select": "chunk_id,text_parent_id,chunk,title,image_parent_id"
     }
    
  4. 별표(*) 자리 표시자를 모두 상태 계획과 관련된 질문(예: .)으로 Which plan has the lowest deductible?대체합니다.

     {
       "search": "Which plan has the lowest deductible?",
       "count": true,
       "vectorQueries": [
         {
           "kind": "text",
           "text": "Which plan has the lowest deductible?",
           "fields": "text_vector,image_vector"
         }
       ],
       "queryType": "semantic",
       "semanticConfiguration": "my-demo-semantic-configuration",
       "captions": "extractive",
       "answers": "extractive|count-3",
       "queryLanguage": "en-us",
       "select": "chunk_id,text_parent_id,chunk,title"
     }
    
  5. 쿼리를 실행하려면 쿼리를 선택합니다.

    검색 결과의 스크린샷

    각 문서는 원본 PDF의 일부입니다. title 필드는 청크가 어느 PDF에서 나오는지 보여 줍니다. 각각 chunk 은 매우 길다. 텍스트 편집기에 복사하여 붙여넣어 전체 값을 읽을 수 있습니다.

  6. 특정 문서에서 모든 청크를 보려면 특정 PDF의 title_parent_id 필드에 대한 필터를 추가합니다. 인덱스의 필드 탭을 확인하여 이 필드를 필터링할 수 있는지 확인할 수 있습니다.

    {
       "select": "chunk_id,text_parent_id,chunk,title",
       "filter": "text_parent_id eq 'aHR0cHM6Ly9oZWlkaXN0c3RvcmFnZWRlbW9lYXN0dXMuYmxvYi5jb3JlLndpbmRvd3MubmV0L2hlYWx0aC1wbGFuLXBkZnMvTm9ydGh3aW5kX1N0YW5kYXJkX0JlbmVmaXRzX0RldGFpbHMucGRm0'",
       "count": true,
       "vectorQueries": [
           {
              "kind": "text",
              "text": "*",
              "k": 5,
              "fields": "text_vector"
           }
        ]
    }
    

정리

Azure AI 검색은 청구 가능한 리소스입니다. 더 이상 필요하지 않은 경우 요금이 부과되지 않도록 구독에서 삭제합니다.

다음 단계

이 빠른 시작에서는 통합 벡터화에 필요한 모든 개체를 만드는 데이터 가져오기 및 벡터화 마법사를 소개했습니다. 각 단계를 자세히 살펴보려면 통합 벡터화 샘플을 사용해 보세요.