AI 함수 사용(미리 보기)

적용 대상:✅ Microsoft Fabric의 SQL 분석 엔드포인트 및 데이터 창고

중요합니다

이 기능은 프리뷰 상태입니다.

Fabric Data Warehouse 및 SQL 분석 엔드포인트는 SQL 쿼리 내에서 직접 텍스트를 분석, 분류, 요약 및 변환하는 데 사용할 수 있는 기본 제공 AI 함수를 제공합니다. 이러한 함수를 사용하면 데이터 환경을 종료하지 않고 고급 텍스트 처리를 수행할 수 있습니다. 이 자습서에서는 AI 함수를 사용하여 텍스트를 변환하는 방법을 알아봅니다.

기능 Purpose 구문 예제
AI_ANALYZE_SENTIMENT 입력 텍스트의 감정 검색 AI_ANALYZE_SENTIMENT(<text>)
AI_CLASSIFY 제공된 레이블에 따라 텍스트 분류 AI_CLASSIFY(<text>, <class1>, <class2>, ...)
AI_EXTRACT 엔터티를 JSON 속성으로 추출 AI_EXTRACT(<text>, <class1>, <class2>, ...)
AI_SUMMARIZE 텍스트 요약 AI_SUMMARIZE(<text>)
AI_GENERATE_RESPONSE 프롬프트에 따라 응답 생성 AI_GENERATE_RESPONSE(<prompt>, <data>)
AI_TRANSLATE 입력 텍스트를 지정된 대상 언어로 번역 AI_TRANSLATE(<text>, <lang_code>)
AI_FIX_GRAMMAR 텍스트의 문법 수정 AI_FIX_GRAMMAR(<text>)

이러한 함수는 외부 AI API를 호출하여 텍스트를 처리하므로 쿼리 성능에 영향을 줄 수 있습니다. 효율성을 최적화하려면 동일한 데이터 세트의 쿼리 내에서 SELECT 반복적인 텍스트 변환을 적용하지 마십시오. 대신 AI 함수의 결과를 별도의 열 또는 준비 테이블로 미리 계산하고 구체화합니다.

경고

AI 모델이 텍스트를 처리할 수 없는 경우 함수가 반환 NULL 됩니다. 일반적인 이유는 다음과 같습니다.

  • 책임 있는 AI 규칙은 입력 텍스트에서 부적절한 콘텐츠를 차단합니다.
  • 입력 텍스트가 토큰 제한을 초과합니다. 현재 모델은 최대 15KB의 텍스트를 지원합니다.

AI 함수의 일반적인 처리 속도는 초당 20~100개 행입니다. 성능이 저하되는 경우 문제가 있는 쿼리를 문제로 보고합니다.

Prerequisites

추가 필수 구성 요소는 AI 기능 필수 구성 요소를 확인하세요.

감정 분석

이 함수는 AI_ANALYZE_SENTIMENT(text) 입력에서 감정을 분석하고 다음 값 중 하나를 반환합니다textpositivenegativemixed.neutral

Example:

SELECT AI_ANALYZE_SENTIMENT('This hotel was great!') AS sentiment;

예상 결과:positive

자세한 내용은 AI_ANALYZE_SENTIMENT(Transact-SQL)를 참조하세요.

텍스트 분류

함수는 AI_CLASSIFY(text, class1, class2, ...) 입력 text 을 제공된 범주 중 하나로 분류합니다.

Example:

SELECT AI_CLASSIFY('Room was dirty', 'service','dirt','food') AS classification;

예상 결과:dirt

자세한 내용은 AI_CLASSIFY(Transact-SQL)를 참조하세요.

텍스트에서 엔터티 추출

이 함수는 AI_EXTRACT(text, class1, class2, ...) 지정된 클래스를 기반으로 입력 text 에서 엔터티를 추출합니다.

Example:

SELECT AI_EXTRACT('Check-in was late and room dirty', 'sentiment','problem') AS extraction;

예상 결과:{"sentiment":"Negative","problem":"Dirty room"}

자세한 내용은 AI_EXTRACT(Transact-SQL)를 참조하세요.

응답 생성

함수는 주어진 AI_GENERATE_RESPONSE(prompt, data) 및 선택적 prompt를 기반으로 data 응답을 생성합니다.

Example:

SELECT AI_GENERATE_RESPONSE('Reply in 20 words:', 'The room was noisy.') AS response;

