다음을 통해 공유


인덱스 만들기 또는 업데이트(미리 보기 REST API)

적용 : 2023-07-01-Preview. 이 버전은 더 이상 지원되지 않습니다. 업그레이드는 즉시 최신 버전으로.

중요하다

2023-07-01-Preview는 벡터 검색을 추가합니다.

  • 벡터 검색 설정의 구성인 "vectorSearch" 개체를 . 벡터 검색 알고리즘에만 적용됩니다.
  • 벡터 필드에 필요한 "Collection(Edm.Single)" 데이터 형식을 . 단정밀도 부동 소수점 숫자를 기본 형식으로 나타냅니다.
  • 벡터 필드에 필요한 "차원" 속성을 . 벡터 포함의 차원을 나타냅니다.
  • 벡터 필드에 필요한 "vectorSearchConfiguration" 속성을 . 이 필드에 대한 알고리즘 구성을 선택합니다.

2021-04-30-Preview는 다음을 추가합니다.

  • 의미 체계 순위를 특정 필드로 지정하는 데 사용되는 "semanticConfiguration" .
  • 사용자 할당 관리 ID를 사용하여 Azure Key Vault에서 고객 관리형 암호화 키를 검색하는 데 사용되는 "encryptionKey""ID".

2020-06-30-Preview는 다음을 추가합니다.

  • 정렬 및 필터에서 대/소문자를 구분하지 않도록 하는 데 사용되는 "normalizers".

인덱스 필드 컬렉션(필드 이름, 데이터 형식 및 특성)뿐만 아니라 다른 검색 동작을 정의하는 다른 구문(제안기, 점수 매기기 프로필 및 CORS 구성)을 포함하여 인덱스 스키마를 지정합니다.

만들기 요청에 POST 또는 PUT을 사용할 수 있습니다. 둘 중 하나에 대해 요청 본문은 개체 정의를 제공합니다.

POST https://[servicename].search.windows.net/indexes?api-version=[api-version]  
  Content-Type: application/json
  api-key: [admin key]  

업데이트 요청의 경우 PUT을 사용하고 URI에 인덱스 이름을 지정합니다.

PUT https://[servicename].search.windows.net/indexes/[index name]?api-version=[api-version]
  Content-Type: application/json
  api-key: [admin key]

HTTPS는 모든 서비스 요청에 필요합니다. 인덱스가 없으면 생성됩니다. 이미 있는 경우 새 정의로 업데이트됩니다.

인덱스 만들기 스키마 및 메타데이터를 설정합니다. 인덱스 채우기는 별도의 작업입니다. 이 단계에서는 인덱서를 사용하거나(지원되는 데이터 원본에 사용할 수 있는 인덱서 작업참조) 또는 문서 추가, 업데이트 또는 삭제수 있습니다. 만들 수 있는 최대 인덱스 수는 가격 책정 계층에 따라 다릅니다. 각 인덱스 내에는 개별 요소에 대한 제한이 있습니다. 자세한 내용은 Azure AI Search대한 Service 제한을 참조하세요.

기존 인덱스 업데이트하려면 유지하려는 원래 정의를 포함하여 전체 스키마 정의가 포함되어야 합니다. 일반적으로 업데이트에 가장 적합한 패턴은 GET을 사용하여 인덱스 정의를 검색하고 수정한 다음 PUT으로 업데이트하는 것입니다.

기존 인덱스에 콘텐츠가 포함되어 있으므로 많은 인덱스를 수정하려면 인덱스 삭제 및 다시 빌드필요합니다. 다음 스키마 변경은 이 규칙의 예외입니다.

  • 새 필드 추가

  • 점수 매기기 프로필 추가 또는 변경

  • 의미 체계 구성 추가 또는 변경

  • CORS 옵션 변경

  • 다음 세 가지 수정 사항 중에서 기존 필드를 변경합니다.

    • 필드 표시 또는 숨기기(retrievable: true | false)
    • 쿼리 시간에 사용되는 분석기 변경(searchAnalyzer)
    • 쿼리 시간에 사용되는 synonymMap 추가 또는 편집(synonymMaps)

위의 스키마를 기존 인덱스로 변경하려면 요청 URI에서 인덱스의 이름을 지정한 다음 새 요소 또는 변경된 요소와 함께 완전히 지정된 인덱스 정의를 포함합니다.

새 필드가 추가되면 인덱스 내의 모든 기존 문서에 해당 필드의 null 값이 자동으로 지정됩니다. 두 가지 중 하나가 발생할 때까지 추가 스토리지 공간이 소비되지 않습니다. 즉, 병합사용하여 새 필드()에 대한 값이 제공되거나 새 문서가 추가됩니다.

suggester 대한 업데이트에는 비슷한 제약 조건이 있습니다. 새 필드를 suggester 추가할 수 있지만 인덱스 다시 작성 없이는 기존 필드를 제거하거나 suggesters 추가할 수 없습니다.

분석기, 토큰 변환기, 토큰 필터 또는 문자 필터 업데이트는 허용되지 않습니다. 원하는 변경 내용으로 새 항목을 만들 수 있지만 새 분석기 정의를 추가할 때 인덱스를 오프라인으로 전환해야 합니다. 인덱스 업데이트 요청에서 allowIndexDowntime 플래그를 true로 설정하면 인덱스가 오프라인으로 전환됩니다.

PUT https://[search service name].search.windows.net/indexes/[index name]?api-version=[api-version]&allowIndexDowntime=true

이 작업은 인덱스를 몇 초 이상 오프라인 상태로 전환합니다. 즉, 인덱스가 다시 온라인 상태가 되어 요청을 처리할 준비가 될 때까지 인덱싱 및 쿼리 요청이 실패합니다.

URI 매개 변수

매개 변수 묘사
서비스 이름 필수. 이 값을 검색 서비스의 고유한 사용자 정의 이름으로 설정합니다.
인덱스 이름 PUT을 사용하는 경우 URI에 필요합니다. 이름은 소문자여야 하고, 문자나 숫자로 시작하고, 슬래시나 점이 없고, 128자 미만이어야 합니다. 대시는 연속될 수 없습니다.
api-version 필수. 더 많은 버전은 API 버전 참조하세요.
allowIndexDowntime 선택적. 기본적으로 False입니다. 분석기, 토큰 변환기, 토큰 필터, 문자 필터 또는 유사성 속성 추가 또는 수정과 같은 특정 업데이트에 대해 true로 설정합니다. 인덱스는 업데이트 중에 오프라인으로 전환되며, 일반적으로 몇 초 이내입니다.

요청 헤더

다음 표에서는 필수 및 선택적 요청 헤더에 대해 설명합니다.

필드 묘사
Content-Type 필수. 이 값을 application/json
api-key Azure 역할 사용하고 요청에 전달자 토큰이 제공된 경우 선택 사항입니다. 그렇지 않으면 키가 필요합니다. api-key는 검색 서비스에 대한 요청을 인증하는 고유한 시스템 생성 문자열입니다. 만들기 요청에는 쿼리 키가 아닌 관리 키로 설정된 api-key 헤더가 포함되어야 합니다. 자세한 내용은 키 인증 사용하여 Azure AI Search에 연결을 참조하세요.

요청 본문

