Быстро изучите в одной статье — концепцию и технологию реализации NL2SQL для передачи данных с нулевыми затратами.
Быстро изучите в одной статье — концепцию и технологию реализации NL2SQL для передачи данных с нулевыми затратами.

Предисловие

Что касается технологии NL2SQL, то если вы недавно обратили внимание на круг ИИ, вы более или менее знаете о ней. Фактически, во многих бизнес-сценариях пользователи хотят получить окончательный эффект представления данных. Стоимость обучения тому, как получить данные, должна быть как можно меньше. Как мы все знаем, чем ниже стоимость обучения, тем выше уровень привлечения клиентов. Конечно, для нас, технических специалистов, речь идет больше о НИОКР. В конце концов, сервисы, которые мы разрабатываем, предназначены в основном для бизнес-сервисов. NL2SQL должен стать тенденцией развития данных в будущем. Поэтому нам, разработчикам данных, очень важно понимать эту концепцию, помимо освоения этой технологии.

Технические концепции NL2SQL

NL2SQL (Natural Language to SQL) — это технология, сочетающая обработку естественного языка и запросы к базе данных. Она направлена ​​на преобразование запросов, вводимых пользователями на естественном языке, в операторы запросов SQL, тем самым реализуя автоматическое взаимодействие между вопросами и ответами на естественном языке и базами данных. Согласно ежедневным отчетам предприятия, согласно идеям исследований и разработок, мы можем сначала получить текстовую информацию о клиенте через пользовательский интерфейс или интерфейс страницы, передать ее на сервер для хранения, а затем отобразить заказ на работу или прямой запрос к базе данных, написанной разработчиком данных на языке SQL, получают окончательные результаты запроса, а затем данные отображаются визуально.

Итак, согласно концепции NL2SQL, весь процесс запроса данных можно значительно упростить. Прежде всего, пользователям больше не нужно выполнять сложный выбор страниц или отправку форм или даже иметь какое-либо представление о структуре базы данных и языке SQL. Пользователи могут напрямую вводить вопросы на естественном языке во внешнем интерфейсе, например «запросить отчет о продажах за прошлый месяц» или «отобразить состояние запасов всех продуктов в 2023 году», и система автоматически передаст эти вопросы на естественном языке в серверную часть.

На заднем плане, Технология NL2SQL будет анализировать вводимые пользователем данные на естественном языке, определять намерение и ключевые слова и автоматически генерировать соответствующие операторы SQL-запроса на основе конкретной модели базы данных. Этот процесс включает в себя обработку естественного языка (НЛП), семантический анализ, Сопоставление схемы базы данные и многие другие основные технологии. с помощью этих технологий,Система может понять потребности пользователя,и генерировать точные операторы SQL,Чтобы напрямую запросить базу данных,Получите данные.

Результат запроса также можно напрямую вернуть во внешний интерфейс для отображения.,Или используйте инструменты визуализации данных для графического представления. Этот метод позволяет избежать утомительных шагов по написанию SQL-запросов вручную для разработчиков данных с помощью мобильного метода.,Улучшена скорость ответа. Что важнее,Пользователям больше не нужно полагаться на технический персонал при запросе данных.,Вместо этого вы можете получить то, что хотите, в режиме реального времени. Это не только снижает затраты на обучение,Это также может значительно улучшить удовлетворенность клиентов и качество обслуживания.

Возможно, люди до сих пор не понимают этого, просто говоря об этой концепции.,Например, рассмотрим следующий сценарий: предположим, менеджеру по продажам необходимо подготовить отчет об эффективности продаж компании перед ежемесячным собранием.,в целом,Весь процесс может включать в себя несколько запросов на помощь от аналитика данных или ИТ-команды.,писать SQL-запросы,Экспорт данных и создание отчетов。Тактрадиционный метод обычно:

традиционный метод

  1. Требования к естественному языку:Менеджер по продажам задает вопросы:“Я хочу знать, каковы были продажи каждого продукта в прошлом месяце.,и отсортировано по продажам. "
  2. Коммуникация и трансформация:Менеджер по продажам отправляет этот запрос аналитику данных илиITперсонал。
  3. Написание SQL-запросов:Аналитик данных по запросу,Вручную напишите SQL-запросы:
Язык кода:python
кодКоличество запусков:0
копировать
SELECT product_name, SUM(sales_amount) AS total_sales
FROM sales
WHERE sale_date BETWEEN '2023-07-01' AND '2023-07-31'
GROUP BY product_name
ORDER BY total_sales DESC;
  1. Извлечение и экспорт данных:Запросрезультатбыл экспортирован и организован вExcelили другой формат,Отдайте менеджеру по продажам.
  2. производство отчетов:Менеджер по продажам интегрирует экспортированные данные в отчеты.,Дальнейшая обработка диаграмм визуализации.

Этот метод связи требует нескольких шагов.,Сотрудничество с участием разных ролей,Особенно при множественных требованиях к запросу,Это может привести к повторному обмену данными и изменению SQL-запросов.

Технология NL2SQL

  1. Запрос на естественном языке:Менеджеры по продажам вводят вопросы прямо в систему:“Показать продажи каждого продукта в прошлом месяце,и отсортировано по продажам. "
  2. Технология — обработка NL2SQL.:Система использует обработку естественного языка.,Разобрать требование в SQL-запрос,Автоматически сгенерируйте следующий оператор SQL:
Язык кода:sql
копировать
SELECT product_name, SUM(sales_amount) AS total_sales
FROM sales
WHERE sale_date BETWEEN '2023-07-01' AND '2023-07-31'
GROUP BY product_name
ORDER BY total_sales DESC;
  1. Автоматически выполнять запросы и отображать результаты:系统执行Запрос,И представьте результат непосредственно менеджеру по продажам в виде таблиц или диаграмм.
  2. Мгновенная обратная связь и визуализация:Менеджеры по продажам получают данные мгновенно,и может дополнительно скорректировать запрос по мере необходимости,Например, «Показать продажи по категориям продуктов» или «Просмотреть данные о продажах за тот же период прошлого года».

Эффект сравнения очень очевиден. После использования NL2SQL процесс запроса автоматизируется, что значительно сокращает время получения данных. Менеджерам по продажам не нужно изучать язык SQL, и они могут выполнять сложные запросы, используя только естественный язык, что снижает технический порог. Более того, его можно проверять в режиме реального времени на основе эффекта, а запросы можно выполнять в любое время, больше не полагаясь на стыковку технической команды в режиме реального времени. Результаты запроса напрямую представляются в визуальной форме, что позволяет пользователям. для более интуитивного понимания данных и быстрого принятия бизнес-решений.

Техническая поддержка NL2SQL

Рабочий процесс NL2SQL

Пользователь вводит вопрос на естественном языке, например: «Найдите продукты с самыми высокими продажами в 2020 году». Сначала системе необходимо понять цель запроса, введенного пользователем. Естественный язык по своей сути неоднозначен, что делает его допускающим множественные интерпретации. двусмысленность — ключевая задача обработки естественного языка, обеспечивающая на практике точное общение между людьми и машинами. Это не всегда так. Конечный пользователь может не знать (полностью или частично) семантику столбца или таблицы. Поэтому самая большая проблема заключается в том, как точно найти информацию о конкретном поле таблицы. Использование NL2SQL неизбежно. Сильная бизнес-привязка требует четкого понимания набора данных в полевых условиях для обучения большой семантической модели.

В настоящее время популярные английские наборы данных включают WikiSQL, Spider, WikiTableQuestions, ATIS и т. д. Китайские наборы данных включают данные, опубликованные в ходе первого китайского конкурса NL2SQL, который только что завершился. Каждый набор данных имеет свои особенности, я не буду обсуждать их здесь подробно. Если вам интересно, вы можете изучить его самостоятельно.

По количеству таблиц базы данных, участвующих в SQL в наборе данных, он делится на одностандартные и многотабличные, в зависимости от того, содержит ли сформированная структура SQL вложенные запросы, набор данных делится на вложенный и невложенный; Есть очень интересный конкурс

Если вам интересно, вы можете взглянуть на работы-победители и наборы данных этого конкурса, и вы получите более четкое представление о работе и исследованиях NL2SQL.

Давайте рассмотрим всю логику генерации SQL в одном предложении реального языка.

напримерввод на естественном языке

«Найдите все товары с объемом продаж более 10 миллионов в 2023 году и отсортируйте по продажам в порядке убывания».

Целевой SQL-запрос

Язык кода:sql
копировать
SELECT product_name, sales_amount 
FROM sales 
WHERE year = 2023 AND sales_amount > 10000000 
ORDER BY sales_amount DESC;

1. Предварительная обработка текста