예상 결과: "소음으로 인한 불편을 끼쳐 드려 진심으로 사과드리며 방음 조치를 강화하기 위해 최선을 다하고 있습니다."

자세한 내용은 AI_GENERATE_RESPONSE(Transact-SQL)를 참조하세요.

텍스트 요약

함수는 AI_SUMMARIZE(text) 입력 text 을 간결한 버전으로 요약합니다.

Example:

SELECT AI_SUMMARIZE('The hotel was clean and staff were friendly.') AS summary;

예상 결과: '깨끗한 호텔, 친절한 직원.'

자세한 내용은 AI_SUMMARIZE(Transact-SQL)를 참조하세요.

텍스트 번역

함수는 AI_TRANSLATE(text, lang_code)를 사용하여 text을(를) lang_code 지정된 언어로 번역합니다.

지원되는 언어 코드는 de (독일어), en (영어), fr (프랑스어), (이탈리아어), ites (스페인어), (그리스어), el (폴란드어), pl (스웨덴어), svfi (핀란드어) 및 cs (체코어)입니다.

Example:

SELECT AI_TRANSLATE('The hotel was great','de') AS translation_de;

예상 결과: '그 호텔은 훌륭했습니다.'

자세한 내용은 AI_TRANSLATE(Transact-SQL)를 참조하세요.

문법 수정

함수는 AI_FIX_GRAMMAR(text) 입력 text의 문법을 수정합니다.

Example:

SELECT AI_FIX_GRAMMAR('Th room are clean and staff were nice') AS fixed_text;

예상 결과: "깔끔하고 좋았습니다."

자세한 내용은 AI_FIX_GRAMMAR(Transact-SQL)를 참조하세요.

오류 처리

AI 기능은 텍스트를 처리하는 중에 오류가 발생하면 NULL를 반환합니다. 오류는 책임 있는 AI 안전 검사가 허용되지 않은 콘텐츠를 감지하거나, 입력이 토큰 한도를 초과하거나, 일시적인 서비스 문제가 발생하거나, 기타 처리 오류가 발생할 때 생길 수 있습니다.

기본적으로 AI 기능은 최선의 노력 실행 모델을 사용하며, 실패한 요청은 반환 NULL 합니다. 이 동작은 개별 행에 영향을 미치는 오류가 전체 쿼리에 실패하는 것을 방지하기 위해 설계되었습니다. 외부 대형 언어 모델(LLM)을 통해 수천 개의 행을 처리할 때, 단일 값에 실패해도 나머지 행에 대한 성공적인 결과가 반환되는 것을 막아서는 안 됩니다. 이 동작은 성공적으로 처리된 요청이 손실되지 않고 반복할 필요가 없도록 보장합니다.

반환 NULL된 행을 검사하고, 실패 원인을 파악한 뒤, 해당 값만 다시 시도하세요.

각 함수 호출에서 절을 지정 ON ERROR 하여 기본 동작을 덮어쓸 수 있습니다:

  • NULL ON ERROR (기본값) 함수가 값을 처리할 수 없을 때 반환 NULL 합니다.
  • ERROR ON ERROR 어떤 함수 호출에서도 오류가 발생하면 전체 쿼리가 실패하게 됩니다.
  • DEFAULT <value> ON ERROR 오류가 발생했을 때 대신 지정된 기본값 NULL 을 반환합니다.

다음 예시는 사용 가능한 오류 처리 옵션을 보여줍니다:

SELECT
    *,
    AI_FIX_GRAMMAR(review_text NULL ON ERROR) AS fixed_text,
    AI_EXTRACT(review_text, 'sentiment', 'problem' ERROR ON ERROR) AS info*
    AI_CLASSIFY(review_text, 'service', 'dirt', 'food' DEFAULT 'Other' ON ERROR) AS classification
FROM hotel_reviews;

이 예제에서:

  • AI_FIX_GRAMMAR 처리할 수 없는 값에 대한 반환 NULL 입니다. 반환 NULL 이 기본 오류 처리 동작이기 때문에 이 절은 NULL ON ERROR 선택 사항입니다.
  • AI_EXTRACT 어떤 셀이든 오류가 발생하면 쿼리 전체에 실패합니다.
  • AI_CLASSIFY는 분류할 수 없는 세포에 대해 Other를 반환합니다.

설명

