다음을 통해 공유


Azure AI 확장의 의미 체계 연산자(미리 보기)

Azure AI 확장 기능은 고급 GenAI(생성형 AI) 기능을 PostgreSQL SQL에 직접 통합하는 획기적인 기능인 의미 체계 연산자를 소개합니다. 채팅 완료 및 기타 Azure AI 배포와 같은 모델을 기반으로 하는 이러한 연산자를 통해 개발자는 데이터베이스 내에서 직접 GenAI 기반 애플리케이션을 빌드할 수 있습니다. 이를 통해 텍스트를 이해하고, 추론하고, 구조화된 출력을 생성하는 새로운 기능이 제공됩니다.

주요 기능

의미 체계 연산자는 사용자에게 생성 AI 기능을 사용하는 네 가지 핵심 SQL 함수를 제공합니다.

  • azure_ai.generate(): LLM(대규모 언어 모델)을 사용하여 텍스트 또는 구조화된 출력을 생성합니다.
  • azure_ai.is_true(): 지정된 문이 사실일 가능성을 평가합니다.
  • azure_ai.extract(): 텍스트에서 구조화된 기능이나 엔터티를 추출합니다.
  • azure_ai.rank(): 지정된 쿼리와의 관련성을 기준으로 문서 목록을 다시 순위 지정합니다.

AI Foundry 엔드포인트가 azure_ai.set_setting 함수를 사용하여 등록되었으며, 각 함수는 이를 통해 원활한 통합과 사용자 제어를 보장합니다.

의미 체계 연산자 이해

Azure AI 확장의 의미 체계 연산자는 PostgreSQL 데이터베이스 내에서 직접 복잡한 AI 기반 작업을 간소화하도록 설계되었습니다. 이러한 연산자를 사용하면 사용자가 SQL 워크플로에 생성 AI 기능을 원활하게 통합하여 고급 텍스트 생성, 진리 평가, 엔터티 추출 및 문서 순위를 사용할 수 있습니다. 각 연산자는 사용 편의성과 유연성을 위해 최적화되어 개발자가 최소한의 노력으로 지능형 애플리케이션을 빌드할 수 있도록 합니다.

azure_ai.generate()

이 연산자는 LLM을 사용하여 텍스트나 구조화된 출력을 생성합니다.

다음과 같은 입력 매개 변수를 지원합니다.

논쟁 유형 설명
prompt text LLM에 보낼 사용자 프롬프트.
json_schema(선택 사항) JsonB DEFAULT '' LLM 응답이 준수해야 하는 구조화된 출력의 JSON 스키마. 구조화된 출력을 위해서는 Open AI 표기법을 따라야 합니다.
model(선택 사항) text DEFAULT "gpt-4.1" Azure AI Foundry의 모델 배포 이름.
system_prompt(선택 사항) text DEFAULT "You are a helpful assistant." LLM에 전송할 시스템 프롬프트.

기본적으로 연산자는 생성된 응답을 포함하는 text 값을 반환합니다. json_schema 인수가 제공되면 출력은 지정된 스키마에 맞는 구조화된 JsonB 개체로 반환됩니다.

사용 예:

SELECT azure_ai.generate(
  'Rewrite the following comment to be more polite: ' comment_text
) AS polite_comment
FROM user_comments;

SELECT review, azure_ai.generate(
    prompt        => 'Rewrite the following comment to be more polite and return the number of products mentioned:' || review,
    json_schema   => '{ 
                        "name": "generate_response", 
                        "description": "Generate a response to the user",
                        "strict": true, 
                        "schema": { 
                          "type": "object", 
                          "properties": { 
                            "comment": { "type": "string" },
                            "num_products": { "type": "integer" } 
                          }, 
                          "required": ["comment", "num_products"],
                          "additionalProperties": false 
                          } 
                        }',
     model  => 'gpt-4.1-mini'
) as polite_comment_with_count 
FROM 
    Reviews;

azure_ai.is_true()

이 연산자는 지정된 문장이 참일 가능성을 평가하여 boolean 값을 반환하고, 결과가 확실하지 않으면 NULL을 반환합니다.

다음과 같은 입력 매개 변수를 지원합니다.

논쟁 유형 설명
statement text true 또는 false로 평가될 문.
model(선택 사항) text DEFAULT "gpt-4.1" Azure AI Foundry의 모델 배포 이름.

사용 예:

