Text-to-SQL на Mistral AI, Neon и LangChain

Урок 120 из 148 курса «Mistral AI Cookbook»: официальный курс Mistral AI Cookbook (Мистраль) на русском языке. Урок входит в платный доступ; первые уроки курса бесплатно.

О чём урок

Преобразование запросов на естественном языке в SQL-операторы является мощным применением больших языковых моделей (LLM). Хотя можно напрямую попросить LLM сгенерировать SQL на основе промпта на естественном языке, это сопряжено с ограничениями. LLM может сгенерировать синтаксически некорректный SQL, поскольку диалект SQL различается в разных реляционных базах данных. LLM не имеет доступа ко всей схеме базы данных, именам таблиц и столбцов или индексам, что ограничивает ее способность генерировать точные/эффективные запросы. Передача полной схемы в качестве входных данных для LLM каждый раз может быть дорогостоящей. Предварительно обученные LLM не могут адаптироваться к обратной связи от пользователя и меняющимся текстовым запросам. Альтернативой является finetuning LLM на вашем конкретном наборе данных text-to-SQL, который может включать журналы запросов из вашей базы данных и другой релевантный контекст. Хотя этот подход может улучшить способность LLM генерировать точные SQL-запросы, он по-прежнему имеет ограничения в непрерывной адаптации. Finetuning также может быть дорогостоящим, что может ограничивать частоту обновления модели. LLM отлично справляются с in-context learning, поэтому, предоставляя им релевантную информацию в prompt, мы можем улучшить их output. Это идея, лежащая в основе Retrieval Augmented Generation (RAG) систем, которые объединяют извлечение информации с LLM для генерации более информированных и контекстуальных ответов на запросы. Извлекая релевантную информацию из базы знаний — схемы баз данных, какие таблицы запрашивать и ранее сгенерированные SQL-запросы, мы можем использовать LLM для генерации SQL-запросов, которые являются более точными и эффективными. В этом посте мы рассмотрим создание RAG системы, используя Mistral AI для embeddings и языкового моделирования, а также Neon Postgres в качестве vector database. Neon — это полностью управляемая бессерверная база данных PostgreSQL. Она разделяет хранилище и вычисления, предлагая такие функции, как мгновенное ветвление и автоматическое масштабирование. С расширением pgvector Neon может использоваться как vector database для хранения text embeddings и их запроса.

План урока

  1. Finetuning
  2. RAG systems
  3. RAG для text-to-sql
  4. Настройка и зависимости
  5. Mistral AI API
  6. Neon Database
  7. Python Libraries
  8. Подготовка данных

Урок входит в полный доступ. Полный текст и видео открываются после оплаты. Первые уроки каждого курса бесплатны.

Полезные гиды