Серия практик NL2SQL (1): Углубленный анализ навыков применения проекта Prompt в text2sql.
Цель задачи NL2SQL — преобразовать вопросы пользователей о базе данных на естественном языке в соответствующие запросы SQL. С развитием LLM использование LLM для NL2SQL стало новой парадигмой. В этом процессе особенно важно то, как использовать быстрые проекты для изучения возможностей LLM NL2SQL.
Текущая ситуация: хотя большие языковые модели становятся все более мощными в непрерывном итерационном процессе, приложения корпоративного уровня, такие как бизнес-аналитика, гораздо сложнее, чем анализ файла Excel и обобщение файла PDF:
Эти характеристики определяют, что нынешнее применение больших языковых моделей в анализе корпоративных данных не может быть полностью заменено. настоящий моментвсеизили частьиз Инструменты анализа。это уместноиз Позиционирование может быть:В качестве эффективного дополнения к существующим методам анализа данных он предоставляет лицам, принимающим бизнес-решения, инструмент анализа, который проще использовать и взаимодействовать в некоторых сценариях спроса.
Конкретные сценарии применения включают в себя:
Некоторые существующие инструменты BI открывают независимые API на основе собственных семантических уровней для расширения приложений. Таким образом, это естественный способ преобразования естественного языка в вызовы этих API анализа данных. Конечно, вы также можете реализовать этот уровень API самостоятельно.
Особенностью этого решения является то, что оно ограничено уровнем API, который мы проанализируем позже.
Это также одна из возможностей большой модели, которая в настоящее время привлекает наибольшее внимание (по сути тоже специальная текст2код). потому что SQL является относительно стандартизированнымизязык запросов к базе данных,И он полностью интерпретируется и выполняется самой базой данных.,поэтому ПучокПреобразование естественного языка в SQL — самое простое и разумное решение с кратчайшим путем реализации.。
То есть решение интерпретатора кода. Проще говоря, это позволить ИИ написать свой собственный код (обычно Python), а затем автоматически запустить его локально или в «песочнице» для получения результатов анализа. Конечно, большинство современных интерпретаторов кода предназначены для анализа и обработки локальных данных (например, файлов CSV). Поэтому при работе с данными в базах данных в корпоративных приложениях необходимо учитывать особые соображения в сценариях использования.
Используйте следующий рисунок, чтобы представить общую архитектуру решения text2API:
Основной процесс
Как реализовать возможности text2API в больших языковых моделях? Поскольку это специальный API для частного корпоративного приложения, он не может полагаться на некоторые модели text2Tool, обученные на общедоступных API в Интернете.
"""
Пожалуйста, соблюдайте следующие требования и ограничения:
1. Обратитесь к следующему списку инструментов, чтобы найти инструмент, который вам нужно использовать, и выведите следующее содержимое в формате JSON, чтобы использовать этот инструмент. Обратите внимание, что следующий контент появляется в выводе только один раз:
{"api_calls":[{"name":name of tool,"args":{"arg1":value1,"arg2":value2...}}]}
2. Пожалуйста, в соответствии с инструментом определения с параметрами описывать для генерации текста вызова, Эталонные случаи следующие:
Список инструментов:
[
{
"name": "get_current_weather",
"description": «Получить текущую информацию о погоде для данного места»,
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": «Нужно проверить погоду и город»
}
},
"required": ["location"]
}
}
],
Пользовательский ввод: Запросить погоду в Пекине
Текст обратного вызова в формате JSON:
{"api_calls":[{"name":"get_current_weather","args":{"location":"Beijing"}}]}
3. Если вы не можете понять намерения пользователя, ответьте: «Я не могу понять ваши намерения».
4. Пожалуйста, в соответствии Вопросы пользователя и контекст для анализа и извлечения содержимого параметра, необходимого для вызова этого инструмента.
5. Непосредственно выведите приведенный выше результат JSON без каких-либо ненужных объяснений.
Контекст:
{context}
Список инструментов:
{tools}
Вопрос пользователя:
{question}
"""
После использования LLM для преобразования естественного языка в вызовы и параметры API, анализируя выходные данные, мы можем вызвать соответствующий API для получения результатов. Конечно, фактическое использование требует тщательной настройки и повторного тестирования Prompt для проверки точности и стабильности.
В крупномасштабных корпоративных прикладных системах BI требования к анализу данных могут быть очень сложными, и даже если учитывать только часть требований, количество потенциальных API может быть очень большим. Из-за того, что большие языковые модели не имеют состояния, каждый раз, когда мы вводим пользовательский вопрос, нам теоретически необходимо иметь всю спецификацию API. Это может привести к тому, что контекст превысит максимально допустимое количество токенов модели.
Общий процесс таков:
Сводка text2API
Решение text2API по сути добавляет слой пользовательского интерфейса на естественном языке поверх традиционной системы анализа данных. Для реализации основных функций анализа данных требуются самостоятельно разработанные API. Итак, преимущества этого решения:
Основная логика анализа не опирается на большие модели (в API) и поэтому более управляема. Для некоторых задач, которые содержат сложную логику анализа (с использованием различных источников данных, более логических суждений и объектов данных и т. д.) или задач, в которых логика анализа часто меняется, внутренняя сложность может быть ограждена от большой модели, тем самым уменьшая потребность в выход влияет на стабильность.
Недостатками этого решения являются:
поэтому,Можно считать, что данное решение больше подходит для использования вСтруктура ввода и вывода относительно проста (что определяет более простой API), но внутренняя логика обработки и анализа данных более сложна.из Задача。
Принцип реализации text2SQL очень прост.,Ядро лежит вКак собрать естественный язык в Подскажите и передайте LLM преобразован в SQL。Мы могли бы также взглянуть OpenAI Стандарт, представленный компанией на ее официальном сайте. chatGPT Выполните преобразование естественного языка SQL Пример:
System
/*Системные команды*/
Given the following SQL tables, your job is to write queries given a user’s request.
/*Структура таблицы базы данных*/
CREATE TABLE Orders (
OrderID int,
CustomerID int,
OrderDate datetime,
OrderTime varchar(8),
PRIMARY KEY (OrderID)
);
...Другие таблицы здесь опущены...
/*вопрос*/
Write a SQL query which computes the average total order value for all orders on 2023-04-01.
Действительно, эту, казалось бы, сложную задачу можно решить всего одним кратким «заклинанием». В реальных приложениях может потребоваться точная настройка используемой большой модели, но независимо от того, как меняется форма, подсказка text2SQL в основном состоит из нескольких основных частей.
Реализовать прототип text2SQLиз просто.,Но в практическом применении,Его производительность часто не оправдывает ожиданий. Основная проблема заключается в,Точность нынешних моделей ИИ при генерации SQL намного уступает точности людей-инженеров.。модель глубокого обученияиз Есть уверенность в самом прогнозевопрос,Абсолютная надежность не может быть гарантирована.,Эта проблема одинаково важна и для больших языковых моделей. также,Неопределенность результатов стала самым большим препятствием на пути широкого применения больших моделей в ключевых корпоративных системах.。
Помимо познавательных возможностей самой модели, есть и объективные причины:
Решение Text2SQL также столкнется с двумя серьезными проблемами в корпоративных приложениях.:
Прямо сейчасЗадача была выполнена нормально, но фактический результат был неверным。потому что text2SQL Он напрямую выводит инструкции для доступа к базе данных. Теоретически, пока нет основных синтаксических ошибок, он может быть успешно выполнен, даже если преобразование. SQL Это семантически неправильно! Это связано с text2API Разница в том: API Поскольку существуют очень строгие структурированные входные и выходные спецификации и проверки, если преобразование модели окажется неправильным, существует высокая вероятность того, что это приведет к API Это называется исключением: пользователь может получить обратную связь об ошибках (конечно, есть «Иллюзия» возможный).
Например, в этой задаче оба вывода LLM могут быть выполнены нормально, но второй явно неправильный. Более того, такие ошибки может быть сложно обнаружить пользователям:
Эта проблема на самом деле исходит от text2SQL Сложность оценки правильности вывода. Этот вид text2SQL Выходная мера семантической точностииз Сложность, по сути, возникает из-за того, что:Определить корректность выводимого ИИ фрагмента кода гораздо сложнее, чем оценить правильность ответа на вопрос с несколькими вариантами ответов или сходство строки.。
Следующее исходит из text2SQL Инструмент оценки выходных данных модели TestSuiteEval середина Пример:
Среди них золото представляет правильный ответ, предсказанный1 и 2 представляют два результата модели: правильный — предсказанный2, а неправильный — предсказанный1.
это оценка text2SQL Корректность вывода моделииз Сложность заключается:Вы не можете использовать вывод SQL Чтобы судить о результатах выполнения, мы не можем просто положить выходные данные SQL Сравните со стандартными ответами, чтобы судить.
Некоторые характеристики сценариев анализа корпоративных приложений:
Так есть ли у больших языковых моделей хорошие решения для решения этих проблем? Сожаление,Судя по некоторым текущим результатам тестирования моделей, для больших языковых моделей нереально быть полностью компетентными в этих сценариях и достичь точности инженеров-людей.。Но мы можем рассмотреть его оптимизацию в нескольких аспектах.,Для достижения приоритетной доступности в некоторых сценариях.
Spider — широко используемый набор данных для оценки моделей и задач text2SQL. Вы можете скачать этот набор данных прямо с официального сайта и использовать его для оценки выбранной или обучаемой модели. Этот набор данных содержит более 10 000 вопросов на естественном языке и связанных с ними операторов SQL, а также более 200 баз данных, используемых для выполнения этих SQL, охватывающих более 100 областей применения. Вы даже можете отправить свою модель и тестовый код официальному лицу, которое проверит вашу модель на закрытом наборе тестов и обнародует результаты.
На данный момент Spider опубликовал последние официальные результаты испытаний. Обратите внимание, что в разделе «Модель» перечислены не только крупные модели, но также включены возможные технологии быстрого проектирования (например, DAIL-SQL, см. следующий раздел):
BIRD — это набор тестовых данных для text2SQL, совместно запущенный Alibaba DAMO Academy и Гонконгским университетом. Его функция аналогична Spider, но по сравнению с Spider, который больше ориентирован на академические исследования, BIRD в большей степени учитывает сложность информации в базе данных в реальных приложениях и эффективность SQL, генерируемого моделью. BIRD также содержит более 12 000 естественных языков и SQL, охватывая более 90 баз данных примерно в 37 профессиональных областях. Как и в случае с Spider, вы также можете отправить тестовый код и модели официальному лицу, чтобы получить официальные результаты тестирования. Последние рейтинги выглядят следующим образом:
Обратите внимание, что в этом относительно сложном наборе тестовых данных максимальный балл большой модели составляет всего 65,45, что все еще довольно далеко от 92,96 баллов человеческих способностей!
Серия практик NL2SQL (1): Углубленный анализ навыков применения проекта Prompt в text2sql.
Для получения более качественного контента обратите внимание на официальный аккаунт: Ting, Искусственный интеллект; некоторые сопутствующие ресурсы и качественные статьи будут предоставлены для бесплатного чтения.