SELECT azure_ai.is_true(
  'The review talks about the product: '
  product_name
  ' Review: '
  review_text
) AS is_relevant_review
FROM product_reviews;

azure_ai.extract()

이 연산자는 사용자가 정의한 레이블을 기반으로 텍스트에서 구조화된 기능이나 엔터티를 추출합니다.

다음과 같은 입력 매개 변수를 지원합니다.

논쟁 유형 설명
document text 엔터티와 기능을 포함하는 문서.
data array[text] 입력 텍스트에서 추출할 고유한 엔터티 형식을 나타내는 레이블 또는 기능 이름의 배열.
model(선택 사항) text DEFAULT "gpt-4.1" Azure AI Foundry의 모델 배포 이름.

연산자는 해당 레이블에 매핑된 추출된 개체를 포함하는 JsonB 개체를 반환합니다.

사용 예:

SELECT azure_ai.extract(
   'The headphones are not great. They have a good design, but the sound quality is poor and the battery life is short.',
   ARRAY[ 'product', 'sentiment']
);

-- Output: {"product": "headphones", "sentiment": "negative"}

SELECT azure_ai.extract(
    'The music quality is good, though the call quality could have been better. The design is sleek, but still slightly heavy for convenient travel.',
    ARRAY[
        'design: string - comma separated list of design features of the product',
        'sound: string - sound quality (e.g., music, call, noise cancellation) of the product',
        'sentiment: number - sentiment score of the review; 1 (lowest) to 5 (highest)'
    ]
);

-- Output: {"sound": "music quality is good, call quality could have been better", "design": "sleek, slightly heavy", "sentiment": 3}

azure_ai.rank()

이 연산자는 지정된 쿼리와의 관련성을 기준으로 문서의 순위를 다시 매깁니다. 크로스 인코더와 GPT 모델을 지원합니다.

다음과 같은 입력 매개 변수를 지원합니다.

논쟁 유형 설명
query text 각 문서의 관련성을 평가하고 순위를 매기는 데 사용되는 검색 문자열.
document_contents array[text] 순위를 다시 매길 문서 배열.
document_ids(선택 사항) array 입력 문서에 해당하는 문서 식별자의 배열.
model(선택 사항) text DEFAULT "cohere-rerank-v3.5" Azure AI Foundry의 모델 배포 이름. 크로스 인코더와 GPT 기반 모델을 모두 지원합니다.

연산자는 문서 ID, 순위, 관련 관련성 점수가 포함된 table을 반환합니다.

사용 예:

SELECT azure_ai.rank(
    'Best headphones for travel',
    ARRAY[
        'The headphones are lightweight and foldable, making them easy to carry.',
        'Bad battery life, not so great for long trips.',
        'The sound quality is excellent, with good noise isolation.'
    ]
)

SELECT azure_ai.rank(
  query => 'Clear calling capability that blocks out background noise',
  document_contents => ARRAY[
                        'The product has a great battery life, good design, and decent sound quality.',
                        'These headphones are perfect for long calls and music.',
                        'Best headphones for music lovers. Call quality could have been better.',
                        'The product has a good design, but it is a bit heavy. Not recommended for travel.'
                      ],
  document_ids => ARRAY['Review1', 'Review2', 'Review3', 'Review4'],
  model => 'gpt-4.1'
) AS ranked_reviews;

시작하는 방법

PostgreSQL 데이터베이스에서 의미 체계 연산자를 사용하려면 다음 단계를 따릅니다.

.generate(), .extract().is_true() 연산자 설정

