본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 28. 08:21

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)
aliasSQL 이름
...

배포 이름 (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가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0