Перейти к содержимому
Последнее обновление

Обзор

Описание​

AI Function — встроенная функция, предоставляемая Doris на основе возможностей искусственного интеллекта (AI). Пользователи могут напрямую вызывать AI в SQL-запросах для выполнения различных интеллектуальных задач с текстом. AI Function подключается к нескольким ведущим поставщикам AI (например, OpenAI, Anthropic, DeepSeek, Gemini, Ollama, MoonShot и т. д.) через механизм ресурсов Doris.

Используемый AI должен предоставляться Doris извне и поддерживать анализ текста.


Настройка AI Resource​

Перед использованием AI Function необходимо создать Resource типа AI для централизованного управления данными доступа к API AI.

Пример: создание 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'
);
Описание параметров​

Начиная с 4.1.5, ресурс AI должен содержать как минимум одну полную группу подключения: общую ai.*, группу text embedding ai.embed.* или группу multimodal embedding ai.embed.mm.*. Для каждой настроенной группы требуются endpoint, provider_type, model_name и api_key, если ее provider не LOCAL. Обязательные поля подключения ниже описывают общую группу, которую используют скалярные AI-функции и AI_AGG. Текстовый EMBED сначала выбирает ai.embed.*, затем общую группу; JSON-мультимодальный EMBED выбирает ai.embed.mm.*, затем ai.embed.*, затем общую группу. В более ранних версиях требуется общая группа. Все восемь полей и пример см. в специальных свойствах embedding.

type: обязателен, должен быть равен ai и используется как идентификатор типа AI.

ai.provider_type: обязателен для общей группы моделей. Определяет внешнего поставщика AI. Поддерживаются OpenAI, Anthropic, Gemini, DeepSeek, Local, MoonShot, MiniMax, Zhipu, QWen, Baichuan, VoyageAI и Jina. Если API другого поставщика совместим с OpenAI, Anthropic или Gemini, укажите соответствующий тип совместимого поставщика.

Прохождение проверки типа поставщика не означает поддержку всех AI-функций. Например, VoyageAI и Jina поддерживают embedding и не могут использоваться как модели генерации текста.

ai.endpoint: обязателен для общей группы моделей. Задает конечную точку API AI.

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: необязательный параметр, задающий задержку (в секундах) перед повторной попыткой. Значение по умолчанию — 0.

ai.enable_structured_output (Начиная с 4.2): необязательное логическое значение, по умолчанию true. Doris объединяет входные строки скалярных AI-функций в пакеты. Включение этого параметра добавляет поля формата, специфичные для поставщика, чтобы повысить надежность формата ответа. Doris не проверяет, поддерживает ли настроенная модель эти поля; для LOCAL и MiniMax они не передаются. Установите false, если модель или endpoint отклоняет эти поля. Пакетная обработка, инструкции по формату в системном prompt и проверка ответа остаются включенными. Этот параметр не применяется к AI_AGG или EMBED.

ai.dimensions: необязательный параметр, управляющий размерностью вектора вывода EMBED. Перед настройкой обязательно убедитесь, что модель, указанная в ai.model_name, поддерживает пользовательскую размерность вектора; иначе вызов модели может завершиться ошибкой.

Настройка выделенных моделей embedding (начиная с 4.1.5)​

Начиная с версии 4.1.5, в AI Resource можно отдельно настроить общую модель, модель text embedding и модель multimodal embedding. Требуется как минимум одна полная группа. Если для группы задано любое свойство подключения или ключ API, эта группа должна включать endpoint, provider_type и model_name, а для провайдеров, отличных от LOCAL, также api_key. Отсутствующие поля не наследуются из других групп.

Группа моделиПараметры подключенияКлюч APIИспользование
Общаяai.endpoint, ai.provider_type, ai.model_nameai.api_keyГенерация текста и другие AI-функции; резервный вариант, если выделенная группа embedding не настроена
Text embeddingai.embed.endpoint, ai.embed.provider_type, ai.embed.model_nameai.embed.api_keyТекстовый ввод в EMBED(); резервный вариант для мультимодального ввода
Multimodal embeddingai.embed.mm.endpoint, ai.embed.mm.provider_type, ai.embed.mm.model_nameai.embed.mm.api_keyJSON-мультимодальный ввод в EMBED()

Для текстового EMBED() сначала выбирается группа text embedding, затем общая группа. Мультимодальный EMBED() выбирает группу multimodal embedding, затем группу text embedding, затем общую группу. Выбранные provider и модель должны поддерживать фактический тип мультимедиа. Resource, содержащий только embedding-группы, может обслуживать соответствующие вызовы EMBED(), но не может обслуживать функции генерации текста, которым требуется общая модель.

Например, Resource, используемый только для text embedding, не требует общей модели генерации:

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 задает интенсивность рассуждений. По умолчанию оно не задано и не отправляется поставщику. Используйте значения в нижнем регистре с учетом проверки поставщика:

ПоставщикДопустимые значения
ANTHROPIClow, medium, high, xhigh, max
GEMINIminimal, low, medium, high
Проверка свойства для других поставщиков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 может дополнительно ограничить личность создателя. Значение по умолчанию * не добавляет ограничений по личности.

AI Resource, созданный root начиная с версии 4.1.5, может изменять или удалять только root; другим учетным записям будет отказано, даже если у них есть привилегии ADMIN. Ресурсы, существовавшие до обновления и не имеющие этой отметки, не помечаются задним числом. Для остальных ресурсов сохраняются прежние проверки привилегий.


Выбор ресурса и переменные Session​

При вызове функций, связанных с AI, ресурс можно указать одним из двух способов:

  • Явно указать ресурс: передать имя ресурса непосредственно при вызове функции.
  • Неявно указать ресурс: заранее задать переменную Session, и функция автоматически использует соответствующий ресурс.

Формат переменной Session:

SET default_ai_resource='resource_name';

Формат вызова функции:

SELECT AI_FUNCTION([<resource_name>], <args...>);

Приоритет выбора ресурса​

При вызове AI_Function ресурс выбирается в следующем порядке:

  1. Ресурс, явно указанный пользователем при вызове
  2. Глобальный ресурс по умолчанию (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 Functions:

  • AI_CLASSIFY: классификация информации

  • AI_EXTRACT: извлечение информации

  • AI_FILTER: фильтрация информации

  • AI_FIXGRAMMAR: исправление грамматики

  • AI_GENERATE: генерация текста

  • AI_MASK: маскирование конфиденциальной информации

  • AI_SENTIMENT: анализ тональности

  • AI_SIMILARITY: сравнение семантического сходства текстов

  • AI_SUMMARIZE: создание краткого содержания текста

  • AI_TRANSLATE: перевод

  • AI_AGG: выполнение межстрочного агрегатного анализа нескольких текстов

Примеры​

  1. AI_TRANSLATE
SELECT AI_TRANSLATE('resource_name', 'this is a test', 'Chinese');
-- 这是一个测试
  1. AI_SENTIMENT
SET default_ai_resource = 'resource_name';
SELECT AI_SENTIMENT('Apache Doris is a great DBMS.');

Подробные сведения о функциях и их использовании см. в документации каждой конкретной функции.