이러한 연산자는 채팅 완료 모델을 지원하며 기본적으로 gpt-4.1을 사용합니다.

  1. Azure Database for PostgreSQL 유연한 서버 인스턴스에서 azure_ai 확장을 사용하도록 설정합니다.

  2. Azure OpenAI 서비스 리소스를 만들고채팅 완료 모델을 배포합니다(예: gpt-4.1). 또는 Azure AI Foundry에서 제공하는 직관적인 환경을 통해 모델을 배포하고 관리할 수 있습니다.

  3. Azure OpenAI 엔드포인트 URLAPI 키를 기록해 둡니다.

  4. 액세스 구성:

    azure_ai 확장이 구독 키 인증을 사용하여 이 모델을 호출하도록 하려면 다음 SQL 명령을 실행합니다.

    SELECT azure_ai.set_setting('azure_openai.endpoint', 'https://<endpoint>.openai.azure.com/'); 
    SELECT azure_ai.set_setting('azure_openai.subscription_key', '<API Key>');
    

    대신 관리 ID를 사용하려면 이 문서를 참조하여 다음 단계를 수행합니다.

    • Azure Database for PostgreSQL 유연한 서버 인스턴스에 시스템 할당 관리 ID를 사용하도록 설정하고 서버를 다시 시작합니다.
    • Azure OpenAI 리소스와 상호 작용하려면 관리 ID에 "Cognitive Services OpenAI 사용자" 역할을 할당합니다.
    • azure_openai.auth_type을 '관리 ID'로 설정합니다.
    • azure_openai.endpoint를 엔드포인트 URL로 설정합니다.
  5. 이제 .generate(), .is_true(), .extract() 연산자를 호출할 준비가 되었습니다.

    gpt-4.1(기본값)을 사용한 사용 예:

    SELECT name, azure_ai.generate(
      'Generate a description for the product: ' || name
    ) AS description
    FROM products;
    

    다른 모델에서의 사용 예:

    SELECT name, azure_ai.generate(
      'Generate a description for the product: ' || name , 'gpt-4.1-mini'
    ) AS description
    FROM products;
    

.rank() 연산자 설정

.rank() 연산자는 크로스 인코더와 채팅 완료 모델을 모두 지원하며 기본적으로 크로스 인코더 Cohere-rerank-v3.5를 사용합니다.

Cohere-rerank-v3.5 크로스 인코더 사용:

  1. Azure Database for PostgreSQL 인스턴스에서 확장을 사용하도록 설정합니다.azure_ai

  2. Azure AI Foundry로 이동하여 Serverless API 구매 옵션을 사용하여 Cohere-rerank-v3.5 모델을 배포합니다.

  3. 모델의 엔드포인트 키와 순위 다시 매기기 API 경로는 다음과 유사해야 합니다. https://<deployment name>.<region>.models.ai.azure.com/<v1 or v2>/rerank.

  4. 액세스 구성:

    azure_ai 확장이 구독 키 인증을 사용하여 이 모델을 호출하도록 하려면 다음 SQL 명령을 실행합니다.

    SELECT azure_ai.set_setting('azure_ml.serverless_ranking_endpoint', '<Cohere reranker API>');
    SELECT azure_ai.set_setting('azure_ml.serverless_ranking_endpoint_key', '<API Key>');
    

    대신 관리 ID를 사용하려면 이 문서를 참조하여 다음 단계를 수행합니다.

    • Azure Database for PostgreSQL 유연한 서버 인스턴스에 시스템 할당 관리 ID를 사용하도록 설정하고 서버를 다시 시작합니다.
    • Cohere 모델과 상호 작용하려면 관리 ID에 "Azure Machine Learning 데이터 과학자" 역할을 할당합니다.
    • azure_ml.auth_type을 '관리 ID'로 설정합니다.
    • Cohere 순위 다시 매기기 API를 사용하여 azure_ml.serverless_ranking_endpoint를 설정합니다.
  5. 이제 Cohere 순위 다시 매기기 모델을 사용하여 .rank() 연산자를 호출할 준비가 되었습니다.

    SELECT azure_ai.rank(
      'Best headphones for travel',
      ARRAY[
          'The headphones are lightweight and foldable, making them easy to carry.',
          'Bad battery life, not so great for long trips.',
          'The sound quality is excellent, with good noise isolation.'
      ]
    ) AS ranked_reviews;
    

.rank()과 같은 채팅 완료 모델과 함께 gpt-4.1 연산자를 사용하려면 Azure OpenAI에 원하는 모델을 배포하고, 모델의 엔드포인트 세부 정보로 azure_ai 확장을 구성하고, 연산자를 호출할 때 모델 이름을 지정합니다.

SELECT azure_ai.set_setting('azure_openai.endpoint', 'https://<endpoint>.openai.azure.com/'); 
SELECT azure_ai.set_setting('azure_openai.subscription_key', '<API Key>');

SELECT azure_ai.rank(
 'Best headphones for travel',
  ARRAY[
      'The headphones are lightweight and foldable, making them easy to carry.',
      'Bad battery life, not so great for long trips.',
      'The sound quality is excellent, with good noise isolation.'
  ],
  'gpt-4.1'
) AS ranked_reviews;