AI 함수는 다음과 같은 여러 가지 이유로 오류를 반환하거나 예상보다 느린 성능을 경험할 수 있습니다.

  • AI 함수를 사용하기 전에 필요한 모든 필수 구성 요소를 충족하는지 확인합니다. 필수 구성 요소가 없으면 함수는 오류를 반환합니다.
  • 예를 들어 토큰 제한을 초과하거나, 제한되거나 불쾌한 콘텐츠를 포함하거나, 서비스 정책을 위반하는 등 입력 텍스트를 처리할 수 없는 경우 함수는 반환합니다 NULL. 항상 반환 값이 NULL 있는지 확인하고 쿼리, 애플리케이션 또는 데이터 처리 파이프라인에서 이 사례를 적절하게 처리합니다.
  • 성능은 입력 크기, 입력 복잡성 및 전체 서비스 부하에 따라 달라집니다. 개별 텍스트 값은 일반적으로 몇 초 내에 처리되는 반면, 더 큰 일괄 처리는 초당 약 10~30개의 텍스트 값 처리량을 달성할 수 있습니다. 예상보다 느린 성능이 지속적으로 발생하는 경우 처리량에 영향을 주는 서비스 또는 구성 문제가 있을 수 있습니다.

Fabric Data Warehouse AI 기능이나 SQL 분석 엔드포인트에서 문제가 발생하면:

예제

A. AI 함수를 사용하여 데이터 가져오기 및 텍스트 열 변환

이 샘플은 Lakehouse 파일의 데이터를 웨어하우스의 hotel_reviews 테이블로 로드합니다. 섹션의 파일에서 /Files 선택한 다음 AI 함수를 적용하여 데이터를 보강합니다.

CREATE TABLE HotelDW.dbo.hotel_reviews
AS
SELECT
    city, latitude, longitude, name, reviews_rating, reviews_text,
    AI_SUMMARIZE(reviews_text) AS reviews_summary,
    AI_CLASSIFY( reviews_text, 'service', 'dirt', 'food', 'air conditioning', 'other') AS reviews_classification,
    AI_ANALYZE_SENTIMENT(reviews_text) AS reviews_sentiment,
    AI_TRANSLATE(reviews_text, 'de') AS reviews_text_de,
    AI_TRANSLATE(reviews_text, 'es') AS reviews_text_es,
    AI_TRANSLATE(reviews_text, 'fr') AS reviews_text_fr,
    AI_TRANSLATE(reviews_text, 'it') AS reviews_text_it
FROM OPENROWSET( BULK '/Files/csv/hotel_reviews_demo.csv', DATA_SOURCE = 'TextLakehouse', HEADER_ROW = TRUE);

B. AI 함수를 사용하여 텍스트 열 업데이트

다음 예제에서는 reviews_text 열의 문법 오류를 수정합니다.

UPDATE HotelDW.dbo.hotel_reviews
SET reviews_text = ISNULL(AI_FIX_GRAMMAR(reviews_text), reviews_text);

오류가 발생하면 AI 함수가 반환 NULL 될 수 있으므로 기존 값을 NULL덮어쓰지 않도록 합니다.

AI 함수가 ISNULL(<ai function>, <original value>) 결과를 반환할 수 없는 경우 패턴을 사용하여 원래 텍스트를 유지합니다.

C. 텍스트에서 값 추출

이 예제에서 함수는 AI_EXTRACT 검토 텍스트를 분석하고 속성sentimenttime_reported이 포함된 JSON 개체를 반환합니다problem. 그런 다음 함수는 OPENJSON 이 JSON을 구문 분석하고 이러한 속성을 별도의 열에 매핑하여 쉽게 쿼리하고 분석할 수 있습니다.

이 샘플 스크립트는 추출된 값을 대상 테이블에 별도의 열로 삽입합니다.

INSERT INTO gold.hotel_reviews
SELECT sentiment, time_reported, problem
FROM hotel_reviews
CROSS APPLY 
OPENJSON(
    AI_EXTRACT(reviews_text, 'sentiment', 'time_reported', 'problem')
) WITH ( sentiment VARCHAR(1000), time_reported VARCHAR(100), problem VARCHAR(1000) );

AI_EXTRACT 함수는 수동 구문 분석이나 복잡한 정규 표현식을 사용하지 않고 모호한 컨텍스트 규칙을 적용함으로써 텍스트에서 토픽을 식별하고 추출합니다. 이 방법은 엄격한 패턴 일치보다는 AI 기반 의미 체계 이해를 사용하여 텍스트 분석을 간소화하여 자연어 변형에 보다 강력하고 적응할 수 있도록 합니다.