개요
2024.12.02-[Azure] AI Search - Synonym map에서 Azure AI Search의 기능 중 하나인 Synonym map에 대해 알아보았다. 이번 글에서는 Python 상에서 Synonym map을 생성하고 조회하고 삭제하는 방법을 정리해두려고 한다.
+ 필드에 적용하는 방법은 다른 글로 적어두겠다.
서비스 인증
Azure Python SDK로 AI Search에 대한 서비스 인증을 하기 위해서는 먼저 AI Search 리소스가 생성되어있어야 한다. 현재 직접 리소스를 생성할 수 있는 환경이 되어 있지 않아 이 글에서는 이미 생성되어 있다고 가정하겠다.
서비스 생성 자체는 https://learn.microsoft.com/en-us/azure/search/search-create-service-portal을 참고하면 좋을 것 같다.
Azure AI Search 서비스를 생성했다면, 이제 서비스 인증에 필요한 엔드포인트와 API KEY를 확인해야 한다. 서비스 엔드포인트는 AI Search 리소스의 URL이 해당되는 것으로 보인다.
그리고 API KEY는 Keys 메뉴에서 생성하여 얻을 수 있는 것 같다.
이 두 가지 정보와 AzureKeyCredential, SearchIndexClient를 사용하여 클라이언트를 구성한다.
from azure.core.credentials import AzureKeyCredential
from azure.search.documents.indexes import SearchIndexClient
credential = AzureKeyCredential(AZURE_SEARCH_API_KEY)
client = SearchIndexClient(
endpoint=AZURE_SEARCH_SERVICE,
credential=credential
)
이 부분은 함수로 만들어서 재사용하면 좋을 것 같다.
생성
Azure AI Search와 관련된 리소스는 해당 클래스 객체를 생성하고, create 함수를 호출하는 시점에 클라우드 환경에 생성되는 것 같다.
synonym map 관련 클래스는 다음과 같이 임포트하여 사용한다.
from azure.search.documents.indexes.models import SynonymMap
이제 생성자에 이름과 규칙을 전달한 뒤, create_synonym_map 또는 create_or_update_synonym_map 함수를 호출한다.
synonyms = [
"USA, United States, United States of America",
"Washington, Wash. => WA",
]
synonym_map = SynonymMap(name="test-synonym", synonyms=synonyms)
result = client.create_or_update_synonym_map(synonym_map)
만약 synonym map의 갱신이 필요하다면 동일하게 SynonyMap 객체를 생성하고 create_or_update_synonym_map 함수를 사용하면 된다.
조회
생성한 synonym map은 get_synonym_map_names 함수로 목록을 확인하거나 get_synonym_map 함수로 특정 synonym map의 정보를 확인할 수 있다.
- get_synonym_map_names
client.get_synonym_map_names()
- get_synonym_map
print(client.get_synonym_map('test-synonym'))
삭제
생성한 synonym map은 delete_synonym_map 함수로 삭제할 synonym map의 이름을 전달하여 삭제할 수 있다.
client = get_index_client()
client.delete_synonym_map('test-synonym')
잘 삭제되었는지는 synonym map 목록을 확인하는 등의 방법으로 확인할 수 있다.