요청 본문에는 이 인덱스에 공급되는 문서 내의 데이터 필드 목록이 포함된 스키마 정의가 포함되어 있습니다.

다음 JSON은 벡터 검색을 지원하는 스키마의 개략적인 표현입니다. 스키마에는 키 필드가 필요하며 해당 키 필드는 검색 가능하고 필터링 가능하며 정렬 가능하며 패싯 가능할 수 있습니다.

벡터 검색 필드는 Collection(Edm.Single)형식입니다. 벡터 필드는 텍스트가 아니므로 벡터 필드를 키로 사용할 수 없으며 분석기, 정규화기, 제안기 또는 동의어를 허용하지 않습니다. "dimensions" 속성과 "vectorSearchConfiguration" 속성이 있어야 합니다.

벡터 검색을 지원하는 스키마도 키워드 검색을 지원할 수 있습니다. 인덱스의 다른 비벡터 필드는 인덱스에 포함된 분석기, 동의어 및 점수 매기기 프로필을 사용할 수 있습니다.

{  
  "name": (optional on PUT; required on POST) "Name of the index",
  "description": (optional) "Description of the index",  
  "fields": [  
    {  
      "name": "name_of_field",  
      "type": "Edm.String | Edm.Int32 | Edm.Int64 | Edm.Double | Edm.Boolean | Edm.DateTimeOffset | Edm.GeographyPoint | Edm.ComplexType | Collection(Edm.String) | Collection(Edm.Int32) | Collection(Edm.Int64) | Collection(Edm.Single) | Collection(Edm.Double) | Collection(Edm.Boolean) | Collection(Edm.DateTimeOffset) | Collection(Edm.GeographyPoint) | Collection(Edm.ComplexType)",
      "key": true | false (default, only Edm.String fields can be keys, enable on one field only),  
      "searchable": true (default where applicable) | false (only Edm.String and Collection(Edm.String) fields can be searchable),  
      "filterable": true (default) | false,  
      "sortable": true (default where applicable) | false (Collection(Edm.String) fields cannot be sortable),  
      "facetable": true (default where applicable) | false (Edm.GeographyPoint fields cannot be facetable),  
      "retrievable": true (default) | false,  
      "analyzer": "name_of_analyzer_for_search_and_indexing", (only if 'searchAnalyzer' and 'indexAnalyzer' are not set)
      "searchAnalyzer": "name_of_search_analyzer", (only if 'indexAnalyzer' is set and 'analyzer' is not set)
      "indexAnalyzer": "name_of_indexing_analyzer", (only if 'searchAnalyzer' is set and 'analyzer' is not set)
      "normalizer": "name_of_normalizer", (optional, applies only to filterable, facetable, or sortable Edm.String and Collection(Edm.String) fields.)
      "synonymMaps": [ "name_of_synonym_map" ], (optional, only one synonym map per field is currently supported),
      "fields" : [ ... ], (optional, a list of sub-fields if this is a field of type Edm.ComplexType or Collection(Edm.ComplexType). Must be null or empty for simple fields.)
      "dimensions": 1234, (required for vector field definitions. Prohibited for non-vector fields. Integer specifying the dimensionality of the embeddings generated by a machine learning model)
      "vectorSearchConfiguration": "name_of_algorithm_config" (required for vector field definitions. Prohibited for non-vector fields. This should reference an algorithm configuration.)
    }
  ],
  "similarity": (optional) { },
  "suggesters": (optional) [ ... ],  
  "scoringProfiles": (optional) [ ... ],  
  "semantic": (optional) { },
  "vectorSearch": (optional) {
    "algorithmConfigurations": [
        {
            "name": "name_of_algorithm_config",
            "kind": "hnsw" (algorithm type. Only "hnsw" is supported currently.),
            "hnswParameters": {
                "m": 4,
                "efConstruction": 400,
                "efSearch": 500,
                "metric": "cosine"
            }
        }
    ]},
  "normalizers":(optional) [ ... ],
  "analyzers":(optional) [ ... ],
  "charFilters":(optional) [ ... ],
  "tokenizers":(optional) [ ... ],
  "tokenFilters":(optional) [ ... ],
  "defaultScoringProfile": (optional) "Name of a custom scoring profile to use as the default",  
  "corsOptions": (optional) { },
  "encryptionKey":(optional) { }  
}  

요청에는 다음 속성이 포함됩니다.

재산 묘사
이름 필수. 인덱스의 이름입니다. 인덱스 이름은 소문자, 숫자 또는 대시만 포함해야 하며 대시로 시작하거나 끝낼 수 없으며 128자로 제한됩니다.
묘사 선택적 설명입니다.
필드 각 필드에 이름이 있는 이 인덱스에 대한 필드 컬렉션, EDM(엔터티 데이터 모델)을 따르는 지원되는 데이터 형식 및 해당 필드에 허용 가능한 작업을 정의하는 특성이 있습니다. 필드 컬렉션에는 "key"가 "true"로 설정된 Edm.String 형식 필드가 하나 있어야 합니다. 이 필드는 인덱스와 함께 저장된 각 문서에 대한 고유 식별자(문서 ID라고도 함)를 나타냅니다. 이제 fields 컬렉션은 벡터 필드를 허용합니다.
유사성 선택적. 2020년 7월 15일 전에 만든 서비스의 경우 BM25 순위 알고리즘을 옵트인하도록 이 속성을 설정합니다.
제안기 자동 완성 및 제안과 같은 부분 쿼리에서 일치하기 위한 접두사를 저장하는 구문을 지정합니다.
scoringProfiles 선택적. 전체 텍스트 쿼리의 관련성 튜닝에 사용됩니다.
의미 체계 선택적. 의미 체계 검색 기능에 영향을 주는 검색 인덱스의 매개 변수를 정의합니다. 의미 체계 쿼리에는 의미 체계 구성이 필요합니다. 자세한 내용은 의미 체계 쿼리만들기를 참조하세요.
vectorSearch 선택적. 다양한 벡터 검색 설정을 구성합니다. 벡터 검색 알고리즘만 구성할 수 있습니다.
표준 변환기 선택적. 문자열의 어휘 순서를 정규화하여 대/소문자를 구분하지 않는 정렬 및 필터링 출력을 생성합니다.
분석기, charFilters, tokenizers, tokenFilters 선택적. 사용자 지정 분석기정의하는 경우 인덱스의 이러한 섹션을 지정합니다. 기본적으로 이러한 섹션은 null입니다.
defaultScoringProfile 기본 점수 매기기 동작을 덮어쓰는 사용자 지정 점수 매기기 프로필의 이름입니다.
corsOptions 선택적. 인덱스에 대한 원본 간 쿼리에 사용됩니다.
encryptionKey 선택적. Azure Key Vault에서 CMK(고객 관리형 암호화 키) 통해 인덱스의 추가 암호화에 사용됩니다. 2019-01-01년 이후에 생성된 청구 가능한 검색 서비스에 사용할 수 있습니다.

응답

성공적인 만들기 요청의 경우 상태 코드 "201 Created"가 표시됩니다. 기본적으로 응답 본문에는 생성된 인덱스 정의에 대한 JSON이 포함됩니다. 그러나 Prefer 요청 헤더가 return=minimal으로 설정된 경우 응답 본문은 비어 있고 성공 상태 코드는 "201 생성됨" 대신 "204 콘텐츠 없음"입니다. 인덱스를 만드는 데 PUT 또는 POST를 사용하는지 여부에 관계없이 마찬가지입니다.

