Azure AI Search의 검색 인덱스에 데이터 로드
이 문서에서는 문서를 미리 정의된 검색 인덱스로 가져오는 방법을 설명합니다. Azure AI 검색에서 검색 인덱스가 먼저 생성되고 데이터 가져오기가 두 번째 단계로 수행됩니다. 하나의 워크플로에서 인덱스를 만들고 로드하는 포털 및 인덱서 파이프라인의 가져오기 마법사는 예외입니다.
데이터 가져오기 작동 방식
검색 서비스는 인덱스 스키마를 준수하는 JSON 문서를 허용합니다. 검색 서비스는 전체 텍스트 검색, 벡터 검색, 하이브리드 검색 및 지식 마이닝 시나리오에 사용되는 JSON에서 일반 텍스트와 벡터를 가져오고 인덱싱합니다.
일반 텍스트 콘텐츠는 외부 데이터 원본의 영숫자 필드, 검색 시나리오에 유용한 메타데이터 또는 기술 세트에서 생성된 보강된 콘텐츠에서 얻을 수 있습니다(기술은 이미지 및 구조화되지 않은 콘텐츠에서 텍스트 설명을 추출하거나 유추할 수 있음).
벡터 콘텐츠는 외부 포함 모델 또는 적용된 AI와 통합되는 Azure AI 검색 기능을 사용하는 통합된 벡터화를 통해 벡터화됩니다.
이러한 문서를 직접 준비할 수 있지만 콘텐츠가 지원되는 데이터 원본에 있는 경우 인덱서를 실행하거나 가져오기 마법사를 사용하면 문서 검색, JSON serialization 및 인덱싱을 자동화할 수 있습니다.
데이터가 인덱싱되면 인덱스의 실제 데이터 구조가 잠깁니다. 변경할 수 있는 항목과 변경할 수 없는 항목에 대한 지침은 인덱스 업데이트 및 다시 빌드를 참조하세요.
인덱싱은 백그라운드 프로세스가 아닙니다. 검색 서비스는 인덱싱 및 쿼리 워크로드의 균형을 유지하지만 쿼리 대기 시간이 너무 높은 경우 용량을 추가하거나 인덱스 로드에 대한 낮은 쿼리 작업의 기간을 식별할 수 있습니다.
자세한 내용은 데이터 가져오기 전략을 참조하세요.
Azure Portal 사용
Azure Portal에서 가져오기 마법사를 사용하여 원활한 워크플로에서 인덱스를 만들고 로드합니다. 기존 인덱스를 로드하려면 대체 방법을 선택합니다.
Azure 계정으로 Azure Portal에 로그인하고 검색 서비스를 찾습니다.
개요 페이지의 명령 모음에서 데이터 가져오기 또는 데이터 가져오기 및 벡터화를 선택하여 검색 인덱스를 만들고 채웁니다.
빠른 시작: Azure AI 검색 인덱스 만들기 및 빠른 시작: 통합된 벡터화 링크를 따라 워크플로를 검토할 수 있습니다.
마법사가 완료되면 검색 탐색기를 사용하여 결과를 확인합니다.
팁
가져오기 마법사는 인덱서를 만들고 실행합니다. 인덱서가 이미 정의된 경우 Azure Portal에서 인덱서를 재설정하고 실행할 수 있습니다. 이는 필드를 증분 방식으로 추가하는 경우에 유용합니다. 다시 설정하면 인덱서가 다시 시작되어 모든 원본 문서에서 모든 필드가 선택됩니다.
REST API 사용
문서 - 인덱스는 데이터를 검색 인덱스로 가져오기 위한 REST API입니다. REST API는 많은 코드를 작성하지 않고도 인덱싱 워크플로를 테스트할 수 있는 초기 개념 증명 테스트에 유용합니다. @search.action
매개 변수는 특정 필드에 대한 새 값 또는 대체 값 측면에서 문서가 전체 또는 부분적으로 추가되는지 여부를 결정합니다.
빠른 시작: REST를 사용한 텍스트 검색에 단계가 설명되어 있습니다. 다음 예제는 예제의 수정된 버전입니다. 간결하게 트리밍되었으며 기존 문서를 덮어쓰지 않도록 첫 번째 HotelId 값이 변경되었습니다.
인덱스 이름, “docs/index” 엔드포인트 및
@search.action
매개 변수를 포함하는 요청 본문을 지정하는 POST 호출을 작성합니다.POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/index?api-version=2024-07-01 Content-Type: application/json api-key: [admin key] { "value": [ { "@search.action": "upload", "HotelId": "1111", "HotelName": "Stay-Kay City Hotel", "Description": "The hotel is ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Time's Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.", "Category": "Boutique", "Tags": [ "pool", "air conditioning", "concierge" ] }, { "@search.action": "mergeOrUpload", "HotelId": "2", "HotelName": "Old Century Hotel", "Description": "This is description is replacing the original one for this hotel. New and changed values overwrite the previous ones. In a comma-delimited list like Tags, be sure to provide the full list because there is no merging of values within the field itself.", "Category": "Boutique", "Tags": [ "pool", "free wifi", "concierge", "my first new tag", "my second new tag" ] } ] }
문서를 만들거나 덮어쓰려면
@search.action
매개 변수를upload
로 설정합니다. 문서 내의 특정 필드에 대한 업데이트를 대상으로 하는 경우merge
또는uploadOrMerge
로 설정합니다. 이전 예에서는 두 작업을 모두 보여 줍니다.작업 효과 merge 이미 존재하는 문서를 업데이트하고 찾을 수 없는 문서는 실패합니다. 병합은 기존 값을 대체합니다. 이러한 이유로 형식 Collection(Edm.String)
의 필드와 같이 여러 값이 포함된 컬렉션 필드를 확인해야 합니다. 예를 들어 값이tags
필드가["budget"]
값으로 시작하고["economy", "pool"]
과 병합을 실행하면tags
필드의 최종 값은["economy", "pool"]
입니다.["budget", "economy", "pool"]
이 아닙니다.mergeOrUpload 문서가 존재하는 경우 병합처럼 작동하고 문서가 새 문서인 경우 업로드합니다. 이는 증분 업데이트에 대한 가장 일반적인 작업입니다. upload 문서가 새 문서인 경우 삽입되고, 존재하는 경우 업데이트되거나 바뀌는 "upsert"와 유사합니다. 인덱스에 필요한 값이 문서에 없으면 문서 필드의 값이 null로 설정됩니다. 요청을 보냅니다.
방금 유효성 검사 단계로 추가한 문서를 조회합니다.
GET https://[service name].search.windows.net/indexes/hotel-sample-index/docs/1111?api-version=2024-07-01
문서 키 또는 ID가 새로 추가되면 문서에서 지정되지 않은 모든 필드에 대한 값은 null이 됩니다. 기존 문서에 대한 작업의 경우 업데이트된 값이 이전 값을 대체합니다. “merge” 또는 “mergeUpload”에 지정되지 않은 모든 필드는 검색 인덱스에서 그대로 유지됩니다.
Azure SDK 사용
프로그래밍 기능은 다음 Azure SDK에서 제공됩니다.
.NET용 Azure SDK는 인덱스에 단순 및 대량 문서 업로드를 위해 다음 API를 제공합니다.
단순 및 대규모 인덱싱의 컨텍스트에서 인덱싱을 보여 주는 몇 가지 샘플이 있습니다.
“인덱스 로드”는 기본 단계를 설명합니다.
Azure SDK 팀의 Azure.Search.Documents 샘플 - 문서 인덱싱은 SearchIndexingBufferedSender를 추가합니다.
자습서: 데이터 인덱스는 최적의 크기를 결정하기 위한 테스트 전략을 일괄 처리 인덱싱과 결합합니다.
벡터 필드의 인덱스를 생성하는 방법을 보여 주는 코드 예는 azure-search-vector-samples 리포지토리를 확인합니다.