Изучение семантических операторов

Завершено

Расширение azure_ai включает небольшой набор семантических операторов, которые позволяют работать с моделями сгенерированных ИИ непосредственно в SQL. Эти операторы помогают создавать текст, оценивать утверждения, извлекать структурированные сведения и ранжировать документы. Каждый оператор вызывает модель azure_ai.settings, настроенную в таблице.

Семантические операторы:

  • azure_ai.generate — создает текст и может возвращать структурированный JSON при указании схемы.
  • azure_ai.is_true — оценивает утверждение и возвращает, насколько вероятно, что оно истинно.
  • azure_ai.extract — извлекает определенные поля или значения из неструктурированного текста.
  • azure_ai.rank — возвращает список документов, ранжированных по релевантности для заданного запроса.

Оператор generate.

azure_ai.generate отправляет запрос в модель и возвращает созданный текст. Если вы предоставляете схему JSON, модель пытается вернуть структурированные данные, соответствующие этой схеме. Этот метод полезен, если требуется вывод, который будет использоваться последующей SQL-логикой.

Пример:

SELECT azure_ai.generate(
  prompt => 'Summarize the following review: ' || review_text
)
FROM product_reviews;

Если указана схема, результат возвращается как jsonb.

Оператор is_true.

azure_ai.is_true оценивает выражение и возвращает true, false, или NULL, если модель не может дать ответ. Этот оператор полезен, если необходимо проверить, соответствует ли фрагмент текста условию или относится к определенной концепции.

Пример:

SELECT azure_ai.is_true(
  'This review describes the product as durable: ' || review_text
) AS durability_claim
FROM product_reviews;

Оператор extract.

azure_ai.extract определяет определенные поля внутри документа. Вы указываете массив меток, а модель возвращает jsonb объект, содержащий извлеченные значения. Этот оператор хорошо подходит для извлечения структурированных сведений из длинного текста.

Пример:

SELECT azure_ai.extract(
  'The headphones have clear sound but the battery life is short.',
  ARRAY['sound_quality', 'battery_life']
);

Результатом является документ JSON, содержащий запрошенные поля.

Оператор rank.

azure_ai.rank возвращает документы, упорядоченные по релевантности запроса. Вы предоставляете текст запроса и массив документов. Оператор возвращает набор строк, включающий каждый документ, его ранг и оценку. Этот набор строк полезен, если модель поможет определить, какие элементы наиболее важны для поиска пользователя.

Пример:

SELECT *
FROM azure_ai.rank(
  'Lightweight travel headphones',
  ARRAY[
    'These foldable headphones are easy to pack.',
    'Battery life is average.',
    'Sound quality is very detailed.'
  ]
);

Оператор возвращает одну строку для каждого документа с информацией о ранжировании.

Конфигурация

Все семантические операторы зависят от конфигурации модели, хранимой в azure_ai.settings. Перед вызовом операторов убедитесь, что вы настроили конечную точку и ключ для модели, которую вы планируете использовать.

Пример:

SELECT azure_ai.set_setting('azure_openai.endpoint', '{endpoint}');
SELECT azure_ai.set_setting('azure_openai.api_key', '{api_key}');

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

Общие выводы

Семантические операторы в расширении azure_ai предоставляют мощные возможности для интеграции генеративного ИИ непосредственно в рабочие процессы SQL. С помощью этих операторов вы можете улучшить свои приложения с помощью создания текста, оценки истины, извлечения информации и ранжирования документов в рамках знакомого контекста базы данных PostgreSQL.