성공적인 업데이트 요청의 경우 "204 콘텐츠 없음"이 표시됩니다. 기본적으로 응답 본문은 비어 있습니다. 그러나 Prefer 요청 헤더가 return=representation설정되면 응답 본문에 업데이트된 인덱스 정의에 대한 JSON이 포함됩니다. 이 경우 성공 상태 코드는 "200 OK"입니다.

예제

예제: 벡터

벡터 검색은 필드 수준에서 구현됩니다. 이 정의는 벡터 필드에 포커스를 놓습니다. 벡터 필드는 단정밀도 부동 소수점 값을 저장하는 데 Collection(Edm.Single) 형식이어야 합니다. 벡터 필드에는 포함을 생성하는 데 사용되는 기계 학습 모델에서 지원하는 출력 차원의 수를 보유하는 "차원" 속성이 있습니다. 예를 들어 text-embedding-ada-002를 사용하는 경우 이 문서에서최대 출력 차원 수는 1536입니다. "algorithmConfiguration"은 인덱스에 있는 "vectorSearch" 구성의 이름으로 설정됩니다. 인덱스에서 여러 항목을 정의한 다음 필드당 하나를 지정할 수 있습니다.

많은 특성이 비벡터 필드에만 적용됩니다. "filterable", "sortable", "facetable", "analyzer", "normalizer" 및 "synonymMaps"와 같은 특성은 벡터 필드에 대해 무시됩니다. 마찬가지로 알파 숫자 콘텐츠가 포함된 필드에 "dimensions" 또는 "vectorSearchConfiguration"와 같은 벡터 전용 속성을 설정하면 해당 특성이 무시됩니다.

{
    "name": "{{index-name}}",
    "fields": [
        {
            "name": "id",
            "type": "Edm.String",
            "key": true,
            "searchable": true,
            "retrievable": true,
            "filterable": true
        },
        {
            "name": "titleVector",
            "type": "Collection(Edm.Single)",
            "key": false,
            "searchable": true,
            "retrievable": true,
            "filterable": false,  
            "sortable": false,  
            "facetable": false,
            "analyzer": "",
            "searchAnalyzer": "",
            "indexAnalyzer": "",
            "normalizer": "",
            "synonymMaps": "", 
            "dimensions": 1536,
            "vectorSearchConfiguration": "my-vector-config"
        },
        {
            "name": "contentVector",
            "type": "Collection(Edm.Single)",
            "key": false,
            "searchable": true,
            "retrievable": true,
            "filterable": false,  
            "sortable": false,  
            "facetable": false,
            "analyzer": "",
            "searchAnalyzer": "",
            "indexAnalyzer": "",
            "normalizer": "",
            "synonymMaps": "", 
            "dimensions": 1536,
            "vectorSearchConfiguration": "my-vector-config"
        }
    ],
    "vectorSearch": {
        "algorithmConfigurations": [
            {
                "name": "my-vector-config",
                "kind": "hnsw",
                "hnswParameters": {
                    "m": 4,
                    "efConstruction": 400,
                    "efSearch": 500,
                    "metric": "cosine"
                }
            }
        ]
    }
}

예제: 벡터 및 비벡터 필드가 있는 필드 컬렉션

벡터 검색은 필드 수준에서 구현됩니다. 하이브리드 쿼리 시나리오를 지원하려면 벡터 및 비벡터 쿼리에 대한 필드 쌍을 만듭니다. "title", "titleVector", "content", "contentVector" 필드는 이 규칙을 따릅니다. 또한 의미 체계 검색을 사용하려면 해당 동작에 대한 비벡터 텍스트 필드가 있어야 합니다.

{
    "name": "{{index-name}}",
    "fields": [
        {
            "name": "id",
            "type": "Edm.String",
            "key": true,
            "filterable": true
        },
        {
            "name": "title",
            "type": "Edm.String",
            "searchable": true,
            "retrievable": true
        },
        {
            "name": "content",
            "type": "Edm.String",
            "searchable": true,
            "retrievable": true
        },
        {
            "name": "category",
            "type": "Edm.String",
            "filterable": true,
            "searchable": true,
            "retrievable": true
        },
        {
            "name": "titleVector",
            "type": "Collection(Edm.Single)",
            "searchable": true,
            "retrievable": true,
            "dimensions": 1536,
            "vectorSearchConfiguration": "my-vector-config"
        },
        {
            "name": "contentVector",
            "type": "Collection(Edm.Single)",
            "searchable": true,
            "retrievable": true,
            "dimensions": 1536,
            "vectorSearchConfiguration": "my-vector-config"
        }
    ],
    "corsOptions": {
        "allowedOrigins": [
            "*"
        ],
        "maxAgeInSeconds": 60
    },
    "vectorSearch": {
        "algorithmConfigurations": [
            {
                "name": "my-vector-config",
                "kind": "hnsw",
                "hnswParameters": {
                    "m": 4,
                    "efConstruction": 400,
                    "efSearch": 500,
                    "metric": "cosine"
                }
            }
        ]
    },
    "semantic": {
        "configurations": [
            {
                "name": "my-semantic-config",
                "prioritizedFields": {
                    "titleField": {
                        "fieldName": "title"
                    },
                    "prioritizedContentFields": [
                        {
                            "fieldName": "content"
                        }
                    ],
                    "prioritizedKeywordsFields": [
                        {
                            "fieldName": "category"
                        }
                    ]
                }
            }
        ]
    }
}

예제: 단순 및 복합 필드가 있는 인덱스 스키마

첫 번째 예제에서는 단순 및 복합 필드가 있는 전체 인덱스 스키마를 보여줍니다. 하나 이상의 문자열 필드에 "key"가 true로 설정되어 있어야 합니다.

