전체 글 1162

[Azure] AI Search - SynonymMap 적용

개요2024.12.02-[Azure] AI Search - Synonym map, 2024.12.03-[Azure] AI Search - Synonym map 생성/조회/삭제에서 SynonymMap의 개념과 python으로 다루는 방법을 간단하게 알아보았다. 이번 글에선 SynonymMap을 실제로 인덱스에 적용하는 방법을 정리해 둔다.   테스트 데이터먼저 아래와 같은 데이터가 있다고 하자.이 데이터를 저장하기 위해서 아래와 같은 필드를 가진 스키마로 인덱스를 생성했다.{ "name": "testIndex", "fields": [ { "name": "docid", "type": "Edm.String", "key": true, "retrievable": tru..

Azure 2024.12.20

[Azure] AI Search - Synonym map 생성/조회/삭제

개요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-crea..

Azure 2024.12.19

[Azure] AI Search - Synonym map

개요최근 Azure의 AI Search 서비스를 다루게 되었는데, 동의어 처리에 대한 요구사항이 존재한다. 관련해서 AI Search의 동의어 처리를 제공하는 Synonym map에 대해 알아보자.  Synonym mapSynonym map은 여러 인덱스가 공유할 수 있는 최상위 리소스이며, 문자열 필드에 적용된다. 검색 서비스에 동등한 용어를 연관시켜 쿼리 범위를 확장할 수 있기 때문에 기술 전문 용어, 속어 등이 포함되는 경우 활용할 수 있다.  규칙Apache Solr이라는 오픈소스 사양을 따르며 solr은 동등성, 그리고 명시적 매핑이라는 두 가지 종류의 규칙을 지원한다.각 규칙은 Synonym map 당 5,000개(무료 서비스 기준) 또는 20,000개의 규칙을 정의할 수 있고, 각 규칙은 최..

Azure 2024.12.18

[Azure] AI Search - Index 다루기

개요2024.11.01-[Azure] AI Search - 인덱스에서 인덱스의 개념을 알아보았었다. 이번 글에서는 Python Azure SDK를 사용해 인덱스를 생성하고 조회하는 등의 작업을 수행해보려고 한다. AI Search 서비스 리소스는 이미 생성되어 있다고 가정한다.  Index 생성Index는 SearchIndex라는 객체를 생성한 뒤, SearchIndexClient.create_or_update_index 메서드를 호출하여 생성할 수 있다. 먼저 아래 예시 코드와 같이 Index 스키마를 구성한다. from azure.core.credentials import AzureKeyCredentialfrom azure.search.documents.indexes import SearchIndex..

Azure 2024.12.17

[FastAPI] APIRouter - 모듈 분리

개요FastAPI 공식 문서를 보면 하나의 파일에 경로를 구성하게끔 되어있는데, 사실 애플리케이션을 개발할 때 하나의 파일에 모든 내용을 넣을 수 있는 경우는 거의 없다. FastAPI는 모듈 분리를 할 수 있도록 APIRouter라는 기능을 제공하는데, 이번 글에서는 관련 내용을 정리해 둔다.  APIRouter 정의APIRouter는 경로를 그룹화하는 데 사용하며, 애플리케이션을 구조화할 수 있게 하는 역할을 한다. 일종의 작은 FastAPI 객체라고 생각해도 된다.사용할 때는 APIRouter 클래스를 임포트 한 뒤, APIRouter 객체를 생성하고, FastAPI 객체에 대한 경로를 데코레이터로 추가했던 것과 동일한 방식으로 APIRouter 객체에 대한 경로를 데코레이터로 추가한다. 아래는 예..

Python 2024.12.16

[Airflow] Dag Import Error 확인하기

개요Airflow를 사용하다 보면 Web UI에서 다음과 같은 Import 에러가 발생하는 모습을 확인할 수 있다.Import Errors가 발생하면 Dag 활성화 자체가 되지 않기 때문에 주기적으로 동작 확인이 필요한 경우에는 별도로 모니터링이 필요해 보였다. 관련하여 알람 등을 구성하기 위해 프로그래밍적인 방법으로 확인할 수 있는 방법이 있는지 확인해본다.   import_error 테이블잠깐 Airflow Meta DB 스키마를 확인해 봤더니 바로 import_error 테이블이 존재하는 모습을 확인할 수 있다.-- airflow.import_error definitionCREATE TABLE `import_error` ( `id` int NOT NULL AUTO_INCREMENT, `times..

Apache Airflow 2024.12.13

[PyMySQL] Decimal 데이터를 python float으로 변환

개요Python에서 PyMySQL을 사용해 데이터를 조회하다 보면 다음과 같이 Decimal이라는 객체로 값을 반환받는 경우가 있다.이런 데이터를 Python float이나 double로 취급하고 싶다. 방법을 적어둔다.   Decimal데이터베이스에서 Decimal은 고정 소수점 타입으로, 실수의 값을 정확하게 표현하기 위해 사용한다. 고정 소수점 방식은 소수부의 자릿수를 고정하여 표현한다. DECIMAL(M,D)M은 소수부와 정수부를 포함한 전체 자리수를자릿수를 의미하고, D가 소수부의 자릿수를 나타낸다.  converters.conversionsPyMySQL은 conversion dictionary라는 개념으로 데이터베이스의 데이터 타입을 Python의 데이터 타입으로 변환하는 규칙을 사용하고 있다..

Python 2024.12.12

[Python] filter - iterable 조건 필터링

개요현재 Python 개발을 진행 중인데, 딕셔너리의 키가 특정 조건을 만족하는 것만 필터링하려고 한다. 적당한 방법을 찾아보다 python 내장 함수인 filter 함수에 대해 알게 되어 기록해 둔다.  filter특정 조건을 만족하는 요소들로 이루어진 iterator를 반환한다.filter(function, iterable) 바로 사용 예시를 보는 편이 이해하기 좋을 것 같다. 다음과 같은 숫자로 이루어진 리스트가 있다고 하자.numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]이 리스트에서 짝수에 해당하는 값만 추출하고 싶다. 그러면 아래와 같이 짝수인 경우가 참이 되는 함수를 정의하여 전달하면 된다.def is_even(num): return num % 2 == 0filtere..

Python 2024.12.11

[Python] Dictionary 키 삭제

개요이전에 2021.10.03-[자료 구조] 동명이인 찾기 / 딕셔너리에서 딕셔너리 내의 특정 키 값을 삭제하는 방법을 적어두었었다. 그런데 삭제하려는 키의 값이 딕셔너리에 항상 있을 거라는 보장이 없는 경우도 있을 수 있다.관련해서 딕셔너리 내의 키 값을 안전하게 삭제하는 방법을 몇 가지 더 알아본다.   DEL먼저 기존에 알았던 방법을 다시 적어둔다. del 키워드를 사용하면 특정 변수나 딕셔너리 내의 키 값을 삭제할 수 있다. test_data = {k:k for k in range(5)}del test_data[0]  poppop 함수를 사용하면 딕셔너리에서 키 값을 삭제하면서 값을 반환받을 수 있다.test_data = {k:k for k in range(5)}test_data.pop(4)이 때..

Python 2024.12.10

[Python] hashlib - 해시 함수 다루기

HashingHashing이란 임의 길이의 데이터를 고정된 길이의 데이터로 변화시켜 저장하는 것을 말한다.해싱을 수행하는 함수나 알고리즘을 해시 함수, 해시 알고리즘이라 하고, 해시 함수의 결과를 해시 값, 해시 코드, 해시 체크섬 또는 해시라고 일컫는다.해시는 빠른 데이터 검색을 위한 해시 테이블이라는 자료 구조에 사용하거나, 해시 값으로는 원문을 알아내기 힘들다는 점을 이용해 값을 암호화하는 데 사용할 수도 있다. 또는 전송된 데이터의 무결성을 확인하는 데 사용하기도 한다.  hashlibPython에서 해시 함수를 사용할 때는 hashlib라는 모듈을 사용한다. hashlib에는 암호화 알고리즘인 SHA1, SHA224, SHA256, MD5 등등의 여러 알고리즘을 포함하고 있다.별도 설치 없이 바..

Python 2024.12.09