Сначала система предварительно обрабатывает входной естественный язык для подготовки к последующим шагам семантического анализа.

  • Токенизация:Разделите предложения на отдельные слова или фразы。
    • результат:"Находить", «2023», "все", «продажи», "Превосходить", «10 миллионов», "из", "продукт", "и", "в соответствии с", «продажи», «нисходящий», "договоренность"
    • алгоритм:Инструменты сегментации слов на основе правил или моделей глубокого обучения,Такие как SpaCy, NLTK.
  • Удалить стоп-слова:удалять“из”、“и”等不影响语义из词汇。
    • результат:"Находить", «2023», «продажи», "Превосходить", «10 миллионов», "продукт", "в соответствии с", «продажи», «нисходящий», "договоренность"
    • алгоритм:通过停用词词典或手工定义из停用词表进行过滤。

2. Распознавание названного объекта (NER, Named Entity Recognition)

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

  • Определите контент
    • сущность времени:2023Год
    • Числовой объект:10 миллионов
    • сущность продукта:продукт
    • операционная организация:Продажи,По убыванию
    • алгоритм:NERМодель,Например, инструменты NER на основе BiLSTM-CRF или предварительно обученные модели (например, BERT).
  • выход
    • Время: 2023 год.
    • Значение: 10000000
    • Операции: Найти, Превысить, Сортировать по убыванию.
    • Сущности: продукция, продажи

3. Распознавание намерений

Система определяет намерение запроса пользователя.,То есть операция «запрос». Распознание намерений – вот ключевой шаг,Он определяет тип оператора SQL (запрос SELECT).

  • Определить намерение запроса

: запрос данных и фильтрация в соответствии с условиями.

  • алгоритм:基于分类Модель(нравитьсяSVM、LSTM) или предварительно обученную модель (например, BERT) для классификации намерений.
  • результат:Запрос操作,Фильтруйте и сортируйте по критериям.

4. Синтаксис Parsing)

Анализируйте структуру ввода естественного языка посредством синтаксического анализа, чтобы определить взаимосвязь между субъектами, предикатами, объектами и другими элементами. Целью здесь является определить, что объектом «поиск» является «продукт», а «продажи, превышающие 10 миллионов», являются условием фильтра.

  • анализировать синтаксическую структуру
    • Найти (сказуемое) -> продукт (объект)
    • Продажи превышают 10 миллионов (состояние) -> Сортировать по убыванию (сортировать по)
    • алгоритм:Синтаксический анализ зависимостей(Dependency Синтаксический анализ), используя такие инструменты, как Stanford НЛП или Спа Си.
  • результат
    • Отношения субъект-глагол-объект: Найдите продукты
    • Условные отношения: продажи > 10 миллионов
    • Сортировка: сортировка по продажам в порядке убывания.

5. Сопоставление схемы базы данных

Системе необходимо сопоставить сущности на естественном языке (например, «продукт», «продажи») с конкретными таблицами и полями в базе данных. Этот шаг требует, чтобы система понимала схему базы данных.

  • Сопоставление естественного языка с полями базы данных
    • "продукт" -> product_name
    • "Продажи" -> sales_amount
    • «2023» -> year
    • алгоритм:基于规则из模式映射或通过训练Модель学习自然语言与数据库字段之间из对应关系。
  • результат
    • product_name
    • sales_amount
    • year

6. Генерация шаблона SQL

Система заполняет идентифицированную информацию в шаблон SQL. Здесь задача создания шаблона состоит в том, чтобы преобразовать структурную информацию, полученную из естественного языка, в каждое предложение оператора SQL (SELECT, FROM, WHERE, ORDER BY).

SQL-шаблон

Язык кода:sql
копировать
SELECT {Поле 1, Поле 2, ...}
FROM {поверхность}
WHERE {Условие 1} AND {Условие 2} ...
ORDER BY {поле сортировки} {Сортировать по};

Заполнить шаблон

  • SELECTproduct_name, sales_amount
  • FROMsales
  • WHEREyear = 2023 AND sales_amount > 10000000
  • ORDER BYsales_amount DESC
  • алгоритм:基于模板匹配或生成Модель(нравитьсяSeq2Seq、Transformer) генерирует операторы SQL.

результат:

Язык кода:sql
копировать
SELECT product_name, sales_amount 
FROM sales 
WHERE year = 2023 AND sales_amount > 10000000 
ORDER BY sales_amount DESC;

Здесь можно найти подсказку, которая сейчас общепризнана в отрасли:

Язык кода:bash
копировать
 system = """
Given the database schema below, generate a MySQL query based on the user's question. Ensure to consider totals from line items, inclusive date ranges, and correct data aggregation for summarization. Remember to handle joins, groupings, and orderings effectively.

Database schema:
- Customer (CustomerID, FirstName, LastName, Email, Phone, BillingAddress, ShippingAddress, CustomerSince, IsActive)
- Employee (EmployeeID, FirstName, LastName, Email, Phone, HireDate, Position, Salary)
- InventoryLog (LogID, ProductID, ChangeDate, QuantityChange, Notes)
- LineItem (LineItemID, SalesOrderID, ProductID, Quantity, UnitPrice, Discount, TotalPrice)
- Product (ProductID, ProductName, Description, UnitPrice, StockQuantity, ReorderLevel, Discontinued)
- SalesOrder (SalesOrderID, CustomerID, OrderDate, RequiredDate, ShippedDate, Status, Comments, PaymentMethod, IsPaid)
- Supplier (SupplierID, CompanyName, ContactName, ContactTitle, Address, Phone, Email)

Guidelines for SQL query generation:
1. **Ensure Efficiency and Performance**: Opt for JOINs over subqueries where possible, use indexes effectively, and mention any specific performance considerations to keep in mind.
2. **Adapt to Specific Analytical Needs**: Tailor WHERE clauses, JOIN operations, and aggregate functions to precisely meet the analytical question being asked.
3. **Complexity and Variations**: Include a range from simple to complex queries, illustrating different SQL functionalities such as aggregate functions, string manipulation, and conditional logic.
4. **Handling Specific Cases**: Provide clear instructions on managing NULL values, ensuring date ranges are inclusive, and handling special data integrity issues or edge cases.
5. **Explanation and Rationale**: After each generated query, briefly explain why this query structure was chosen and how it addresses the analytical need, enhancing understanding and ensuring alignment with requirements.

-- 1. Average Order Total for Customers without a Registered Phone Number Within a Specific Period
SELECT AVG(TotalPrice) FROM LineItem
JOIN SalesOrder ON LineItem.SalesOrderID = SalesOrder.SalesOrderID
JOIN Customer ON SalesOrder.CustomerID = Customer.CustomerID
WHERE Customer.Phone IS NULL AND SalesOrder.OrderDate BETWEEN '2003-01-01' AND '2009-12-31';
-- Rationale: Analyzes spending behavior of uncontactable customers within a set timeframe, aiding targeted marketing strategies.

-- 2. List Top 10 Employees by Salary
SELECT * FROM Employee ORDER BY Salary DESC LIMIT 10;
-- Rationale: Identifies highest-earning employees for payroll analysis and salary budgeting.

-- 3. Find the Total Quantity of Each Product Sold Last Month
SELECT Product.ProductName, SUM(LineItem.Quantity) AS TotalQuantitySold
FROM Product
JOIN LineItem ON Product.ProductID = LineItem.ProductID
JOIN SalesOrder ON LineItem.SalesOrderID = SalesOrder.SalesOrderID
WHERE SalesOrder.OrderDate BETWEEN DATE_SUB(NOW(), INTERVAL 1 MONTH) AND NOW()
GROUP BY Product.ProductID;
-- Rationale: Helps in inventory management by highlighting sales performance of products, informing restocking decisions.

-- 4. Show Sales by Customer for the Current Year, Including Customer Details
SELECT Customer.FirstName, Customer.LastName, SUM(LineItem.TotalPrice) AS TotalSales
FROM Customer
JOIN SalesOrder ON Customer.CustomerID = SalesOrder.CustomerID
JOIN LineItem ON SalesOrder.SalesOrderID = LineItem.SalesOrderID
WHERE YEAR(SalesOrder.OrderDate) = YEAR(CURDATE())
GROUP BY Customer.CustomerID;
-- Rationale: Identifies top customers based on yearly sales, supporting personalized customer service and loyalty programs.

-- 5. Identify Products That Need Reordering (Stock Quantity Below Reorder Level)
SELECT ProductName, StockQuantity, ReorderLevel FROM Product WHERE StockQuantity <= ReorderLevel;
-- Rationale: Essential for inventory control, prompting restocking of products to meet demand efficiently.

-- 6. Display All Suppliers That Have Not Supplied Any Products That Are Currently Discontinued
SELECT Supplier.CompanyName FROM Supplier
LEFT JOIN Product ON Supplier.SupplierID = Product.SupplierID
WHERE Product.Discontinued = 0
GROUP BY Supplier.SupplierID;
-- Rationale: Evaluates supplier contributions to the supply chain by focusing on those with active product lines.

Remember to adapt queries based on the actual question context, utilizing the appropriate WHERE clauses, JOIN operations, and aggregate functions to meet the specific analytical needs.

Sample records for the Supplier table:
- SupplierID: 29, CompanyName: Hogan-Anderson, ContactName: Sierra Carey, ContactTitle: Mining engineer, Address: 246 Johnny Fords Apt. 858, Williamsport, AK 96920, Phone: 232.945.6443, Email: rodney04@example.com
- SupplierID: 30, CompanyName: Nixon, Woods and Pearson, ContactName: Lawrence Phillips, ContactTitle: Aid worker, Address: USS Osborn, FPO AE 24294, Phone: 001-462-571-0185x478, Email: jessica29@example.org

Sample records for the Product table:
- ProductID: 1, ProductName: Reflect Sea, Description: Factor country center price pretty foreign theory paper fact machine two., UnitPrice: 191.19, StockQuantity: 665, ReorderLevel: 46, Discontinued: 1
- ProductID: 2, ProductName: Avoid American, Description: Skill environmental start set bring must job early per weight difficult someone., UnitPrice: 402.14, StockQuantity: 970, ReorderLevel: 15, Discontinued: 1
- ProductID: 3, ProductName: Evening By, Description: Whether high bill though each president another its., UnitPrice: 12.81, StockQuantity: 842, ReorderLevel: 32, Discontinued: 1
- ProductID: 4, ProductName: Certain Identify, Description: Spring identify bring debate wrong style hit., UnitPrice: 155.22, StockQuantity: 600, ReorderLevel: 27, Discontinued: 1
- ProductID: 5, ProductName: Impact Agreement, Description: Whom ready entire meeting consumer safe pressure truth., UnitPrice: 368.72, StockQuantity: 155, ReorderLevel: 35, Discontinued: 0
- ProductID: 6, ProductName: Million Agreement, Description: Glass why team yes reduce issue nothing., UnitPrice: 297.03, StockQuantity: 988, ReorderLevel: 36, Discontinued: 1
- ProductID: 7, ProductName: Foot Vote, Description: Anyone floor movie maintain TV new age prove certain really dog., UnitPrice: 28.75, StockQuantity: 828, ReorderLevel: 24, Discontinued: 0
- ProductID: 8, ProductName: Somebody Current, Description: Politics since exactly film idea Republican., UnitPrice: 202.9, StockQuantity: 317, ReorderLevel: 18, Discontinued: 0
- ProductID: 9, ProductName: Somebody Character, Description: Long agreement history administration purpose conference including., UnitPrice: 300.38, StockQuantity: 242, ReorderLevel: 30, Discontinued: 1
- ProductID: 10, ProductName: Low Idea, Description: Spend guess somebody spend fight director technology find between college skill., UnitPrice: 34.68, StockQuantity: 65, ReorderLevel: 27, Discontinued: 0

Use the above schema and sample records to generate syntactically correct SQL queries. For example, to query the list of discontinued products, or to find products below a certain stock quantity.

Sample records for the Employee table:
- EmployeeID: 1, FirstName: Danny, LastName: Morales, Email: catherine08@example.com, Phone: 001-240-574-6687x625, HireDate: 2021-06-16, Position: Medical technical officer, Salary: 36293
- EmployeeID: 2, FirstName: William, LastName: Spencer, Email: sthompson@example.com, Phone: (845)940-2095x693, HireDate: 2023-08-22, Position: English as a foreign language teacher, Salary: 51775
- EmployeeID: 3, FirstName: Brian, LastName: Stark, Email: hughesmelissa@example.com, Phone: 780.299.1965x06374, HireDate: 2023-02-24, Position: Pharmacologist, Salary: 11963
- EmployeeID: 4, FirstName: Sarah, LastName: Cannon, Email: brittney20@example.com, Phone: 512.717.8995x05793, HireDate: 2019-05-23, Position: Physiological scientist, Salary: 69878
- EmployeeID: 5, FirstName: Lance, LastName: Bell, Email: patrick57@example.net, Phone: +1-397-320-2600x803, HireDate: 2019-06-22, Position: Scientific laboratory technician, Salary: 56499
- EmployeeID: 6, FirstName: Jason, LastName: Larsen, Email: teresaharris@example.org, Phone: +1-541-955-5657x7357, HireDate: 2022-11-02, Position: Proofreader, Salary: 89756
- EmployeeID: 7, FirstName: Kyle, LastName: Baker, Email: nathanielmiller@example.net, Phone: +1-863-658-3715x6525, HireDate: 2019-10-30, Position: Firefighter, Salary: 96795
- EmployeeID: 8, FirstName: Jennifer, LastName: Hernandez, Email: sarah43@example.org, Phone: 267-588-3195, HireDate: 2021-01-10, Position: Designer, interior/spatial, Salary: 37584
- EmployeeID: 9, FirstName: Shane, LastName: Meyer, Email: perrystanley@example.org, Phone: 001-686-918-6486, HireDate: 2021-04-14, Position: Retail manager, Salary: 69688
- EmployeeID: 10, FirstName: Christine, LastName: Powell, Email: tanderson@example.org, Phone: 427.468.2131, HireDate: 2019-05-11, Position: Sports administrator, Salary: 39962

Use the above schema and sample records to generate syntactically correct SQL queries. For example, to query the top 10 employees by salary, or to find employees hired within a specific period.

Sample records for the Customer table:
- CustomerID: 1, FirstName: Sandra, LastName: Cruz, Email: rhonda24@example.net, Phone: 511-949-6987x21174, BillingAddress: "18018 Kyle Streets Apt. 606, Shaneville, AZ 85788", ShippingAddress: "18018 Kyle Streets Apt. 606, Shaneville, AZ 85788", CustomerSince: 2023-05-02, IsActive: 0
- CustomerID: 2, FirstName: Robert, LastName: Williams, Email: traciewall@example.net, Phone: 944-649-2491x60774, BillingAddress: "926 Mitchell Pass Apt. 342, Brianside, SC 83374", ShippingAddress: "926 Mitchell Pass Apt. 342, Brianside, SC 83374", CustomerSince: 2020-09-01, IsActive: 0
- CustomerID: 3, FirstName: John, LastName: Greene, Email: travis92@example.org, Phone: 279.334.1551, BillingAddress: "36019 Bill Manors Apt. 219, Dominiquefort, AK 55904", ShippingAddress: "36019 Bill Manors Apt. 219, Dominiquefort, AK 55904", CustomerSince: 2021-03-15, IsActive: 0
- CustomerID: 4, FirstName: Steven, LastName: Riley, Email: greennathaniel@example.org, Phone: +1-700-682-7696x189, BillingAddress: "76545 Hebert Crossing Suite 235, Forbesbury, MH 14227", ShippingAddress: "76545 Hebert Crossing Suite 235, Forbesbury, MH 14227", CustomerSince: 2022-12-05, IsActive: 0
- CustomerID: 5, FirstName: Christina, LastName: Blake, Email: christopher87@example.net, Phone: 584.263.4429, BillingAddress: "8342 Shelly Fork, West Chasemouth, CT 81799", ShippingAddress: "8342 Shelly Fork, West Chasemouth, CT 81799", CustomerSince: 2019-11-12, IsActive: 0
- CustomerID: 6, FirstName: Michael, LastName: Stevenson, Email: lynnwilliams@example.org, Phone: 328-637-4320x7025, BillingAddress: "7503 Mallory Mountains Apt. 199, Meganport, MI 81064", ShippingAddress: "7503 Mallory Mountains Apt. 199, Meganport, MI 81064", CustomerSince: 2024-01-01, IsActive: 1
- CustomerID: 7, FirstName: Anna, LastName: Kramer, Email: steven23@example.org, Phone: +1-202-719-6886x844, BillingAddress: "295 Mcgee Fort, Manningberg, PR 93309", ShippingAddress: "295 Mcgee Fort, Manningberg, PR 93309", CustomerSince: 2022-03-06, IsActive: 1
- CustomerID: 8, FirstName: Michael, LastName: Sullivan, Email: bbailey@example.com, Phone: 988.368.5033, BillingAddress: "772 Bruce Motorway Suite 583, Powellbury, MH 42611", ShippingAddress: "772 Bruce Motorway Suite 583, Powellbury, MH 42611", CustomerSince: 2019-03-23, IsActive: 1
- CustomerID: 9, FirstName: Kevin, LastName: Moody, Email: yoderjennifer@example.org, Phone: 3425196543, BillingAddress: "371 Lee Lake, New Michaelport, CT 99382", ShippingAddress: "371 Lee Lake, New Michaelport, CT 99382", CustomerSince: 2023-12-03, IsActive: 1
- CustomerID: 10, FirstName: Jeremy, LastName: Mejia, Email: spencersteven@example.org, Phone: 449.324.7097, BillingAddress: "90137 Harris Garden, Matthewville, IA 39321", ShippingAddress: "90137 Harris Garden, Matthewville, IA 39321", CustomerSince: 2019-05-20, IsActive: 1

These sample records provide a clear representation of the data structure for customers within the database schema. Use these details to assist in generating queries that involve customer information, such as filtering active customers, summarizing sales by customer, or identifying long-term customers.

Sample records for the InventoryLog table:
- LogID: 1, ProductID: 301, ChangeDate: 2023-09-08, QuantityChange: 84, Notes: Inventory increased
- LogID: 2, ProductID: 524, ChangeDate: 2023-08-09, QuantityChange: -84, Notes: Inventory decreased
- LogID: 3, ProductID: 183, ChangeDate: 2023-04-17, QuantityChange: -51, Notes: Inventory decreased
- LogID: 4, ProductID: 390, ChangeDate: 2023-02-27, QuantityChange: 80, Notes: Inventory increased
- LogID: 5, ProductID: 737, ChangeDate: 2023-11-15, QuantityChange: 24, Notes: Inventory increased
- LogID: 6, ProductID: 848, ChangeDate: 2023-11-22, QuantityChange: 69, Notes: Inventory increased
- LogID: 7, ProductID: 534, ChangeDate: 2023-06-06, QuantityChange: -61, Notes: Inventory decreased
- LogID: 8, ProductID: 662, ChangeDate: 2024-01-16, QuantityChange: 70, Notes: Inventory increased
- LogID: 9, ProductID: 969, ChangeDate: 2024-01-07, QuantityChange: -25, Notes: Inventory decreased
- LogID: 10, ProductID: 640, ChangeDate: 2023-08-08, QuantityChange: -13, Notes: Inventory decreased

These sample records provide insights into the inventory adjustments for different products within the database schema. Utilize these details to assist in generating queries that track inventory changes, analyze stock levels, or evaluate inventory management efficiency.

Sample records for the LineItem table:
- LineItemID: 1, SalesOrderID: 280, ProductID: 290, Quantity: 3, UnitPrice: 84.59, Discount: NULL, TotalPrice: 253.77
- LineItemID: 2, SalesOrderID: 94, ProductID: 249, Quantity: 6, UnitPrice: 88.7, Discount: NULL, TotalPrice: 532.2
- LineItemID: 3, SalesOrderID: 965, ProductID: 247, Quantity: 1, UnitPrice: 43.44, Discount: NULL, TotalPrice: 43.44
- LineItemID: 4, SalesOrderID: 173, ProductID: 16, Quantity: 10, UnitPrice: 26.3, Discount: NULL, TotalPrice: 263
- LineItemID: 5, SalesOrderID: 596, ProductID: 191, Quantity: 9, UnitPrice: 59.44, Discount: NULL, TotalPrice: 534.96
- LineItemID: 6, SalesOrderID: 596, ProductID: 308, Quantity: 8, UnitPrice: 33.11, Discount: NULL, TotalPrice: 264.88
- LineItemID: 7, SalesOrderID: 960, ProductID: 758, Quantity: 5, UnitPrice: 64.47, Discount: NULL, TotalPrice: 322.35
- LineItemID: 8, SalesOrderID: 148, ProductID: 288, Quantity: 5, UnitPrice: 65.21, Discount: NULL, TotalPrice: 326.05
- LineItemID: 9, SalesOrderID: 974, ProductID: 706, Quantity: 3, UnitPrice: 59.86, Discount: NULL, TotalPrice: 179.58
- LineItemID: 10, SalesOrderID: 298, ProductID: 998, Quantity: 2, UnitPrice: 75.79, Discount: NULL, TotalPrice: 151.58

These sample records illustrate various line items associated with sales orders in the database. These details help in constructing queries to analyze sales performance, product popularity, pricing strategies, and overall sales revenue.

Sample records for the SalesOrder table:
- SalesOrderID: 1, CustomerID: 12, OrderDate: 2022-11-05, RequiredDate: 2022-12-02, ShippedDate: 2022-11-25, Status: Pending, Comments: NULL, PaymentMethod: NULL, IsPaid: 0
- SalesOrderID: 2, CustomerID: 56, OrderDate: 2022-02-22, RequiredDate: 2022-03-08, ShippedDate: 2022-03-17, Status: Completed, Comments: NULL, PaymentMethod: NULL, IsPaid: 1
- SalesOrderID: 3, CustomerID: 63, OrderDate: 2023-03-20, RequiredDate: 2023-03-27, ShippedDate: NULL, Status: Shipped, Comments: NULL, PaymentMethod: NULL, IsPaid: 0
- SalesOrderID: 4, CustomerID: 21, OrderDate: 2023-04-29, RequiredDate: 2023-05-26, ShippedDate: 2023-05-14, Status: Pending, Comments: NULL, PaymentMethod: NULL, IsPaid: 1
- SalesOrderID: 5, CustomerID: 16, OrderDate: 2022-11-05, RequiredDate: 2022-11-30, ShippedDate: NULL, Status: Shipped, Comments: NULL, PaymentMethod: NULL, IsPaid: 1
- SalesOrderID: 6, CustomerID: 46, OrderDate: 2023-10-06, RequiredDate: 2023-10-27, ShippedDate: NULL, Status: Shipped, Comments: NULL, PaymentMethod: NULL, IsPaid: 1
- SalesOrderID: 7, CustomerID: 47, OrderDate: 2023-02-08, RequiredDate: 2023-02-25, ShippedDate: 2023-03-03, Status: Shipped, Comments: NULL, PaymentMethod: NULL, IsPaid: 1
- SalesOrderID: 8, CustomerID: 70, OrderDate: 2022-07-29, RequiredDate: 2022-08-18, ShippedDate: 2022-08-10, Status: Pending, Comments: NULL, PaymentMethod: NULL, IsPaid: 0
- SalesOrderID: 9, CustomerID: 14, OrderDate: 2022-03-29, RequiredDate: 2022-04-15, ShippedDate: 2022-04-17, Status: Completed, Comments: NULL, PaymentMethod: NULL, IsPaid: 0
- SalesOrderID: 10, CustomerID: 31, OrderDate: 2024-01-12, RequiredDate: 2024-01-31, ShippedDate: 2024-02-07, Status: Pending, Comments: NULL, PaymentMethod: NULL, IsPaid: 0

These sample records provide insights into sales order management within the database, including order status, shipping details, payment methods, and customer IDs. This information is crucial for analyzing sales processes, order fulfillment rates, customer engagement, and payment transactions.

"""

