[Azure] AI Search - 인덱스 필드
개요
지금까지 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