Как стать автором
Обновить

Настройка PostgreSQL для LLM

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров4.8K

Итак, в этой статье я расскажу, как эффективно настроить PostgreSQL, чтобы вам было проще работать с большими языковыми моделями.

Пока звучит странно, не правда ли? Что я имею в виду? Я имею в виду повышение эффективности создания любых SQL-запросов в базу данных с использованием LLM (ChatGPT, DeepSeek, Llama и других).

Метод, о котором пойдет речь, до безобразия прост и от этого гениален. После прочтения этой статьи вы сможете самостоятельно или в рамках вашей компании увеличить скорость формирования SQL-запросов в 50 раз!

Как эффективно делать запросы LLM для PostgreSQL
Как эффективно делать запросы LLM для PostgreSQL

Готовим БД

Очень важно подготовить PostgreSQL для работы с LLM.

Основные аспекты подготовки:

  • Descriptive variables (Описательные переменные) – самодокументируемые, понятные переменные, названия которых позволяют понять их назначение без углубления в код.

  • Constraints (Ограничения) – должны быть заданы на уровне базы данных. Даже если они прописаны в коде приложения, их необходимо задокументировать и реализовать в БД.

  • Foreign Keys (Внешние ключи) – таблицы должны быть связаны друг с другом с помощью внешних ключей. Это поможет LLM правильно интерпретировать связи между данными и понимать структуру базы.

  • Documentation (Документация) – критически важный пункт. Мы рассмотрим его подробнее, но сразу отмечу: без задокументированной базы данных эффективность работы с LLM значительно снижается.

Если все эти пункты соблюдены – отлично! Но, скорее всего, документации у вас нет. Сейчас я расскажу, почему её наличие принципиально важно.

Пишем документацию

Представим, что у вас уже развернута база данных, и она успешно работает. В ней есть несколько таблиц, например, Users или Roles, с различными полями: email, phone_number и так далее. Количество полей может быть любым – 10, 20, 30, это не столь важно. Главное, чтобы первые три пункта, о которых мы говорили ранее, были реализованы.

Теперь разберем четвертый пункт – документацию базы данных.

Что такое документация PostgreSQL?

Документация в PostgreSQL – это всего две простые команды:

COMMENT ON TABLE table_name IS 'Описание таблицы';
COMMENT ON COLUMN table_name.column_name IS 'Описание колонки';

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

create table public.users
(
    id            bigserial primary key,
    first_name    varchar(255),
    last_name     varchar(255),
    email         varchar(255) not null unique,
    password      varchar(255),
    type          varchar(50),
    is_active     boolean,
    registered_at timestamp    not null,
    jpeg_photo    bytea
);

-- Документация таблиц 
comment on table public.users is 'Таблица пользователей';

-- Документация колонок 
comment on column public.users.id is 'Идентификатор';
comment on column public.users.first_name is 'Имя пользователя';
comment on column public.users.last_name is 'Фамилия';
comment on column public.users.email is 'Электронный адрес';
comment on column public.users.password is 'Пароль';
comment on column public.users.type is 'Тип пользователя (CORE - из базы Метрик, LDAP - из базы LDAP или AD)';
comment on column public.users.is_active is 'Активен ли пользователь';
comment on column public.users.registered_at is 'Дата регистрации пользователя';
comment on column public.users.jpeg_photo is 'User photo in JPEG format';

В команде стоит взять за привычку документировать каждое поле, даже если его назначение кажется очевидным. Например, id – все и так понимают, что это идентификатор, верно? 🙂 Однако лучше все же прописать документацию везде. Это не только снижает вероятность "галлюцинаций" LLM, но и делает базу данных понятнее для всех, кто с ней работает.

Кстати, в примере я использовал комментарии на русском языке, но если в вашей компании принято использовать английский – это тоже отличный вариант.

Почему это важно?

Позже эта документация пригодится не только при работе с LLM, но и:

  • Аналитикам – для быстрого понимания структуры данных,

  • BI-специалистам – при построении отчетов,

  • Другим разработчикам – чтобы быстрее разобраться в базе,

  • Администраторам БД – для удобного сопровождения системы.

Как это выглядит?

В среде разработки JetBrains (например, DataGrip) такие комментарии отображаются прямо в интерфейсе. Аналогичная поддержка есть и в других инструментах работы с БД. Это делает работу с таблицами намного удобнее.

Но что действительно важно – это влияние документации на работу LLM.

По нашим замерам, LLM-модель работает в 4 раза лучше на задокументированной базе данных. Почему так происходит?

Контекст играет ключевую роль в понимании для нейросетей. Чем больше информации о структуре данных у модели, тем точнее и качественнее она формирует SQL-запросы.

В результате:

  • Запросы становятся более корректными,

  • Меньше ошибок и некорректных предположений,

  • Генерация SQL-кода происходит быстрее,

  • Улучшается интерпретация взаимосвязей между таблицами.

Таким образом, качественная документация не только упрощает жизнь разработчикам и аналитикам, но и значительно повышает точность работы LLM при генерации SQL-запросов.

При выгрузке DDL, документация выгружаются вместе с DDL, так как документация является частью схемы БД.

Зачем документация?

Кажды раз пред тем как делать SQL запрос с помощью LLM, стоит в 2 клика выгрузить DDL всей схемы БД, с документацией. Отправить в LLM со словами что бы она запомнила структуру.

И можно абсолютно простым чвеловеческим языком писать в LLM запрсоы достать ту или иную инфомрацию. Даже можно просто сообщения менеджера что-то достать перекидывать в LLM, потом сразу в SQL и доставать нужные данные. Что упростит работу с БД на 90%, и увиличит сокрость создания любых вопросов с данными с LLM на БД на 80%.

Что дальше?

Очевидное развитие этой технологии, что бы все это обновлялось автоматически при накате миграций, и учитывалось в Ci/CD и других процессах. В конечном итоге будет создан такой продукт. Где будет очень простой Web Ui, где челвоек просто задает ему вопросы, на обычном языке и получает грамотные ответы из БД срзу в Web Ui свой. И любой менеджер в компании сможет этим опльзоваться.

Если хотите разработать совместно со мной такой продукт на добровольных началах пишите мне личку или в телеграм если модератор позволит приложить сюда мой телеграм https://t.me/apan98

Теги:
Хабы:
Всего голосов 15: ↑5 и ↓10-3
Комментарии12

Публикации

Истории

Работа

Data Scientist
53 вакансии
Java разработчик
214 вакансий

Ближайшие события

19 марта – 28 апреля
Экспедиция «Рэйдикс»
Нижний НовгородЕкатеринбургНовосибирскВладивостокИжевскКазаньТюменьУфаИркутскЧелябинскСамараХабаровскКрасноярскОмск
22 апреля
VK Видео Meetup 2025
МоскваОнлайн
23 апреля
Meetup DevOps 43Tech
Санкт-ПетербургОнлайн
24 апреля
VK Go Meetup 2025
Санкт-ПетербургОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань
14 мая
LinkMeetup
Москва
20 – 22 июня
Летняя айти-тусовка Summer Merge
Ульяновская область