Text-to-SQL
Обзор
Text-to-SQL — LLM-сервис, доступный в Enterprise-версии ADQM 26.8.2.7 и выше, который реализует преобразование текстовых вопросов на естественном языке в соответствующие SQL-запросы SELECT для чтения данных кластера ADQM. Полученные в результате преобразования SQL-запросы не выполняются в клиенте автоматически — пользователь сначала просматривает запрос, затем запускает его вручную.
Для работы сервиса используется дообученная языковая модель семейства Qwen3.6, которая устанавливается локально на одном из хостов кластера ADQM с помощью llama.cpp — таким образом, запросы, схема данных и сами данные гарантированно остаются внутри кластера.
Для использования функциональности Text-to-SQL:
-
Установите сервис Text-to-SQL (tech preview) в кластер ADQM.
-
Задавайте текстовые вопросы (вида
How many orders were paid for yesterday?,Revenue from stores for the current year— до 4000 символов), обращаясь к данным кластера:-
в интерфейсе ADQM Notebook (любой хост ADQMDB);
-
в специальных SQL-функциях (любой клиент на любом хосте ADQMDB);
-
в HTTP-запросах предоставляемого API (с ключом API).
-
|
ВНИМАНИЕ
Текущая версия сервиса Text-to-SQL находится в режиме технического превью и не предназначена для использования в производственных средах.
|
Требования
Программные требования для установки сервиса Text-to-SQL (tech preview):
-
Операционная система: Ubuntu 22.04 LTS, Ubuntu 24.04 LTS или RHEL 9.
-
Python версии 3.9 или выше.
Минимальные требования к хосту для установки модели:
-
CPU: x86-64 с AVX2.
-
Память: от 32 ГБ (рекомендуется 48 ГБ).
-
Объем дискового пространства: 48 ГБ (для двух версий модели).
Локальный путь к модели: модель не должна быть установлена в каталоги /home, /root, /run/user, /tmp, /var/tmp.
Установка сервиса
-
В интерфейсе ADCM откройте страницу Clusters и кликните по имени кластера ADQM. Затем на открывшейся странице кластера перейдите на вкладку Services и нажмите Add services.
Переход к добавлению сервисов -
В открывшемся окне выберите Text-to-SQL (tech preview) и нажмите Add.
Выбор сервисаВ результате добавленный сервис отобразится на вкладке Services.
Результат успешного добавления сервиса в кластер -
На странице кластера откройте вкладку Mapping, чтобы перейти к распределению сервисных компонентов Text-to-SQL Engine и Model Server (llama.cpp) между хостами кластера.
Переход к распределению сервисных компонентовНазначьте хосты компонентам — нажмите Add hosts и выберите нужные хосты в открывшемся окне.
ВНИМАНИЕОба компонента сервиса Text-to-SQL рекомендуется устанавливать на один хост. Возможно их размещение на хосте с ADQMDB — при этом следует учитывать, что обработка запросов и сбор информации о кластере сервисом Text-to-SQL будут потреблять ресурсы процессора и память сервера ADQMDB. При размещении компонента Text-to-SQL Engine на отдельном хосте ему потребуется сетевой доступ к серверу модели (порт8080) и к серверам ADQMDB (порты8123и8443для соединений по HTTP и HTTPS соответственно).После завершения распределения компонентов нажмите Save, чтобы сохранить изменения.
-
Чтобы перейти к настройке сервиса Text-to-SQL, откройте вкладку Services на странице кластера и кликните по имени сервиса в столбце Name.
Переход к настройке сервиса -
В открывшемся окне заполните или измените необходимые конфигурационные параметры сервиса. Например:
-
Model — укажите источник модели (если указан другой адрес зеркала или модель уже находится на хосте);
-
API — добавьте ключи API (если клиенты будут напрямую обращаться к HTTP API);
-
Scope — укажите базы данных/таблицы, которые движку Text-to-SQL будет разрешено читать;
-
Answers — выберите режим проверки ответа (можно указать, должен ли сервис проверять варианты SQL-запросов с помощью
EXPLAINперед отправкой ответа или возвращать первые строки результата в ответе).
Настройка сервиса Text-to-SQLПосле указания всех необходимых параметров нажмите Save.
-
-
Установите сервис. Для этого на вкладке Services кликните по иконке
в столбце Actions и запустите действие Install.
Переход к установке сервисаДождитесь завершения установки и убедитесь, что статус сервиса изменился с
createdнаinstalled.
Процесс установки завершенЧтобы посмотреть процесс выполнения установки сервиса и проанализировать ошибки в случае их возникновения, выберите пункт Jobs в левом навигационном меню и кликните по имени задачи Install в списке задач Jobs.
Страница задачи Install
Использование Text-to-SQL
ADQM Notebook
-
Откройте ADQM Notebook.
-
Введите текстовый вопрос в SQL-ячейку и кликните по иконке
AI на панели управления ячейки.
Преобразование текста в SQL -
После выполнения преобразования исходный текстовый вопрос будет закомментирован, а ниже в ячейке будет выведен соответствующий SQL-код запроса. Кликните
Run, чтобы выполнить запрос.
Запуск запроса -
После выполнения запроса результирующий набор данных будет выведен в таблице результатов.
Результат выполнения запроса
SQL-функции
После установки сервиса Text-to-SQL на каждом сервере ADQMDB доступны следующие SQL-функции.
| Функция | Описание |
|---|---|
text2sql(question) |
Возвращает SQL-текст запроса или сообщение с объяснением, почему он не может быть получен |
text2sql_json(question, options) |
Возвращает полный ответ от движка Text-to-SQL в формате JSON (ответ HTTP-запроса |
text2sql_feedback(request_id, verdict, corrected_sql, comment) |
Передает сервису обратную связь о правильности ответа (сохраняется в журнал аудита движка Text-to-SQL). Возвращаемое значение: |
text2sql_status() |
Возвращает отчет о готовности сервиса в формате JSON |
text2sql_call(op, payload, caller) |
Исполняемая функция, которую вызывают функции |
|
ПРИМЕЧАНИЕ
Эти функции могут вызывать любые пользователи ADQMDB, специальные права не требуются.
При вызове функции движок Text-to-SQL обращается к кластеру от имени своего пользователя ( |
Вызывать функции text2sql* можно в любом клиенте ADQMDB.
HTTP API
Движок Text-to-SQL предоставляет HTTP API по адресу http://<text2sql_engine_host>:8090 (или https://…, если включен параметр HTTPS в секции API конфигурации сервиса Text-to-SQL), где <text2sql_engine_host> — IP-адрес хоста, на котором установлен компонент Text-to-SQL Engine; 8090 — порт доступа к API (определяется параметром API port в секции API конфигурации сервиса Text-to-SQL).
ADQM Notebook и SQL-функции обращаются к API через исполняемую функцию text2sql_call. Другие клиенты могут обращаться к нему напрямую — для аутентификации необходимо использовать пользовательский ключ API (за исключением доступа к /healthz), передавая его с запросом в формате Authorization: Bearer <key> (где <key> — значение конфигурационного параметра сервиса API keys). Роли пользователей указываются через параметр API key roles (user, admin или metrics).
В таблице перечислены HTTP-методы и конечные точки доступа (endpoint), поддерживаемые API, а также роли пользователей, которые имеют к ним доступ.
| HTTP-метод и конечная точка | Роль пользователя | Описание |
|---|---|---|
POST /v1/sql |
user, admin |
Отправляет текст для преобразования в SQL-запрос |
POST /v1/chat/completions |
user, admin |
Отправляет текст для преобразования в SQL-запрос через API чата OpenAI |
GET /v1/models |
user, admin |
Возвращает идентификатор модели ( |
POST /v1/feedback |
user, admin |
Отправляет обратную связь по ответу |
GET /v1/catalog |
user, admin |
Возвращает состояние cluster info (снепшот кластера, который получает движок Text-to-SQL в рамках области своего действия) |
POST /v1/catalog/refresh |
admin |
Обновляет cluster info |
GET /v1/readiness |
user, admin |
Возвращает отчет о готовности сервиса (что движок "знает" о кластере и какой информации не хватает) |
GET /readyz |
user, admin |
Возвращает |
GET /healthz |
Ключ API не требуется |
Возвращает состояние процесса |
GET /metrics |
Любой пользователь |
Возвращает Prometheus-метрики движка и llama.cpp |