{
  "name": "hotels",  
  "fields": [
    { "name": "HotelId", "type": "Edm.String", "key": true, "filterable": true },
    { "name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": true, "facetable": false },
    { "name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.microsoft" },
    { "name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.microsoft" },
    { "name": "Category", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
    { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "sortable": false, "facetable": true, "analyzer": "tagsAnalyzer", "normalizer": "tagsNormalizer" },
    { "name": "ParkingIncluded", "type": "Edm.Boolean", "filterable": true, "sortable": true, "facetable": true },
    { "name": "LastRenovationDate", "type": "Edm.DateTimeOffset", "filterable": true, "sortable": true, "facetable": true },
    { "name": "Rating", "type": "Edm.Double", "filterable": true, "sortable": true, "facetable": true },
    { "name": "Address", "type": "Edm.ComplexType", 
      "fields": [
          { "name": "StreetAddress", "type": "Edm.String", "filterable": false, "sortable": false, "facetable": false, "searchable": true },
          { "name": "City", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true, "normalizer": "lowercase" },
          { "name": "StateProvince", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
          { "name": "PostalCode", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
          { "name": "Country", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true }
        ]
    },
    { "name": "Location", "type": "Edm.GeographyPoint", "filterable": true, "sortable": true },
    { "name": "Rooms", "type": "Collection(Edm.ComplexType)", 
      "fields": [
          { "name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.lucene" },
          { "name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.lucene" },
          { "name": "Type", "type": "Edm.String", "searchable": true },
          { "name": "BaseRate", "type": "Edm.Double", "filterable": true, "facetable": true },
          { "name": "BedOptions", "type": "Edm.String", "searchable": true },
          { "name": "SleepsCount", "type": "Edm.Int32", "filterable": true, "facetable": true },
          { "name": "SmokingAllowed", "type": "Edm.Boolean", "filterable": true, "facetable": true },
          { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "facetable": true, "analyzer": "tagsAnalyzer", "normalizer": "tagsNormalizer" }
        ]
    }
  ],
  "suggesters": [ ],
  "analyzers": [ ],
  "normalizers": [ ],
  "encryptionKey": [ ]
}  

예: 제안기

제안기 정의는 "검색 가능" 및 "검색 가능한" 문자열 필드를 지정해야 합니다(REST API에서는 모든 단순 필드가 기본적으로 "retrievable": true). 제안기가 정의되면 일치 항목 또는 쿼리 용어의 나머지 부분에 따라 제안 API 사용하거나 API자동 완성을 쿼리 요청에서 이름으로 참조할 수 있습니다.

{
  "name": "hotels",  
  "fields": [
    { "name": "HotelId", "type": "Edm.String", "key": true, "filterable": true },
    { "name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": true, "facetable": false },
    { "name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.microsoft" },
    { "name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.microsoft" },
    { "name": "Category", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
    { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "sortable": false, "facetable": true, "analyzer": "tagsAnalyzer", "normalizer": "tagsNormalizer" },
    { "name": "Rating", "type": "Edm.Double", "filterable": true, "sortable": true, "facetable": true },

  ],
  "suggesters": [
    {  
      "name": "sg",  
      "searchMode": "analyzingInfixMatching",  
      "sourceFields": ["HotelName", "Category", "Tags"]  
    } 
  ]
} 

예: 분석기 및 정규화기

분석기표준 변환기 필드 정의에서 참조되며 미리 정의되거나 사용자 지정될 수 있습니다. 사용자 지정 분석기 또는 normalizer를 사용하는 경우 "분석기" 및 "normalizers" 섹션의 인덱스에 지정합니다.

다음 예제에서는 "Tags"에 대한 사용자 지정 분석기 및 정규화를 보여 줍니다. 또한 "HotelName" 및 "Description"에 대해 미리 정의된 정규화기(표준) 및 분석기(en.microsoft)를 각각 보여 줍니다.

{
  "name": "hotels",  
  "fields": [
    { "name": "HotelId", "type": "Edm.String", "key": true, "filterable": true },
    { "name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": true, "facetable": false, "normalizer": standard  },
    { "name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.microsoft"},
    { "name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.microsoft" },
    { "name": "Category", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
    { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "sortable": false, "facetable": true, "analyzer": "tagsAnalyzer", "normalizer": "tagsNormalizer" },
    { "name": "Rating", "type": "Edm.Double", "filterable": true, "sortable": true, "facetable": true },

  ],
  "analyzers": [
    {
      "@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer",
      "name": "tagsAnalyzer",
      "charFilters": [ "html_strip" ],
      "tokenizer": "standard_v2"
    }
  ],
  "normalizers": [
    {
      "@odata.type": "#Microsoft.Azure.Search.CustomNormalizer",
      "name": "tagsNormalizer",
      "tokenFilters": [ "asciifolding", "lowercase" ]
    }
  ]
}  

예제: 검색 관련성 대한 유사성

이 속성은 전체 텍스트 검색 쿼리의 검색 결과에서 관련성 점수를 만드는 데 사용되는 순위 알고리즘을 설정합니다. 2020년 7월 15일 이후에 만든 서비스에서 유사성 알고리즘은 항상 BM25이므로 이 속성은 무시됩니다. 2020년 7월 15일 전에 만든 기존 서비스의 경우 다음과 같이 이 구문을 설정하여 BM25에 옵트인할 수 있습니다.

 "similarity": {
     "@odata.type": "#Microsoft.Azure.Search.BM25Similarity"
 }

예: CORS 옵션

브라우저에서 모든 원본 간 요청을 차단하기 때문에 클라이언트 쪽 JavaScript는 기본적으로 API를 호출할 수 없습니다. 인덱스에 대한 원본 간 쿼리를 허용하려면 corsOptions 특성을 설정하여 CORS(원본 간 리소스 공유(Wikipedia))를 사용하도록 설정합니다. 보안상의 이유로 쿼리 API만 CORS를 지원합니다.

{
   "name": "hotels",  
   "fields": [ omitted for brevity ],
   "suggesters": [ omitted for brevity ],
   "analyzers": [ omitted for brevity ],
   "corsOptions": (optional) {  
       "allowedOrigins": ["*"] | ["https://docs.microsoft.com:80", "https://azure.microsoft.com:80", ...],  
       "maxAgeInSeconds": (optional) max_age_in_seconds (non-negative integer)  
     }
}

예: 액세스 자격 증명이 있는 암호화 키

암호화 키는 추가 암호화에 사용되는 고객 관리형 키입니다. 자세한 내용은 Azure Key Vault고객 관리형 키를 사용하여 암호화를 참조하세요.

{
    "name": "hotels",  
    "fields": [ omitted for brevity ],
    "suggesters": [ omitted for brevity ],
    "analyzers": [ omitted for brevity ],
    "encryptionKey": (optional) { 
       "keyVaultKeyName": "Name of the Azure Key Vault key used for encryption",
       "keyVaultKeyVersion": "Version of the Azure Key Vault key",
       "keyVaultUri": "URI of Azure Key Vault, also referred to as DNS name, that provides the key. An example URI might be https://my-keyvault-name.vault.azure.net",
       "accessCredentials": (optional, only if not using managed system identity) {
          "applicationId": "AAD Application ID that was granted access permissions to your specified Azure Key Vault",
          "applicationSecret": "Authentication key of the specified AAD application)"
        }
    }
} 

예: 관리 ID를 사용한 암호화 키

시스템 할당 또는 사용자 할당(미리 보기) 관리 ID를 사용하여 Azure Key Vault에 인증할 수 있습니다. 이 경우 액세스 자격 증명을 생략하거나 null로 설정합니다. 다음 예제에서는 사용자 할당 관리 ID를 보여줍니다. 시스템 할당 관리 ID를 사용하려면 액세스 자격 증명 및 ID를 생략합니다. 검색 서비스의 시스템 ID에 Azure Key Vault에 대한 권한이 있는 한 연결 요청이 성공해야 합니다.

{
  "name": "hotels",  
  "fields": [ omitted for brevity ],
  "suggesters": [ omitted for brevity ],
  "analyzers": [ omitted for brevity ],
  "encryptionKey": (optional) { 
      "keyVaultKeyName": "Name of the Azure Key Vault key used for encryption",
      "keyVaultKeyVersion": "Version of the Azure Key Vault key",
      "keyVaultUri": "URI of Azure Key Vault, also referred to as DNS name, that provides the key. An example URI might be https://my-keyvault-name.vault.azure.net",
      "accessCredentials": null,
          "identity" : { 
              "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
              "userAssignedIdentity" : "/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]"
          }
    }
} 

예: 점수 매기기 프로필

점수 매기기 프로필은 검색 결과에서 더 높게 표시되는 문서에 영향을 줄 수 있는 사용자 지정 점수 매기기 동작을 정의하는 스키마의 섹션입니다. 점수 매기기 프로필은 필드 가중치 및 함수로 구성됩니다. 이를 사용하려면 쿼리 문자열에 이름으로 프로필을 지정합니다. 자세한 내용은 검색 인덱스에 점수 매기기 프로필 추가(Azure AI Search REST API) 참조하세요.

{
   "name": "hotels",  
   "fields": [ omitted for brevity ],
   "suggesters": [ omitted for brevity ],
   "analyzers": [ omitted for brevity ],
   "scoringProfiles": [  
   {  
     "name": "name of scoring profile",  
     "text": (optional, only applies to searchable fields) {  
       "weights": {  
         "searchable_field_name": relative_weight_value (positive #'s),  
         ...  
       }  
     },  
     "functions": (optional) [  
       {  
         "type": "magnitude | freshness | distance | tag",  
         "boost": # (positive number used as multiplier for raw score != 1),  
         "fieldName": "...",  
         "interpolation": "constant | linear (default) | quadratic | logarithmic",  
         "magnitude": {  
           "boostingRangeStart": #,  
           "boostingRangeEnd": #,  
           "constantBoostBeyondRange": true | false (default)  
         },  
         "freshness": {  
           "boostingDuration": "..." (value representing timespan leading to now over which boosting occurs)  
         },  
         "distance": {  
           "referencePointParameter": "...", (parameter to be passed in queries to use as reference location)  
           "boostingDistance": # (the distance in kilometers from the reference location where the boosting range ends)  
         },  
         "tag": {  
           "tagsParameter": "..." (parameter to be passed in queries to specify a list of tags to compare against target fields)  
         }  
       }  
     ],  
     "functionAggregation": (optional, applies only when functions are specified)   
       "sum (default) | average | minimum | maximum | firstMatching"  
       }  
 ]
}

예제: 의미 체계 구성

의미 체계 구성은 순위, 캡션, 강조 표시 및 답변에 대한 의미 체계 검색에서 사용되는 필드를 구성하는 데 사용되는 인덱스 정의의 일부입니다. 의미 체계 검색을 사용하려면 쿼리 시 의미 체계 구성의 이름을 지정해야 합니다. 자세한 내용은 의미 체계 쿼리만들기를 참조하세요.

{
   "name": "hotels",  
   "fields": [ omitted for brevity ],
   "suggesters": [ omitted for brevity ],
   "analyzers": [ omitted for brevity ],
   "semantic": {
     "configurations": [
       {
         "name": "my-semantic-config",
         "prioritizedFields": {
           "titleField": {
                 "fieldName": "hotelName"
               },
           "prioritizedContentFields": [
             {
               "fieldName": "description"
             },
             {
               "fieldName": "description_fr"
             }
           ],
           "prioritizedKeywordsFields": [
             {
               "fieldName": "tags"
             },
             {
               "fieldName": "category"
             }
           ]
         }
       }
     ]
   }
}

정의

링크 묘사
corsOptions 인덱스에 부여된 도메인 또는 원본을 나열합니다.
defaultScoringProfile 기본 점수 매기기 동작을 덮어쓰는 사용자 지정 점수 매기기 프로필의 이름입니다.
encryptionKey 고객 관리형 암호화를 위해 Azure Key Vault에 대한 연결을 구성합니다.
필드 검색 인덱스에 있는 필드의 정의 및 특성을 설정합니다.
표준 변환기 사용자 지정 정규화를 구성합니다. 문자열의 어휘 순서를 정규화하여 대/소문자를 구분하지 않는 정렬, 패싯 및 필터링 출력을 생성합니다.
의미 체계 순위, 캡션, 강조 표시 및 답변에 대한 의미 체계 검색에 사용되는 필드를 구성합니다.
scoringProfiles 전체 텍스트 쿼리의 관련성 튜닝에 사용됩니다.
유사성
제안기 자동 완성 및 제안과 같은 부분 쿼리에서 일치하기 위해 내부 접두사 스토리지를 구성합니다.
vectorSearch 벡터 필드에 사용되는 알고리즘을 구성합니다.

corsOptions

브라우저에서 모든 원본 간 요청을 차단하기 때문에 클라이언트 쪽 JavaScript는 기본적으로 API를 호출할 수 없습니다. 인덱스에 대한 원본 간 쿼리를 허용하려면 "corsOptions" 특성을 설정하여 CORS(원본 간 리소스 공유)를 사용하도록 설정합니다. 보안상의 이유로 쿼리 API만 CORS를 지원합니다.

속성 묘사
allowedOrigins 필수. 인덱스에 대한 액세스 권한이 부여되는 쉼표로 구분된 원본 목록입니다. 여기서 각 원본은 일반적으로 정규화된 도메인 이름>protocol://<형식입니다.<포트>(<포트> 종종 생략됨). 즉, 해당 원본에서 제공되는 모든 JavaScript 코드가 인덱스를 쿼리할 수 있습니다(유효한 API 키를 제공한다고 가정). 모든 원본에 대한 액세스를 허용하려면 "allowedOrigins" 배열에서 * 단일 항목으로 지정합니다. 프로덕션에는 권장되지 않지만 개발 또는 디버깅에 유용할 수 있습니다.
maxAgeInSeconds 선택적. 브라우저는 이 값을 사용하여 CORS 실행 전 응답을 캐시하는 기간(초)을 결정합니다. 음수가 아닌 정수여야 합니다. 이 값이 크면 성능이 향상되지만 CORS 정책 변경 내용을 적용하는 데 필요한 시간만큼 이러한 이득이 상쇄됩니다. 설정되지 않은 경우 기본 기간인 5분이 사용됩니다.

defaultScoringProfile

선택적. 인덱스로 정의된 사용자 지정 점수 매기기 프로필의 이름인 문자열입니다. 사용자 지정 프로필이 쿼리 문자열에 명시적으로 지정되지 않을 때마다 기본 프로필이 호출됩니다. 자세한 내용은 검색 인덱스점수 매기기 프로필 추가를 참조하세요.

encryptionKey

CMK(고객 관리형 암호화 키)추가 Azure Key Vault에 대한 연결을 구성합니다. 2019년 1월 1일 이후 생성된 청구 가능한 검색 서비스에 사용할 수 있습니다.

키 자격 증명 모음에 대한 연결을 인증해야 합니다. 이 목적을 위해 "accessCredentials" 또는 관리 ID를 사용할 수 있습니다.

관리 ID는 시스템 또는 사용자 할당(미리 보기)일 수 있습니다. 검색 서비스에 시스템 할당 관리 ID와 키 자격 증명 모음에 대한 읽기 액세스 권한을 부여하는 역할 할당이 모두 있는 경우 "ID" 및 "accessCredentials"를 모두 생략할 수 있으며 요청은 관리 ID를 사용하여 인증됩니다. 검색 서비스에 사용자 할당 ID 및 역할 할당이 있는 경우 "ID" 속성을 해당 ID의 리소스 ID로 설정합니다.

속성 묘사
keyVaultKeyName 필수. 암호화에 사용되는 Azure Key Vault 키의 이름입니다.
keyVaultKeyVersion 필수. Azure Key Vault 키의 버전입니다.
keyVaultUri 필수. 키를 제공하는 Azure Key Vault(DNS 이름이라고도 함)의 URI입니다. 예제 URI는 https://my-keyvault-name.vault.azure.net 수 있습니다.
accessCredentials 선택적. 관리 ID를 사용하는 경우 이 속성을 생략합니다. 그렇지 않으면 "accessCredentials"의 속성에는
"applicationId"(지정된 Azure Key Vault에 대한 액세스 권한이 있는 Azure Active Directory 애플리케이션 ID)가 포함됩니다. "applicationSecret"(지정된 Azure AD 애플리케이션의 인증 키)을
.
신원 Azure Key Vault에 대한 검색 서비스 연결에 사용자 할당 관리 ID를 사용하지 않는 한 선택 사항입니다. 형식이 "/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]".

필드

필드 정의의 특성에 대한 정보를 포함합니다.

속성 묘사
이름 필수. 인덱스 또는 부모 필드의 필드 컬렉션 내에서 고유해야 하는 필드의 이름을 설정합니다.
필수. 필드의 데이터 형식을 설정합니다. 필드는 단순하거나 복잡할 수 있습니다. 단순 필드는 텍스트에 대한 Edm.String 또는 정수의 Edm.Int32 같은 기본 형식입니다. 복합 필드에는 단순하거나 복잡한 하위 필드가 있을 수 있습니다. 이렇게 하면 개체 및 개체 배열을 모델링할 수 있으므로 대부분의 JSON 개체 구조를 인덱스에 업로드할 수 있습니다. Collection(Edm.Single) 단정밀도 부동 소수점 값을 수용합니다. 벡터 필드에만 사용되며 필수입니다. 지원되는 형식의 전체 목록은 지원되는 데이터 형식 참조하세요.
열쇠 필수. 필드 값이 인덱스의 문서를 고유하게 식별하도록 지정하려면 이 특성을 true로 설정합니다. 키 필드의 최대 값 길이는 1024자입니다. 각 인덱스의 최상위 필드 하나만 키 필드로 선택해야 하며 Edm.String형식이어야 합니다. 기본값은 단순 필드의 경우 false, 복합 필드의 경우 null.

키 필드를 사용하여 문서를 직접 조회하고 특정 문서를 업데이트하거나 삭제할 수 있습니다. 키 필드의 값은 문서를 조회하거나 인덱싱할 때 대/소문자를 구분하는 방식으로 처리됩니다. 자세한 내용은 문서 조회 및 문서 추가, 업데이트 또는 삭제 참조하세요.
검색할 검색 결과에서 필드를 반환할 수 있는지 여부를 나타냅니다. 필드(예: 여백)를 필터, 정렬 또는 채점 메커니즘으로 사용하지만 최종 사용자에게 필드를 표시하지 않으려면 이 특성을 false 설정합니다. 이 특성은 키 필드에 대해 true 있어야 하며 복잡한 필드에 대해 null 합니다. 이 특성은 기존 필드에서 변경할 수 있습니다. 검색 가능을 true 설정해도 인덱스 스토리지 요구 사항이 증가하지는 않습니다. 기본값은 단순 필드의 경우 true, 복합 필드의 경우 null.
검색 필드가 전체 텍스트 검색 가능하고 검색 쿼리에서 참조할 수 있는지 여부를 나타냅니다. 즉, 인덱싱 중에 단어 분리와 같은 어휘 분석 진행됩니다. 검색 가능한 필드를 "Sunny day"와 같은 값으로 설정하면 내부적으로 개별 토큰 "sunny" 및 "day"로 정규화됩니다. 이렇게 하면 이러한 용어를 전체 텍스트로 검색할 수 있습니다. Edm.String 또는 Collection(Edm.String) 형식의 필드는 기본적으로 검색할 수 있습니다. 이 특성은 다른 문자열이 아닌 데이터 형식의 단순 필드에 대해 false 있어야 하며 복잡한 필드에 대해 null 합니다.

Azure AI Search는 해당 필드의 내용을 처리하고 보조 데이터 구조로 구성하여 성능 검색을 수행하기 때문에 검색 가능한 필드는 인덱스에 추가 공간을 사용합니다. 인덱스의 공간을 절약하고 검색에 필드를 포함할 필요가 없는 경우 검색 가능 항목을 false설정합니다. 자세한 내용은 Azure AI Search 전체 텍스트 검색이 작동하는 방식을 참조하세요.
필터링 $filter 쿼리에서 필드를 참조할 수 있도록 설정할지 여부를 나타냅니다. 필터링 가능 항목은 문자열 처리 방식에서 검색 가능한 항목과 다릅니다. 필터링할 수 있는 형식 Edm.String 또는 Collection(Edm.String) 필드는 어휘 분석을 거치지 않으므로 비교는 정확한 일치에만 해당합니다. 예를 들어 이러한 필드 f "맑은 날"로 설정하면 $filter=f eq 'sunny' 일치하는 항목을 찾지 못하지만 $filter=f eq 'Sunny day'. 이 특성은 복잡한 필드에 대해 null 합니다. 기본값은 단순 필드의 경우 true, 복합 필드의 경우 null. 인덱스 크기를 줄이려면 필터링하지 않을 필드에 대해 이 특성을 false 설정합니다.
정렬 $orderby 식에서 필드를 참조할 수 있도록 설정할지 여부를 나타냅니다. 기본적으로 Azure AI Search는 점수를 기준으로 결과를 정렬하지만, 대부분의 환경에서 사용자는 문서의 필드를 기준으로 정렬하려고 합니다. 단순 필드는 단일 값인 경우에만 정렬할 수 있습니다(부모 문서의 범위에 단일 값이 있음).

단순 컬렉션 필드는 다중값이므로 정렬할 수 없습니다. 복합 컬렉션의 단순 하위 필드도 다중 값이므로 정렬할 수 없습니다. 즉, 직계 부모 필드이든 상위 필드이든 관계없이 복합 컬렉션입니다. 복합 필드는 정렬할 수 없으며 정렬 가능한 특성은 해당 필드에 대해 null 합니다. 정렬 가능한 기본값은 단일 값 단순 필드의 경우 true, 다중값 단순 필드에는 false, 복합 필드에는 null.
패싯 가능 패싯 쿼리에서 필드를 참조할 수 있도록 설정할지 여부를 나타냅니다. 일반적으로 범주별 적중 횟수를 포함하는 검색 결과 프레젠테이션에 사용됩니다(예: 디지털 카메라를 검색하고 브랜드별, 메가픽셀별, 가격별 적중 항목 보기). 이 특성은 복잡한 필드에 대해 null 합니다. Edm.GeographyPoint 또는 Collection(Edm.GeographyPoint) 형식의 필드는 패싯할 수 없습니다. 기본값은 다른 모든 단순 필드에 대해 true. 인덱스 크기를 줄이려면 이 특성을 패싯하지 않는 필드에서 false 설정합니다.
분석기 인덱싱 및 쿼리 작업 중에 문자열을 토큰화하기 위한 어휘 분석기를 설정합니다. 이 속성의 유효한 값에는 언어 분석기, 기본 제공 분석기및 사용자 지정 분석기포함됩니다. 기본값은 standard.lucene. 이 특성은 검색 가능한 필드에만 사용할 수 있으며 searchAnalyzer 또는 indexAnalyzer와 함께 설정할 수 없습니다. 분석기를 선택하고 인덱스로 필드를 만든 후에는 필드에 대해 변경할 수 없습니다. 복소수 필드 합니다.
searchAnalyzer 인덱싱 및 쿼리에 대해 다른 어휘 분석기를 지정하려면 indexAnalyzer와 함께 이 속성을 설정합니다. 이 속성을 사용하는 경우 분석기를 null 설정하고 indexAnalyzer가 허용되는 값으로 설정되어 있는지 확인합니다. 이 속성의 유효한 값에는 기본 제공 분석기 및 사용자 지정 분석기포함됩니다. 이 특성은 검색 가능한 필드에만 사용할 수 있습니다. 검색 분석기는 쿼리 시간에만 사용되므로 기존 필드에서 업데이트할 수 있습니다. 복소수 필드 합니다.
indexAnalyzer 인덱싱 및 쿼리에 대해 다른 어휘 분석기를 지정하려면 searchAnalyzer와 함께 이 속성을 설정합니다. 이 속성을 사용하는 경우 분석기를 null 설정하고 searchAnalyzer가 허용되는 값으로 설정되어 있는지 확인합니다. 이 속성의 유효한 값에는 기본 제공 분석기 및 사용자 지정 분석기포함됩니다. 이 특성은 검색 가능한 필드에만 사용할 수 있습니다. 인덱스 분석기를 선택한 후에는 필드에 대해 변경할 수 없습니다. 복소수 필드 합니다.
normalizer 필터링, 정렬 및 패싯 작업에 대한 정규화를 설정합니다. 미리 정의된 normalizer의 이름 또는 인덱스 내에 정의된 사용자 지정 정규화기일 수 있습니다. 기본값은 null, 즉 분석되지 않은 축자 텍스트와 정확히 일치합니다. 이 특성은 필터링 가능, 정렬 가능 또는 패싯 가능 중 하나 이상이 true로 설정된 Edm.StringCollection(Edm.String) 필드에만 사용할 수 있습니다. normalizer는 인덱스 추가 시 필드에만 설정할 수 있으며 나중에 변경할 수 없습니다. 복소수 필드 합니다. 미리 정의된 정규화에 유효한 값은 다음과 같습니다.

standard- 텍스트 뒤에 asciifolding이 잇습니다.
lowercase- 문자를 소문자로 변환합니다.
uppercase - 문자를 대문자로 변환합니다.
asciifolding - 기본 라틴 유니코드 블록에 없는 문자를 해당하는 ASCII로 변환합니다(있는 경우). 예를 들어 "à"를 "a"로 변경합니다.
elision- 토큰의 시작 부분에서 엘리션을 제거합니다.
synonymMaps 이 필드와 연결할 동의어 맵의 이름 목록입니다. 이 특성은 검색 가능한 필드에만 사용할 수 있습니다. 현재 필드당 하나의 동의어 맵만 지원됩니다. 필드에 동의어 맵을 할당하면 해당 필드를 대상으로 하는 쿼리 용어가 동의어 맵의 규칙을 사용하여 쿼리 시간에 확장됩니다. 이 특성은 기존 필드에서 변경할 수 있습니다. 복합 필드의 경우 null 또는 빈 컬렉션이어야 합니다.
필드 Edm.ComplexType 또는 Collection(Edm.ComplexType)형식의 필드인 경우 하위 필드 목록입니다. 단순 필드의 경우 null 비어 있어야 합니다. 하위 필드를 사용하는 방법과 시기에 대한 자세한 내용은 Azure AI Search 복잡한 데이터 형식을 모델링하는 방법을 참조하세요.
차원 정수. 벡터 필드에 필요합니다. **포함 모델의 출력 포함 크기와 일치해야 합니다. 예를 들어 인기 있는 Azure OpenAI 모델 text-embedding-ada-002출력 차원은 1536이므로 해당 벡터 필드에 대해 설정할 차원이 됩니다. 차원 특성에는 각각 최소 2개 및 최대 2048개의 부동 소수점 값이 있습니다.
vectorSearchConfiguration 벡터 필드 정의에 필요합니다. 벡터 필드에 사용되는 "vectorSearch" 알고리즘 구성 이름을 지정합니다. 필드를 만든 후에는 vectorSearchConfiguration의 이름을 변경할 수 없지만 인덱스의 알고리즘 구성 속성을 변경할 수 있습니다. 이렇게 하면 알고리즘 유형 및 매개 변수를 조정할 수 있습니다.

메모

필터링 가능, 정렬 가능 또는 패싯 가능 형식 Edm.String 필드는 최대 32킬로바이트 길이일 수 있습니다. 이러한 필드의 값은 단일 검색 용어로 처리되고 Azure AI Search에서 용어의 최대 길이는 32KB이기 때문입니다. 이보다 많은 텍스트를 단일 문자열 필드에 저장해야 하는 경우 필터링 가능하고 정렬 가능하며 패싯 가능을 인덱스 정의에서 false 명시적으로 설정해야 합니다.

필드를 검색 가능, 필터링 가능, 정렬 가능 또는 패싯 가능으로 설정하면 인덱스 크기 및 쿼리 성능에 영향을 줍니다. 쿼리 식에서 참조할 수 없는 필드에는 이러한 특성을 설정하지 마세요.

필드를 검색 가능, 필터링 가능, 정렬 가능 또는 패싯 가능으로 설정하지 않은 경우 쿼리 식에서 필드를 참조할 수 없습니다. 이는 쿼리에 사용되지 않지만 검색 결과에 필요한 필드에 유용합니다.

normalizers

문자 필터와 토큰 필터의 사용자 정의 조합이 있는 사용자 지정 정규화기 정의합니다. 인덱스에서 사용자 지정 정규화를 정의한 후 필드 정의이름으로 지정할 수 있습니다.

속성 묘사
이름 필수. 사용자 정의 사용자 지정 정규화기를 지정하는 문자열 필드입니다.
charFilters 사용자 지정 정규화기에서 사용됩니다. 사용자 지정 정규화기에서 사용할 수 사용 가능한 문자 필터 중 하나 이상일 수 있습니다. 매핑pattern_replace
tokenFilters 사용자 지정 정규화기에서 사용됩니다. 사용자 지정 표준 변환기에서 사용할 수 사용 가능한 토큰 틸터 중 하나 이상이 될 수 있습니다. arabic_normalization비시폴딩cjk_width엘리전german_normalizationhindi_normalizationindic_normalizationpersian_normalizationscandinavian_normalizationscandinavian_foldingsorani_normalization소문자대문자

scoringProfiles

점수 매기기 프로필은 전체 텍스트 검색에 적용됩니다. 프로필은 인덱스에 정의되며 프로필에 정의된 조건을 충족하는 일치하는 문서에 더 높은 검색 점수를 부여할 수 있는 사용자 지정 논리를 지정합니다. 여러 채점 프로필을 만든 다음 쿼리에 할당할 수 있습니다.

사용자 지정 프로필을 만드는 경우 defaultScoringProfile설정하여 기본값으로 설정할 수 있습니다. 자세한 내용은 검색 인덱스점수 매기기 프로필 추가를 참조하세요.

시멘틱

의미 체계 구성은 순위, 캡션, 강조 표시 및 답변에 대한 의미 체계 검색에서 사용되는 필드를 구성하는 데 사용되는 인덱스 정의의 일부입니다. 의미 체계 구성은 제목 필드, 우선 순위가 지정된 콘텐츠 필드 및 우선 순위가 지정된 키워드 필드로 구성됩니다. 세 하위 속성 각각에 대해 하나 이상의 필드를 지정해야 합니다(titleField, prioritizedKeywordsFields 및 prioritizedContentFields). Edm.String 또는 Collection(Edm.String) 형식의 모든 필드를 의미 체계 구성의 일부로 사용할 수 있습니다.

의미 체계 검색을 사용하려면 쿼리 시 의미 체계 구성의 이름을 지정해야 합니다. 자세한 내용은 의미 체계 쿼리만들기를 참조하세요.

{
   "name": "hotels",  
   "fields": [ omitted for brevity ],
   "suggesters": [ omitted for brevity ],
   "analyzers": [ omitted for brevity ],
   "semantic": {
     "configurations": [
       {
         "name": "name of the semantic configuration",
         "prioritizedFields": {
           "titleField": {
                 "fieldName": "..."
               },
           "prioritizedContentFields": [
             {
               "fieldName": "..."
             },
             {
               "fieldName": "..."
             }
           ],
           "prioritizedKeywordsFields": [
             {
               "fieldName": "..."
             },
             {
               "fieldName": "..."
             }
           ]
         }
       }
     ]
   }
}
속성 묘사
이름 필수. 의미 체계 구성의 이름입니다.
prioritizedFields 필수. 의미 체계 순위, 캡션, 강조 표시 및 답변에 사용할 제목, 콘텐츠 및 키워드 필드를 설명합니다. 세 가지 하위 속성(titleField, prioritizedKeywordsFields 및 prioritizedContentFields) 중 하나 이상을 설정해야 합니다.
prioritizedFields.titleField 의미 체계 순위, 캡션, 강조 표시 및 답변에 사용할 제목 필드를 정의합니다. 인덱스의 제목 필드가 없는 경우 이 필드를 비워 둡니다.
prioritizedFields.prioritizedContentFields 의미 체계 순위, 캡션, 강조 표시 및 답변에 사용할 콘텐츠 필드를 정의합니다. 최상의 결과를 위해 선택한 필드에 자연어 형식의 텍스트가 포함되어야 합니다. 배열의 필드 순서는 해당 우선 순위를 나타냅니다. 콘텐츠가 길면 우선 순위가 낮은 필드가 잘려질 수 있습니다.
prioritizedFields.prioritizedKeywordsFields 의미 체계 순위, 캡션, 강조 표시 및 답변에 사용할 키워드 필드를 정의합니다. 최상의 결과를 얻으려면 선택한 필드에 키워드 목록이 포함되어야 합니다. 배열의 필드 순서는 해당 우선 순위를 나타냅니다. 콘텐츠가 길면 우선 순위가 낮은 필드가 잘려질 수 있습니다.

유사성

2020년 7월 15일 이전에 만든 서비스에 적용되는 선택적 속성입니다. 이러한 서비스의 경우 2020년 7월에 도입된 BM25 순위 알고리즘을 사용하도록 이 속성을 설정할 수 있습니다. 유효한 값에는 "#Microsoft.Azure.Search.ClassicSimilarity"(이전 기본값) 또는 "#Microsoft.Azure.Search.BM25Similarity"포함됩니다.

2020년 7월 이후에 생성된 모든 서비스의 경우 이 속성을 설정해도 효과가 없습니다. 모든 최신 서비스는 전체 텍스트 검색을 위한 유일한 순위 알고리즘으로 BM25를 사용합니다. 자세한 내용은 Azure AI Search순위 알고리즘을 참조하세요.

제안기

자동 완성 및 제안과 같은 부분 쿼리에서 일치하기 위한 접두사를 저장하는 구문을 지정합니다.

속성 묘사
이름 필수. 제안기의 이름입니다.
sourceFields 필수. 자동 완성 또는 제안된 결과를 사용하도록 설정하는 하나 이상의 문자열 필드입니다.
searchMode 필수이며 항상 analyzingInfixMatching. 쿼리 문자열의 모든 용어에서 일치가 발생되도록 지정합니다.

vectorSearch

vectorSearch 개체를 사용하면 벡터 검색 속성을 구성할 수 있습니다. 알고리즘 구성만 현재 구성할 수 있습니다. 이렇게 하면 벡터 필드에 사용되는 알고리즘 형식 및 알고리즘 매개 변수를 구성할 수 있습니다. 여러 구성을 사용할 수 있습니다. 벡터 필드에서 참조하는 모든 구성은 수정하거나 삭제할 수 없습니다. 참조되지 않은 모든 구성은 수정하거나 삭제할 수 있습니다. 필드 컬렉션의 벡터 필드 정의는 필드가 사용하는 벡터 검색 알고리즘 구성(vectorSearchConfiguration 속성을 통해)을 지정해야 합니다.

"vectorSearch": {
    "algorithmConfigurations": [
        {
            "name": "my-vector-config",
            "kind": "hnsw",
            "hnswParameters": {
                "m": 4,
                "efConstruction": 400,
                "efSearch": 500,
                "metric": "cosine"
            }
        }
    ]
}
속성 묘사
이름 필수. 알고리즘 구성의 이름입니다.
종류 사용할 알고리즘 형식입니다. HNSW(계층적 탐색 가능 Small World) 알고리즘인 'hnsw'만 지원됩니다.
hnswParameters 선택적. "hnsw" 알고리즘에 대한 매개 변수입니다. 이 개체를 생략하면 기본값이 사용됩니다.

hnswParameters

이 개체는 알고리즘 매개 변수를 hnsw 사용자 지정을 포함합니다. 모든 속성은 선택 사항이며 생략된 경우 기본값이 사용됩니다.

속성 묘사
메트릭 문자열. 벡터 비교에 사용할 유사성 메트릭입니다. hnsw허용되는 값은 "cosine", "euclidean" 및 "dotProduct"입니다. 기본값은 "cosine"입니다.
m 정수. 생성 중에 모든 새 요소에 대해 생성된 양방향 링크 수입니다. 기본값은 4입니다. 허용되는 범위는 4~10입니다. 값이 클수록 그래프가 더 조밀해져 쿼리 성능이 향상되지만 더 많은 메모리와 계산이 필요합니다.
efConstruction 정수. 인덱싱 중에 사용되는 가장 가까운 인접 항목에 대한 동적 목록의 크기입니다. 기본값은 400입니다. 허용되는 범위는 100~1000입니다. 값이 클수록 인덱스 품질이 향상되지만 더 많은 메모리와 계산이 필요합니다.
efSearch 정수. 검색 시간 동안 사용되는 가장 가까운 인접 항목이 포함된 동적 목록의 크기입니다. 기본값은 500입니다. 허용되는 범위는 100~1000입니다. 이 매개 변수를 늘리면 검색 결과가 향상될 수 있지만 쿼리 성능이 저하됩니다.

efSearch 쿼리 시간 매개 변수이므로 기존 필드가 알고리즘 구성을 사용하는 경우에도 이 값을 업데이트할 수 있습니다.

참고 항목