7. Оптимизация SQL-запросов

После создания оператора SQL система может оптимизировать запрос SQL для повышения эффективности запроса. Например, добавьте индексы, оптимизируйте планы запросов и т. д.

  • Этапы оптимизации
    • Определить индекс:существоватьyearиsales_amount字段上检查是否有适当из索引。
    • Переписать запрос:нравиться果有需要,系统可以通过Запрос优化器Переписать запрос для улучшения производительности.
    • алгоритм:Запрос优化алгоритм,Например, оптимизатор запросов на основе затрат (Cost-Based Optimizer, CBO).
  • результат:优化后изSQLзаявление(В данном случае Центральные равниныSQLзаявление已经较为简单,дальнейшая оптимизация не требуется).

8. Выполнение SQL и отображение результатов

Оптимизированный оператор SQL отправляется в базу данных для выполнения, и база данных возвращает набор результатов. Система преобразует результаты запроса в удобные для пользователя формы для отображения, такие как таблицы, диаграммы или другие визуальные формы.

  • выполнение SQL:Подключиться через базу данных,Выполните сгенерированный SQL-запрос.
  • результатвыставка:将数据库返回изрезультат集以表格或图表из形式呈现给用户。
  • алгоритм:基于数据库из Запрос引擎进行执行,результат Демонстрирует использование инструментов визуализации (таких как Matplotlib, Plotly).
  • Примервыход

product_name

sales_amount

Продукт А

15000000

Продукт Б

12000000

Продукт С

11000000

Два показателя для оценки модели: уровень точного совпадения и уровень точности исполнения.

  • Execution Accuracy
    • Определение: рассчитать выполнение SQLрезультат Правильное количество пропорций в наборе данных, возможно завышение результата.
  • Exact Match
    • Определение. Вычислите степень соответствия между SQL, сгенерированным моделью, и аннотированным SQL.,Результат Существует вероятность недооценки.

Подвести итог

Появление NL2SQL полностью изменило способ взаимодействия людей с данными. Он работает, скрывая сложные SQL-запросы под вводом. на естественном За языком, порог сбора данных значительно снижен, что позволяет бизнес-персоналу напрямую получать необходимую информацию, не полагаясь на техническую подготовку. Благодаря постоянному развитию технологий обработки естественного языка сценарии применения NL2SQL будут становиться все более и более обширными, охватывая различные области, от корпоративной отчетности до интеллектуального обслуживания клиентов. В будущем, благодаря расширенным возможностям обобщения модели и оптимизации производительности в реальном времени, мы можем ожидать, что технология NL2SQL играет более важную роль в принятии решений на основе данных, делая возможным «бесплатный обмен данными с данными».

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose