
HorizonDB에서의 Azure AI 활용
요약
HorizonDB의 azure_ai 확장을 사용하여 PostgreSQL에서 Azure AI의 생성, 랭킹, 임베딩 모델을 활용하는 방법을 설명합니다. 모델 배포부터 엔드포인트 설정, SQL 쿼리 적용까지의 과정을 단계별로 안내합니다.
핵심 포인트
- HorizonDB의 azure_ai 확장을 통해 PostgreSQL 내에서 생성형 AI 기능 구현 가능
- Azure AI의 생성, 랭킹, 임베딩 모델을 SQL 쿼리에서 직접 활용
- 모델 배포 및 엔드포인트 설정을 통한 수동 모델 관리 프로세스 제공
- 향후 제로 설정(Zero-setup) 모드의 AI 모델 관리 기능 도입 예정
HorizonDB의 azure_ai 확장은 PostgreSQL에 생성형 AI (Generative AI) 기능을 추가하여, 사용자가 Azure AI의 생성 (Generation), 랭킹 (Ranking), 임베딩 (Embedding) 모델을 활용할 수 있도록 합니다. 여기서는 기본 모델을 정의하고, 엔드포인트 (Endpoints)를 설정하며, 이를 등록한 뒤 SQL 쿼리에서 사용하는 방법을 보여주는 4단계 예제가 있습니다.
1. 확장 기능 허용 및 설치
azure_ai 확장은 파라미터 그룹 (Parameter Group)의 azure.extensions에 설정되어야 합니다:
활성화되면, CREATE EXTENSION을 할 수 있습니다:
postgres=> SHOW azure.extensions;
azure.extensions
...
함수들은 사용할 수 있지만, 아직 AI 모델에 대한 액세스 권한이 없습니다:
postgres=> SELECT azure_ai.generate(
'Hello'
);
...
현재 프라이빗 프리뷰 (Private Preview) 단계인 AI 모델 관리 (AI Model Management) 기능이 HorizonDB에 도입될 예정입니다. 이는 기본적으로 azure_ai를 위한 제로 설정 (Zero-setup) 모드이지만, 지금은 수동으로 진행하겠습니다.
2. Azure에 모델 배포하기
Microsoft Foundry | Azure OpenAI로 이동하여
생성한 후, 다음 단계는 모델을 배포하기 위해 "리소스로 이동"하는 것입니다:
모델 카탈로그 (model catalog)에서 LLM (Large Language Model) 작업 및 생성 목적으로 채팅 모델 (chat models)을 선택합니다:
"이 모델 사용 (Use this model)"을 클릭하고 gpt-4o-mini를 배포합니다:
URL과 API 키는 홈 섹션 (Home section)에 표시됩니다:
사용 가능한 모델에 대한 세부 정보는 배포 섹션 (Deployments section)에 있습니다:
Python 샘플에서 파라미터 (parameters)를 가져올 수도 있습니다:
endpoint = "https://frankpachot-ai.openai.azure.com/"
model_name = "gpt-4o-mini"
deployment = "gpt-4o-mini"
...
이 정보는 PostgreSQL에서 모델을 등록하는 데 사용됩니다.
여기서는 직접 사용하겠지만, 프로덕션 (production) 환경에서는 키를 SQL에 하드코딩하는 대신 비밀 관리 시스템 (secrets management system)에 저장해야 합니다.
3. PostgreSQL에 모델 등록하기
HorizonDB에서는 model_registry.model_add()를 사용하여 AI 모델을 추가할 수 있으며, 이 함수는 다음과 같은 파라미터 (parameters)를 받습니다:
| 파라미터 (parameter) | 의미 (meaning) |
|---|---|
| alias | SQL 이름 |
| ... |
배포 이름 (deployment name)은 Azure에서 정의된 것과 정확히 일치해야 합니다. 이것은 모델 이름이 아니라 배포 식별자 (deployment identifier)입니다.
다음은 제가 배포한 채팅 모델 (chat model)의 정보를 사용한 등록 예시입니다:
postgres=> SELECT model_registry.model_add(
'default-chat', -- alias
'https://frankpachot-ai.openai.azure.com/', -- azure_endpoint
...
이제 PostgreSQL에서 Azure OpenAI 배포를 호출할 수 있습니다.
이 솔루션을 사용하면 데이터베이스 자체가 모델을 호스팅하지 않습니다. 데이터베이스는 엔드포인트 (endpoint), 배포 (deployment), 키 (key)와 같이 모델을 호출하는 데 필요한 정보만을 포함하지만, Azure OpenAI로의 호출은 사용자에게 투명하게(transparent) 이루어집니다.
4. SQL 쿼리에서 모델 사용하기
이제 azure_ai.generate()를 사용하여 생성형 AI (generative AI)를 위한 등록된 모델을 사용할 수 있습니다:
postgres=> SELECT azure_ai.generate(
'Who is Slonik and how does he look like? context:'|| version()
, 'default-chat'
...
모델 이름인 default-chat은 이 함수의 기본값입니다. 따라서 생략할 수 있습니다.
모델을 텍스트 생성에 사용하는 대신, azure_ai.is_true()를 사용하여 텍스트를 검증하는 데 활용할 수도 있습니다.
우리가 좋아하는 데이터베이스의 올바른 이름을 확인해 보겠습니다:
postgres=> select azure_ai.is_true( format (
'%s is the right name for Slonik''s database', unnest
)), string_agg(unnest,',') from unnest(ARRAY[
...
좋습니다, gpt-4o-mini에 따르면 "The Elephant"는 PostgreSQL의 유효한 이름입니다.
채팅 모델은 비정형 텍스트 (unstructured text)에서 구조화된 정보 (structured information)를 추출하는 데에도 사용할 수 있습니다. 예를 들어, version() 배너에서 제가 관심 있는 것은 PostgreSQL 호환 버전과 관리형 서비스 (managed service)의 이름입니다:
postgres=> SELECT version();
version
...
임베딩 (embeddings)을 생성하기 위해서는 전용 모델을 배포해야 합니다:
채팅 모델 (chat models)에 사용했던 것과 동일한 방식으로, 이 임베딩 모델에 접근하기 위한 엔드포인트 (endpoint), 이름 (name), 그리고 키 (key)를 가져왔습니다:
postgres=> SELECT model_registry.model_add(
'default-embedding', -- alias
'https://franckpachot-ai.openai.azure.com/', -- azure_endpoint
...
모델 배포를 등록할 때 정의한 별칭 (alias)인 default-embedding을 사용하여 특정 텍스트에 대한 임베딩을 생성할 수 있습니다:
postgres=> SELECT azure_openai.create_embeddings(
'default-embedding',
'hello world'
);
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기




