Azure

[Azure] AI Search - 인덱스 필드

비번변경 2024. 12. 30. 16:06

개요

지금까지 AI Search를 다루면서 인덱스가 뭔지, 어떻게 다루는지 위주로 살펴보았는데, 인덱스 스키마의 중요한 요소인 필드에 대해서는 따로 다룬 적이 없는 것 같다.

이번 글에서는 인덱스의 필드에 대해서 정리해 둔다.

 

 

필드

Document를 정의하는 요소로, Document를 식별할 수 있는 키, 검색할 수 있는 텍스트 저장용 필드, Facet 또는 정렬 지원 필드, 심지어는 사용자가 볼 수 없는 데이터에 대한 필드 등으로 구성된다. 

 

 

유형

Azure AI Search에서 사용하는 필드는 크게 세 종류로 구분하는 것 같은데, 그 종류는 다음과 같다.

 

SimpleField

단순 필드. 텍스트 분석이 필요하지 않은 데이터를 저장하고, 필터링, 정렬, 그룹화 등에 사용한다.

검색 가능한 텍스트로 인덱싱 되지 않기 때문에 사용자가 검색 쿼리를 사용해 이 필드에 대한 검색을 수행할 수는 없다.

주로 숫자, 날짜, 부울 등 정형화된 텍스트 데이터에 사용한다.

SimpleField(name="HotelId", type=SearchFieldDataType.String, key=True)

 

SearchableField

검색 가능한 필드. 텍스트 분석을 통해 인덱싱 된 데이터를 저장한다. 주로 본문 텍스트, 설명, 제목 등 사용자가 검색할 수 있는 텍스트 데이터를 저장하기 위해 사용한다.

SearchableField(name="HotelName", type=SearchFieldDataType.String, sortable=True)

 

ComplexField

복합 필드. 계층적인 데이터를 처리하기 위한 중첩 구조에 사용한다. 주로 객체, 배열 등의 데이터를 저장하는 데 사용한다.

ComplexField(name="Address", fields=[
            SearchableField(name="StreetAddress", type=SearchFieldDataType.String),
            SearchableField(name="City", type=SearchFieldDataType.String, facetable=True, filterable=True, sortable=True),
            SearchableField(name="StateProvince", type=SearchFieldDataType.String, facetable=True, filterable=True, sortable=True),
            SearchableField(name="PostalCode", type=SearchFieldDataType.String, facetable=True, filterable=True, sortable=True),
            SearchableField(name="Country", type=SearchFieldDataType.String, facetable=True, filterable=True, sortable=True),
        ])

 

 

속성

필드는 유형뿐만 아니라 속성에 따라서도 사용 방식이 결정된다. 관련하여 정리한다.

속성 설명
searchable 텍스트 또는 벡터 검색 가능.
텍스트 필드에 대해 단어 분리, 어휘 분석이 적용된다.
filterable $filter 쿼리에서 참조된다.
검색과 달리 단어 분리나 어휘 분석이 수행되지 않기 때문에 정확하게 일치하는 항목만 비교한다.
sortable 필드 기반 정렬 구성에 사용한다.
타입이 Collection(Edm.String) 필드는 sortable을 활성화할 수 없다.
facetable 카테고리 별 적중 횟수가 포함된 검색 결과 표시
key 인덱스 내 문서에 대한 고유 식별자.
하나의 필드만 키 필드로 선택해야 하며, Edm.String 형식의 데이터여야 한다.
retrievable 검색 결과에서 필드를 반환할 수 있는지를 결정한다.

 

 

참고 문서

https://learn.microsoft.com/ko-kr/azure/search/search-what-is-an-index