В современном мире организации сталкиваются с необходимостью обработки и анализа огромных объемов данных для принятия обоснованных решений [1]. Корпоративные хранилища данных (Data Warehouse) являются ключевым элементом в управлении информацией, предоставляя организациям возможность эффективно хранить и управлять своими данными [2]. Однако с постоянным ростом объемов данных появляется потребность в более сложных и интеллектуальных методах анализа.
Чем тут могут быть полезны LLM
Применение Large Language Model (LLM) в аналитике корпоративного хранилища данных предоставляет новые перспективы в понимании и обработке информации [3]. Уникальная способность LLM к обработке естественного языка позволяет значительно улучшить процессы анализа, выделения ключевых паттернов и предсказания тенденций. Например, исследования показывают, что даже open source LLM, такие как LLaMA-2-13b, могут быть эффективно настроены для выполнения задач аналитики и генерации SQL, что значительно упрощает взаимодействие с базами данных. Этот подход дает возможность даже тем, кто не является профессионалом в аналитике и не знает SQL, получать ценные аналитические данные из корпоративного хранилища.
Кроме того, включение методов, таких как Preference Learning via Database Feedback, который предполагает использование обратной связи от выполнения SQL-запросов для корректировки и улучшения модели, позволяет моделям точнее интерпретировать и обрабатывать данные, что подтверждается успешными экспериментами на различных наборах данных. Более того, интеграция LLM, обладающих специализированными знаниями, как в случае с Data Expert LLM, помогает преодолевать пробелы в данных и повышает точность аналитических результатов [4].
Данный подход открывает новые возможности для организаций, позволяя им максимально эффективно использовать свои данные для принятия обоснованных решений и достижения стратегических целей.
Какие подходы к использованию есть на данный момент
При анализе существующих работ по этой теме можно выделить два фундаментальных применения больших языковых моделей (LLM) в хранилищах данных: извлечение и анализ данных. Рассмотрим подробнее каждое из них.
Извлечение данных с помощью text-to-SQL
Основным методом интеграции LLM в хранилища данных для извлечения данных является паттерн text-to-SQL. Поскольку для анализа данных чаще всего используются реляционные (или имитация реляционности, например, Hive) хранилища данных, возникает задача преобразования естественно-языковых запросов, выраженных в текстовой форме, в структурированные SQL-запросы, которые могут быть выполнены базой данных. Однако данный паттерн можно обобщить и на no-SQL базы данных, что позволяет взаимодействовать с различными типами хранилищ данных.
Так, в статье [5] "How to prompt LLMs for text-to-SQL: A study in zero-shot, single-domain, and cross-domain settings" (Shuaichen Chang и Eric Fosler-Lussier) рассматривается оптимизация генерации SQL-запросов с помощью продуманных промптов. Это включает в себя разработку эффективных стратегий для формулирования запросов, чтобы модели могли генерировать правильные и точные SQL-запросы в различных сценариях (zero-shot, single-domain, cross-domain).
Также стоит отметить работу [6] "Graphix-T5: Mixing Pretrained Transformers with Graph-Aware Layers for Text-to-SQL Parsing" Li Jingliang и соавторов, в которой предложен метод смешивания предобученных трансформеров с графово-осведомленными слоями для парсинга text-to-SQL запросов. Их подход демонстрирует значительные улучшения в точности выполнения SQL-запросов на основе естественного языка.
Пост-обработка результатов SQL-запросов
Пост-обработка результатов SQL-запросов является важным этапом в аналитическом процессе, особенно при работе с большими объемами данных. Большие языковые модели (LLM) могут значительно упростить и улучшить данный этап благодаря автоматизации создания отчетов, резюмирования данных, обнаружению аномалий и генерации текстовых объяснений.
В исследовании [7] "Leveraging Large Language Models for Enhanced Data Analytics" обсуждается применение LLM для автоматического создания отчетов на основе результатов SQL-запросов. Авторы отмечают, что этот подход значительно ускоряет процесс отчетности и уменьшает риск ошибок, связанных с ручным анализом данных.
Одним из примеров успешной продуктовой реализации является система InsightPilot, разработанная группой исследователей из Microsoft Research и HKUST [8]. InsightPilot представляет собой автоматизированную систему исследования данных, основанную на большой языковой модели (LLM). Система взаимодействует с LLM для формирования последовательности аналитических действий, исследования данных и генерации инсайтов, используя естественный язык. InsightPilot предоставляет пользователям графический интерфейс для отправки запросов на текстовом языке и отображения полученной аналитики на экране, подобно BI (Business Intelligence) инструментам.
Также существуют успешные кейсы в применении LLM даже для администрирования баз данных. Например, в ещё одной работе по этой теме [9] "LLM As DBA" (Zhou, X., Li, G., & Liu, Z) представлено решение по созданию целой экосистемы LLM агентов, каждый из которых отвечает за свой аспект поддержки базы данных, принимает данные из периодического мониторинга системы, которые передаются в текстовом виде, и на их основе делает уведомления, которые тоже являются текстовой информацией. То есть, мы получаем идеальные условия для применения LLM для такого вида задач. Данное решение интересно тем, что легко масштабируется на любое количество таких агентов, что может играть ключевую роль для поддержки действительно больших систем хранения данных.
Preference learning via database feedback
В современном мире, где данные играют ключевую роль в принятии решений и стратегическом планировании, обеспечение высокой точности и релевантности запросов к базам данных становится критически важным. Одним из подходов, направленных на улучшение точности запросов и адаптацию моделей к специфическим требованиям конкретных баз данных, является метод обучения на основе предпочтений через обратную связь от базы данных (Preference Learning via Database Feedback). Данный подход был представлен в работе [4] "Knowledge-to-SQL: Enhancing SQL Generation with Data Expert LLM". В исследовании показано, что такие методы позволяют значительно улучшить точность предсказаний и адаптировать модели к специфическим требованиям организации.
Принципы работы
Сбор обратной связи: на первом этапе модель собирает обратную связь от базы данных по результатам выполнения SQL-запросов. Эта обратная связь может включать в себя информацию о времени выполнения запросов, количестве возвращенных строк, индексации используемых таблиц и т.д.
Анализ обратной связи: собранные данные анализируются для выявления паттернов и закономерностей, которые могут указывать на предпочтительные запросы и оптимальные пути выполнения запросов в конкретной базе данных.
Корректировка модели: на основе анализа обратной связи модель корректируется для улучшения точности и эффективности выполнения запросов. Это может включать в себя изменение веса различных компонентов модели, адаптацию алгоритмов парсинга запросов и другие изменения.
Преимущества
Улучшение точности: модель становится более точной в предсказаниях, так как учитывает специфику конкретной базы данных.
Адаптивность: модель адаптируется к изменяющимся условиям и структурам данных, что делает ее более универсальной и устойчивой к изменениям.
Вызовы
Сложность реализации: внедрение системы обратной связи требует значительных ресурсов и времени на настройку и оптимизацию.
Объем данных: для корректной работы модели необходим большой объем данных для обучения и обратной связи.
Метод обучения на основе предпочтений через обратную связь от базы данных представляет собой мощный инструмент для повышения точности и эффективности выполнения SQL-запросов. Этот подход позволяет моделям лучше адаптироваться к уникальным характеристикам конкретных баз данных, обеспечивая более релевантные и точные результаты. Несмотря на вызовы, связанные с его реализацией, преимущества данного метода делают его перспективным направлением в области обработки и анализа данных.
Способы оценки эффективности LLM
Оценка эффективности и точности моделей LLM и text-to-SQL включает использование различных инструментов и метрик, таких как бенчмарки, метрики точности выполнения, а также детальный анализ ошибок и производительности. Эти методы позволяют объективно оценить производительность моделей и выявить направления для их улучшения.
Способы оценки эффективности
Бенчмарки. Использование стандартных бенчмарков, таких как Spider и WikiSQL, для оценки точности моделей text-to-SQL. Эти бенчмарки предоставляют заранее подготовленные наборы данных с естественными языковыми запросами и соответствующими SQL-запросами. Однако при внедрении text-to-SQL необходимо учитывать, что многие существующие бенчмарки фокусируются на структуре базы данных с небольшим количеством строк значений, что может давать ложные оценки качества модели [10]. Появляются и новые решения, такие как BIRD [11], которые ориентированы на большие базы данных и реальные сценарии использования.
Точность выполнения. Основной метрикой, используемой для оценки точности моделей, является точность выполнения (execution accuracy). Эта метрика измеряет долю корректно выполненных SQL-запросов, сгенерированных моделью, по сравнению с эталонными запросами.
Метрики BLEU и ROUGE. Данные метрики были представлены в исследовании [12] "Instruction Tuning for Large Language Models: A Critical Analysis" (Wei Xu, Zhe Gan, Siyu Chen). Для оценки точности моделей используются метрики BLEU (Bilingual Evaluation Understudy) и ROUGE (Recall-Oriented Understudy for Gisting Evaluation). Эти метрики измеряют сходство между сгенерированными моделями ответами и эталонными ответами, что позволяет оценить качество текстовых предсказаний.
Анализ производительности моделей. Включает измерение времени выполнения задач и использование ресурсов, что позволяет оценить эффективность моделей с точки зрения вычислительных затрат.
Пример интеграции LLM в хранилище данных
Для демонстрации конкретного продуктового кейса применения Large Language Model (LLM) был разработан класс OzonCommentsParser, который показывает возможности пост-обработки SQL-запросов с помощью LLM. Этот класс предоставляет метод get_summary, который позволяет провести анализ эмоциональной окраски отзывов, а также получить из этого анализа важную для бизнеса информацию о продуктах на платформе Ozon.
import g4f
import pandas as pd
from sqlalchemy import create_engine
class OzonCommentsParser:
@staticmethod
def get_summary(sku, start_date, end_date, quantity):
conn = f'hive://user:password@host:port'
engine = create_engine(conn, connect_args={'auth': 'LDAP'})
query = f"""
select sku, text.negative as negative
from ozon.unofficial_reviews ur
where sku like '{sku}'
and published_at >= '{start_date}'
and published_at <= '{end_date}'
"""
data = pd.read_sql(query, con=engine)
data = data.groupby('sku').agg({
'negative': lambda x: ';'.join(x)
})
response = g4f.ChatCompletion.create(
model=g4f.models.default,
messages=[{
"role": "user",
"content":
f'''Дана строка подряд идущих отзывов (может пустых),
разделённых символом ";": "{str(data.iloc[0, 0])}". Составь из неё json, по
следующему шаблону: ' + '{ "sku": ' + f'"{sku}", "start_date": "{start_date}",
"end_date": "{end_date}",' + ' "problems": [ { "disadvantage": "",
"frequency": "", "count": "", "weight": "", "solution": "" } ] }, где
disadvantage - достать проблему из отзывов, frequency - посчитать как частно
данная проблема встречается по отношению к общему числу элементов в процентах,
count - посчитать количество отзывов с данной проблемой, weight - придумать
значимость проблемы по шкале от 0 до 100 (где "облысел от шампуня" - 100,
"нет" - 10, остальные больше 10 и меньше 100),' + f' solution - придумать как
производителю решить данную проблему (не может быть пустым). Добавь только
{quantity} объектов "problems" с самым большим "frequency". Распечатай только
json, без лишниего текста.'''
}],
)
start_symbol = response.find('{')
end_symbol = response.rfind(']\n}')
return response[start_symbol:end_symbol+3]
Пример выходных данных
{
"sku": "768984203",
"start date": "2023-09-01",
"end date": "2023-11-01",
"problems": [
{
"disadvantage": "нет",
"frequency": "56.79%",
"count": 45,
"weight": 10,
"solution": "Улучшить качество продукта"
},
{
"disadvantage": "волосы жесткие",
"frequency": "17.95%",
"count": 14,
"weight": 30,
"solution": "Добавить увлажняющие компоненты"
},
{
"disadvantage": "сушит кожу головы",
"frequency": "12.82%",
"count": 10,
"weight": 40,
"solution": "Изменить формулу для более мягкого действия"
},
{
"disadvantage": "неприятный запах",
"frequency": "9.00%",
"count": 8,
"weight": 20,
"solution": "Улучшить ароматизацию продукта"
},
{
"disadvantage": "плохо промывает волосы",
"frequency": "6.41%",
"count": 5,
"weight": 30,
"solution": "Увеличить очищающую способность шампуня"
},
{
"disadvantage": "спутанные волосы",
"frequency": "5.13%",
"count": 4,
"weight": 30,
"solution": "Добавить разглаживающие компоненты"
},
{
"disadvantage": "неудобная крышка",
"frequency": "4.10%",
"count": 3,
"weight": 20,
"solution": "Изменить тип упаковки или улучшить крышку"
}
]
}
Как видно из кода, данный метод использует SQLAlchemy для подключения к Hive-хранилищу и выполнения в нём SQL-запроса для получения данных о существующих отзывах на платформе Ozon, которые имеются у продавца. Отзывы извлекаются в заданном диапазоне дат и для указанного товара (SKU). Затем происходит этап пост-обработки результата SQL-запроса с помощью модели GPT-3 и открытого api к ней. Сама постобработка задается промпт-сообщением, описывающим структуру входных данных и ожидаемого результата. После небольшого препроцессинга ответа модели, формируется JSON-ответ метода с необходимыми данными об анализе, полученных данных.
Данный код является обезличенной production-ready версией кода, который используется у одного из самых крупных поставщиков бытовой химии на платформе Ozon. Данный код позволил автоматизировать ручной процесс анализа отзывов, сократив издержки компании.
Итоги
В данной статье был рассмотрен потенциал и применение Large Language Models (LLM) в аналитике корпоративного хранилища данных. В современном информационном обществе объемы данных растут с каждым годом, требуя более сложных и интеллектуальных методов анализа. Использование LLM предоставляет организациям новые инструменты для извлечения, анализа и интерпретации информации из корпоративных данных.
Основные направления применения LLM включают извлечение данных с помощью text-to-SQL для эффективного взаимодействия с реляционными и no-SQL базами данных, а также пост-обработку результатов SQL-запросов для автоматического создания отчетов и выявления аномалий. Методы, такие как Preference Learning via Database Feedback, позволяют улучшать модели на основе обратной связи от баз данных, что существенно повышает их точность и адаптивность.
Практическое применение LLM продемонстрировано на примере разработанного класса OzonCommentsParser, который автоматизирует анализ отзывов о продуктах, используя SQL-запросы для извлечения данных и LLM для обработки текстовой информации.
Оценка эффективности и точности LLM включает использование различных инструментов и метрик, таких как бенчмарки, точность выполнения SQL-запросов, метрики BLEU и ROUGE, а также анализ производительности моделей.
В заключение, интеграция LLM в корпоративные хранилища данных представляет собой перспективное направление для повышения качества аналитики и принятия обоснованных стратегических решений на основе данных. Эти технологии не только упрощают процессы анализа, но и делают их более доступными и эффективными для широкого круга пользователей, не обладающих глубокими знаниями SQL или аналитического программирования.
Источники
[1] Smith, J. (2020). "Big Data Analytics: Challenges and Opportunities." Journal of Business Analytics, 3(2), 59-80.
[2] Kim, H., & Kim, H. (2016). "A Review of Big Data Storage Technologies." The Journal of Supercomputing, 72(4), 1497-1517.
[3] Brown, T. B., Mann, B., Ryder, N., Subbiah, M., Kaplan, J., Dhariwal, P., ... & Agarwal, S. (2020). "Language models are few-shot learners." arXiv preprint arXiv:2005.14165.
[4] Hong, Z., Yuan, Z., Chen, H., Zhang, Q., Huang, F., & Huang, X. (2024). Knowledge-to-SQL: Enhancing SQL Generation with Data Expert LLM.
[5] Chang, S., & Fosler-Lussier, E. (2023). How to Prompt LLMs for Text-toSQL: A Study in Zero-shot, Single-domain, and Cross-domain Settings.
[6] Li, J., Hui, B., Cheng, R., Qin, B., Ma, C., Huo, N., Huang, F., Du, W., Si, L., & Li, Y. (2023). Graphix-T5: Mixing Pre-Trained Transformers with Graph-Aware Layers for Text-to-SQL Parsing.
[7] Shih, J. Y., Mohanty, V., Katsis, Y., & Subramonyam, H. (2024). Leveraging Large Language Models to Enhance Domain Expert Inclusion in Data Science Workflows.
[8] Ma, P., Ding, R., Wang, S., Han, S., & Zhang, D. (2023). InsightPilot: An LLM-Empowered Automated Data Exploration System. In Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing: System Demonstrations. Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing: System Demonstrations. Association for Computational Linguistics.
[9] Zhou, X., Li, G., & Liu, Z. (2023). LLM As DBA (Version 2).
[10] Li, J., Hui, B., Qu, G., Yang, J., Li, B., Li, B., Wang, B., Qin, B., Cao, R., Geng, R., Huo, N., Zhou, X., Ma, C., Li, G., Chang, K. C. C., Huang, F., Cheng, R., & Li, Y. (2023). Can LLM Already Serve as A Database Interface? A BIg Bench for Large-Scale Database Grounded Text-to-SQLs (Version 3).
[11] Feng, Y., Zhou, B., Lin, W., & Roth, D. (2024). BIRD: A Trustworthy Bayesian Inference Framework for Large Language Models.
[12] Zhang, S., Dong, L., Li, X., Zhang, S., Sun, X., Wang, S., Li, J., Hu, R., Zhang, T., Wu, F., & Wang, G. (2024). Instruction Tuning for Large Language Models: A Survey
Комментарии (5)
Fardeadok
18.06.2024 16:25+2Клево. На хабр начали выкладывать курсовые
pashovpa Автор
18.06.2024 16:25Это тебя так референсы смутили?)
ssmaslov
18.06.2024 16:25+1Вопрос не ко мне но поясню. Половина текста бла-бла про dwh являющиеся основой чего то там, что было актуально лет 20 назад. Через фразу "в совремкнных условиях важнейшей..." Ну и как результат после всех слов 1) никакой интеграции (приведенный код это просто обработка датафрейма как он получен без разницы) 2) никаких хранилищ данных тоже нет (табличка с сырыми данными это не кхд) ну и вишнека на торте список статей из которых к теме относятся две и у Вас из них ничего не применено вообще. Курсовик детектед
janvarev
Коротко - не используйте g4f в продакшне.
g4f основан на реверс инжиниринге публичных точек доступа к GPT - и вы а) никогда не знаете, куда и как он отсылает ваши данные, б) не знаете, какой у него размер контекста, какие ограничения, и что вам придет в результате, в) не знаете, когда точки доступа отвалятся.
Используйте официальный API ChatGPT или лучше Claude 3 Haiku - последняя - сеть с довольно большим контекстом - 128 000 - и дешевой обработкой, дешевле, чем у GPT-3.5; я писал об этом в статье.
2. Не рекомендуется заставлять сети выполнять процентные вычисления "сколько отзывов какого-то типа" - как правило, это не очень хорошая идея (сети плохо умеют в математику). Лучше пусть установят категории, а затем ручками посчитать.
При вызове API часть сетей поддерживают response_format: "json", который, кроме все прочего, заставит сеть вернуть корректный JSON.
pashovpa Автор
Привет! С большей частью согласен. Данный код больше был предложен в качестве примера, тем более, что он до сих пор у них там так и крутится, несмотря на то, что писал я его на коленке за пару часов :)