개요
설명
AI Function은 인공지능(AI) 기능을 기반으로 Doris가 제공하는 기본 제공 함수입니다. 사용자는 SQL 쿼리에서 AI를 직접 호출하여 다양한 지능형 텍스트 작업을 수행할 수 있습니다. AI Function은 Doris의 리소스 메커니즘을 통해 여러 주요 AI 제공업체(예: OpenAI, Anthropic, DeepSeek, Gemini, Ollama, MoonShot 등)에 연결됩니다.
사용되는 AI는 Doris 외부에서 제공되어야 하며 텍스트 분석을 지원해야 합니다.
AI 리소스 구성
AI Function을 사용하기 전에 AI API의 액세스 정보를 중앙에서 관리할 수 있도록 AI 유형의 Resource를 생성해야 합니다.
예시: AI Resource 생성
CREATE RESOURCE "ai_resource_name"
PROPERTIES (
'type' = 'ai',
'ai.provider_type' = 'openai',
'ai.endpoint' = 'https://endpoint_example',
'ai.model_name' = 'model_example',
'ai.api_key' = 'sk-xxx',
'ai.temperature' = '0.7',
'ai.max_token' = '1024',
'ai.max_retries' = '3',
'ai.retry_delay_second' = '1',
'ai.dimensions' = '1024'
);
매개변수 설명
AI 리소스에는 최소 하나의 완전한 연결 그룹이 포함되어야 합니다: 일반 ai.*, 텍스트 임베딩 ai.embed.* 또는 멀티모달 임베딩 ai.embed.mm.*. 구성된 각 그룹에는 endpoint, provider_type, model_name이 필요하며, 해당 provider가 LOCAL인 경우를 제외하고 api_key도 필요합니다. 아래의 필수 연결 필드는 스칼라 AI 함수와 AI_AGG에서 사용하는 일반 그룹을 설명합니다. 텍스트 EMBED는 일반 그룹보다 ai.embed.*를 우선하며, JSON 멀티모달 EMBED는 ai.embed.mm.*, ai.embed.*, 일반 그룹 순으로 우선합니다. 모든 여덟 개 필드와 예시는 전용 임베딩 속성을 참조하세요.
type: 필수이며 ai여야 하고, ai의 유형 식별자로 사용됩니다.
ai.provider_type: 일반 모델 그룹에 필요한 항목입니다. 외부 AI 제공업체를 지정합니다. 지원되는 제공업체에는 OpenAI, Anthropic, Gemini, DeepSeek, Local, MoonShot, MiniMax, Zhipu, QWen, Baichuan, VoyageAI 및 Jina가 포함됩니다. 다른 제공업체가 OpenAI, Anthropic 또는 Gemini와 호환되는 API를 사용하는 경우 해당 호환 제공업체 유형을 지정합니다.
유효한 provider 유형이라고 해서 모든 AI 함수를 지원하는 것은 아닙니다. 예를 들어 VoyageAI와 Jina는 임베딩을 지원하지만 텍스트 생성 모델로 사용할 수 없습니다.
ai.endpoint: 일반 모델 그룹에 필요한 항목입니다. AI API 엔드포인트를 지정합니다.
ai.model_name: 일반 모델 그룹에 필요한 항목입니다. 모델 이름을 지정합니다.
ai.api_key: 일반 모델 그룹의 API 키입니다. ai.provider_type = local이 아니면 필수입니다.
ai.temperature: 선택 사항입니다. 생성되는 콘텐츠의 무작위성을 제어합니다. 0에서 1 사이의 부동 소수점 값을 허용합니다.
기본값은 -1이며, 이 매개변수가 설정되지 않았음을 의미합니다.
ai.max_token: 선택 사항입니다. 생성되는 콘텐츠의 최대 토큰 수를 제한합니다.
기본값은 -1이며, 이 매개변수가 설정되지 않았음을 의미합니다. Anthropic의 기본값은 2048입니다.
ai.max_retries: 선택 사항입니다. 단일 요청의 최대 재시도 횟수입니다. 기본값은 3입니다.
ai.retry_delay_second: 선택 사항입니다. 재시도 전 지연 시간(초)입니다. 개발 브랜치의 기본값은 1이고 Doris 4.1.5에서는 0입니다.
ai.enable_structured_output: 선택적인 Boolean이며 기본값은 true입니다. Doris는 스칼라 AI 함수의 입력 행을 일괄 처리합니다. 이 옵션을 활성화하면 응답 형식의 안정성을 높이기 위해 provider별 형식 필드가 추가됩니다. Doris는 구성된 모델이 해당 필드를 지원하는지 확인하지 않습니다. LOCAL 및 MiniMax에서는 이러한 필드를 생략합니다. 모델 또는 endpoint가 이를 거부하면 false로 설정하세요. 일괄 처리, 시스템 프롬프트 형식 지침 및 응답 검증은 계속 활성화됩니다. 이 속성은 AI_AGG 또는 EMBED에 적용되지 않습니다.
ai.dimensions: 선택 사항이며 EMBED 출력의 벡터 차원을 제어합니다.
설정하기 전에 ai.model_name에 지정한 모델이 사용자 지정 벡터 차원을 지원하는지 반드시 확인하세요.
그렇지 않으면 모델 호출이 실패할 수 있습니다.
전용 임베딩 모델 구성 (4.1.5부터)
4.1.5부터 AI Resource에서 일반 모델, 텍스트 임베딩 모델 및 멀티모달 임베딩 모델을 별도로 구성할 수 있습니다. 최소 하나의 완전한 그룹이 필요합니다. 그룹에 연결 속성이나 API 키가 하나라도 설정되면 해당 그룹에 endpoint, provider_type, model_name을 포함해야 하며, LOCAL이 아닌 provider에는 api_key도 포함해야 합니다. 누락된 필드는 다른 그룹에서 상속되지 않습니다.
| 모델 그룹 | 연결 속성 | API 키 | 사용량 |
|---|---|---|---|
| 일반 | ai.endpoint, ai.provider_type, ai.model_name | ai.api_key | 텍스트 생성 및 기타 AI 함수; 전용 임베딩 그룹이 구성되지 않은 경우의 대체 사용 |
| 텍스트 임베딩 | ai.embed.endpoint, ai.embed.provider_type, ai.embed.model_name | ai.embed.api_key | EMBED()에 대한 텍스트 입력; 멀티모달 입력의 대체 사용 |
| 멀티모달 임베딩 | ai.embed.mm.endpoint, ai.embed.mm.provider_type, ai.embed.mm.model_name | ai.embed.mm.api_key | EMBED()에 대한 JSON 멀티모달 입력 |
텍스트 EMBED()는 먼저 텍스트 임베딩 그룹을 선택한 다음 일반 그룹을 선택합니다. 멀티모달 EMBED()는 멀티모달 임베딩 그룹, 텍스트 임베딩 그룹, 일반 그룹 순으로 선택합니다. 선택된 provider와 모델은 실제 미디어 유형을 지원해야 합니다. 임베딩 그룹만 있는 Resource는 해당 EMBED() 호출을 처리할 수 있지만 일반 모델이 필요한 텍스트 생성 함수는 처리할 수 없습니다.
예를 들어 텍스트 임베딩에만 사용하는 Resource에는 일반 생성 모델을 구성할 필요가 없습니다.
CREATE RESOURCE "text_embed_resource"
PROPERTIES (
"type" = "ai",
"ai.embed.provider_type" = "openai",
"ai.embed.endpoint" = "https://<embedding-service>/v1/embeddings",
"ai.embed.model_name" = "<embedding-model>",
"ai.embed.api_key" = "<api-key>"
);
연결 값을 서비스 구성으로 바꾸세요. 생성이 성공하면 Query OK가 반환됩니다. ai.dimensions 및 재시도 매개변수와 같은 공유 설정은 여전히 Resource 구성에서 가져옵니다.
추론 강도: ai.effort (4.1.5부터)
4.1.5부터 선택적 문자열 속성 ai.effort로 추론 강도를 지정할 수 있습니다. 기본적으로 설정되지 않으며 provider로 전송되지 않습니다. 소문자 값을 사용하며 provider의 검증을 따릅니다.
| Provider | 허용되는 값 |
|---|---|
ANTHROPIC | low, medium, high, xhigh, max |
GEMINI | minimal, low, medium, high |
| 다른 provider의 속성 검증 | none, minimal, low, medium, high, xhigh, max |
속성 검증을 통과했다고 해서 모든 모델이 해당 강도 수준을 지원하는 것은 아닙니다. 서비스와 모델이 지원하는 값을 선택하세요. ai.effort는 ai.max_token을 대체하지 않습니다.
ALTER RESOURCE에서 빈 문자열을 지정하면 ai.effort 설정이 제거됩니다.
생성, 변경 및 삭제 권한 (4.1.5부터)
AI Resource를 생성하려면 전역 ADMIN 권한이 필요합니다. 4.1.5부터 FE 구성 ai_resource_allowed_user에서 생성자의 ID를 추가로 제한할 수 있습니다. 기본값 *는 ID 제한을 추가하지 않습니다.
4.1.5부터 root가 새로 생성한 AI Resource는 root만 변경하거나 삭제할 수 있습니다. 다른 계정은 ADMIN 권한이 있어도 거부됩니다. 업그레이드 전에 존재했고 이 표시가 없는 Resource에는 소급하여 표시가 추가되지 않습니다. 다른 리소스에는 기존 권한 검사가 계속 적용됩니다.
리소스 선택 및 Session 변수
사용자가 AI 관련 함수를 호출할 때 리소스는 다음 두 가지 방법으로 지정할 수 있습니다.
- 리소스를 명시적으로 지정: 함수 호출 시 리소스 이름을 직접 전달합니다.
- 리소스를 암시적으로 지정: Session 변수를 미리 설정하면 함수가 해당 리소스를 자동으로 사용합니다.
Session 변수 설정 형식:
SET default_ai_resource='resource_name';
함수 호출 형식:
SELECT AI_FUNCTION([<resource_name>], <args...>);
리소스 선택 우선순위
AI_Function을 호출하면 다음 순서로 사용할 리소스를 결정합니다.
- 호출 시 사용자가 명시적으로 지정한 리소스
- 전역 기본 리소스(
default_ai_resource)
예시:
SET default_ai_resource='global_default_resource';
SELECT AI_SENTIMENT('this is a test'); -- Uses resource named 'global_default_resource'
SELECT AI_SENTIMENT('invoke_resource', 'this is a test'); --Uses resource named 'invoke_resource'
AI 함수
Doris에서 현재 지원하는 AI 함수는 다음과 같습니다.
-
AI_CLASSIFY: 정보 분류 -
AI_EXTRACT: 정보 추출 -
AI_FILTER:정보 필터링 -
AI_FIXGRAMMAR: 문법 교정 -
AI_GENERATE: 텍스트 생성 -
AI_MASK: 민감한 정보 마스킹 -
AI_SENTIMENT: 감정 분석 -
AI_SIMILARITY: 텍스트 의미 유사성 비교 -
AI_SUMMARIZE: 텍스트 요약 -
AI_TRANSLATE: 번역 -
AI_AGG: 여러 텍스트에 대한 행 간 집계 분석 수행
예시
AI_TRANSLATE
SELECT AI_TRANSLATE('resource_name', 'this is a test', 'Chinese');
-- 这是一个测试
AI_SENTIMENT
SET default_ai_resource = 'resource_name';
SELECT AI_SENTIMENT('Apache Doris is a great DBMS.');
자세한 함수 기능과 사용법은 각 함수의 문서를 참조하세요.