RoutineOps upd. 17.08.2026 С момента последней статьи сделали много. Так как я условился, что теперь буду выпускать информацию об апдейтах в виде коротких постов, то вот: - Отполирован macOs агент и функционал с FileVault блоком. - Логирование действий под временной админкой. - EN локализация. - Процесс установки/удаления/преустановки агентов отполирован. - Самое главное: удаленное подключение к устройству пользователя прям из WebUI.
Подробнее о проекте и функционале в доках репозитория на гитхабе и в постах: Пост про сам проект, первые шаги и финальный функционал первого Public Release! Пост про разработку enterprise версии. В скором времени подготовлю статью про процесс разработки удаленного подключения, какие были архитектурные решения, сам процесс и финальный результат! Если вам интересно подробнее узнать про какую то функцию или архитектурное решение, то пишите, рад буду пообщаться на тему проекта.
Как поменять firewall на удалённом сервере и не отрезать себе SSH
Настраивать firewall по SSH всегда немного тревожнее, чем кажется в документации. Одно неудачное правило — и вместо аккуратно закрытых портов получаем сервер, до которого теперь нужно добираться через консоль провайдера или просить кого-то вернуть доступ.
26 августа в 19:00 на бесплатном демо-уроке будем разбираться, как работать с nftables на удалённом Linux-сервере так, чтобы изменения можно было вносить контролируемо и без неприятных сюрпризов. Заодно станет понятнее, чем nftables отличается от привычного iptables и что учитывать при постепенном переходе между ними.
Урок проведёт Николай Лавлинский — преподаватель-практик курса «Администратор Linux. Продвинутый уровень». Формат рассчитан на разбор реальной админской задачи, где цена ошибки вполне ощутима.
Больше бесплатных уроков на август собрали в дайджесте — там можно быстро посмотреть темы и выбрать нужную сейчас.
В команде VideoLan (разработчики открытого проекта VLC Media Player) предупредили пользователей о регрессии, проявляющейся в ОС Windows 11. Симптомы проблемы: 30-секундное зависание перед началом воспроизведения некоторых видов файлов, включая MP3. Регрессия объясняется ошибкой, допущенной в приложении Microsoft Defender и проявляющейся после установки последнего обновления Windows 11. Из‑за ошибки каталог с кэшем плагинов VLC был помещён Microsoft Defender в карантин. Для ошибки рекомендуется переустановить VLC, очистить или перегенерировать кэш плагинов командой «vlc ‑-reset‑plugins‑cache». Также проблема может быть решена через добавление vlc.exe в список исключений Microsoft Defender.
Инженеры умеют считать latency, error rate и uptime. Но когда разговор заходит про P&L, LTM и cloud spend — многие предпочитают сделать вид, что это не к ним. Проблема в том, что инфраструктурный счёт приходит вне зависимости от того, кто за него отвечает.
В новом выпуске «В SREду на кухне» вместе с Павлом Зеленовым, руководителем Tech platform billing в Авито, и Валентиной Калещатовой, руководителем продукта Лемана Про, разобрались: где проходит граница между «это задача финансов» и «это должен понимать каждый SRE».
Что на повестке
Кто реально отвечает за инфраструктурный счёт — и что происходит, когда команда этот счёт превышает. Чем Showback отличается от Chargeback и почему этот выбор меняет культуру команды. Как «зомби-ресурсы» тихо съедают бюджет, а observability — до 40% инфраструктурных расходов. Связаны ли FinOps и error budget — оказывается, очень даже. И главный вопрос: как объяснить инженерам стоимость их сервисов, не превращая каждого разработчика в бухгалтера.
До сентября уже рукой подать, а это значит, что пора задуматься как продуктивно провести осень. Как хорошо, что на Хабр Карьере мы собрали курсы по самым разным направлениям — можно выбрать то, что подходит именно вам.
Сегодня решили сделать подборку инструментов без которых сложно представить работу системного администратора. А заодно нашли курсы, на которых можно освоить их с нуля или прокачать уже имеющиеся навыки:
Многие из вас предлагают идеи по развитию продуктов и следят за обновлениями. Чтобы отслеживать релизы было проще, даже если пропустили дайджест, мы переделали старый ченжлог в «Журнал обновлений». В нем записана вся история релизов, изменений и исправлений багов с лета 2024 года.
Что появилось:
1️⃣ Блок «Запланировано» — что сейчас в работе и выйдет в ближайшее время. Прежде чем нести фичу в «Идеи», стоит заглянуть туда.
2️⃣ Поиск — если нужно узнать, добавили ли нужные AI-модели или новую ОС в маркетплейсе.
3️⃣ Теги — показывают, к каким сервисам относится релиз.
4️⃣ Фильтр — по месяцам и сервисам, работает и вместе: например, все обновления S3 за июль.
А если следить за релизами удобнее в Телеграме, обновления дублируются в нашем канале @twc_changelog
OpenAI объявила о доступности предварительной версии десктоп-приложения ChatGPT для платформы Linux, предоставляющего интерфейс для использования ChatGPT, ChatGPT Work и ИИ-агента Codex. Приложение доступно для загрузки в форматах deb и rpm в сборках для архитектур x64 и ARM64. Заявлена поддержка дистрибутивов Ubuntu 24.04/26.04, Debian 13 и Fedora 43/44.
В августе разберем, как быть во всеоружии на случай отказа ЦОД, выбрать инфраструктуру для ИИ-проектов и упростить работу со Spark-задачами. Регистрируйтесь, чтобы не пропустить.
Отказ ЦОД: выстраиваем защиту с DRaaS и BaaS Разберем, как подготовиться к отказу дата-центра и выстроить защиту инфраструктуры с помощью Evolution Disaster Recovery и Evolution Agent Backup. Обсудим, чем отличаются DRaaS, BaaS, репликация и аварийное восстановление, а также как выбрать решение с учетом требований к непрерывности, скорости восстановления и безопасности. 🧑💻 Для кого: ИТ-директора, руководители инфраструктуры, системные администраторы и специалисты по информационной безопасности. 📅 Когда: 18 августа, 11:00 мск. 📍 Где: Онлайн. Зарегистрируйтесь, чтобы задать вопросы спикерам.
ИИ-проекты: когда и как переходить от API к Bare Metal Расскажем, когда API для инференса перестает отвечать требованиям проекта и почему стоит переходить на выделенную инфраструктуру. Разберем, чем Evolution Bare Metal отличается от облачной виртуализации, как подобрать GPU-конфигурацию для инференса, обучения и дообучения моделей, а также как масштабировать ИИ-нагрузки. 🧑💻 Для кого: ML-инженеры, разработчики ИИ-продуктов, архитекторы и технические руководители. 📅 Когда: 25 августа, 11:00 мск. 📍 Где: Онлайн. Зарегистрируйтесь, чтобы задать вопросы спикерам.
Как ИИ помогает создавать и сопровождать Spark-задачи в облаке Покажем, как Evolution Managed Spark с ИИ помогает создавать, запускать и анализировать Spark-задачи с помощью запросов на естественном языке. Разберем работу с данными в Evolution Object Storage, поиск причин ошибок, рекомендации по их устранению и оптимизацию производительности приложений. 🧑💻 Для кого: дата-инженеры, разработчики Spark-приложений, аналитики данных и DevOps-инженеры. 📅 Когда: 27 августа, 11:00 мск. 📍 Где: Онлайн. Зарегистрируйтесь, чтобы задать вопросы спикерам.
Как аптечная сеть «36,6» снизила ИТ-расходы в 1,5 раза после переезда на bare metal
Аптечная сеть «36,6» росла, а инфраструктура за этим не успевала. Аналитические расчеты требовали все больше мощности, а ядро сети держалось на двух коммутаторах Cisco с потолком 1 Гбит/с — в часы пик из-за этого могли сбоить аптеки. Бюджет при этом растягивать не хотелось.
Решением стал переход на bare metal в Рег.облако. Собрали инфраструктуру, которая оставила «36,6» полный контроль над железом и дала запас мощности для роста.
Что сделали:
перенесли больше 400 виртуальных машин за два месяца, без простоев в бизнес-процессах;
в основном ЦОДе — хосты на AMD EPYC с памятью DDR5 и три системы хранения;
заменили ядро сети: вместо упиравшихся в 1 Гбит/с коммутаторов Cisco поставили масштабируемое программное решение;
добавили серверы с GPU под большие языковые модели и резервный ЦОД с объектным хранилищем S3.
В результате расходы на инфраструктуру снизились в 1,5 раза, производительность кластера выросла в среднем на 40%, а ключевой расчет ускорился с 22 до 16 часов. Подробнее о технической реализации — в кейсе на сайте Рег.облака.
Память VDS. Что стоит за строкой «8 ГБ» в тарифе Число в тарифе отвечает на один вопрос: сколько памяти увидит гостевая система. Зарезервирован ли объем физически, может ли гипервизор забрать страницы обратно и что будет при пике соседей, оттуда не следует.
Три слова, которые каждый понимает по своему. Dedicated обычно означает объем, постоянно доступный машине по условиям тарифа. Слово «постоянно» стоит уточнить: резервируется ли память на хосте и может ли ballooning ее уменьшить. В burstable часть доступна всегда, остальное при свободном ресурсе узла. Shared значит, что резервирования нет. Даже при dedicated провайдер может разрешать swap на хосте, поэтому гарантия в договоре важнее названия модели.
Ballooning и overcommit. Ballooning работает через драйвер внутри гостя. По команде хоста он занимает страницы, ядро гостя освобождает кеш или уходит в свой swap, а высвобожденную память гипервизор отдает другим машинам. Пока баллон надут, приложения работают с меньшим объемом, чем в тарифе. Overcommit это когда сумма лимитов больше физической RAM узла. Умеренная переподписка работает годами, пока гости используют часть лимитов. Пример: после резерва под системные процессы на узле осталось 120 ГБ, машинам назначено 180. При суммарном рабочем наборе 80 ГБ никто ничего не заметит. При 140 придется забирать страницы через ballooning или уходить в swap хоста. Overselling это тот же overcommit, но с недостаточным запасом: разница не в технологии, а в коэффициенте.
Что видно изнутри, а что нет. Сразу о границе: коэффициент переподписки из гостевой системы не определяется никак, эти данные есть только у провайдера. Изнутри ловится давление на память и его совпадение с замедлением сервиса.
procs ---swap-- -----io---- ---cpu---
r b si so bi bo us sy id wa st
1 2 184 412 1240 980 22 6 61 10 1
Смотреть надо на MemAvailable, а не на free: файловый кеш при нужде освобождается. Ненулевые si и so в нескольких интервалах подряд это обмен сейчас, а не след прошлого пика.
cat /proc/pressure/memory
some avg10=14.82 avg60=9.31 avg300=3.07 total=8123441
full avg10=6.55 avg60=4.02 avg300=1.18 total=3910228
PSI это доля времени, потерянного задачами из за нехватки памяти. Строка some означает, что простаивала хотя бы одна задача, full что вставала вся работа. Четырнадцать процентов в avg10 при выросшем времени ответа это разговор, а не шум.
journalctl -k -g "oom|Killed process"
Если процесс убило ядро гостя, запись будет здесь. Отсутствие записи при остановившейся машине это отдельный сюжет: OOM хоста может завершить процесс самой машины, и в журнале гостя причины не будет.
Признаки, которые стоит собрать вместе. Задержка растет в одни и те же часы при сопоставимой нагрузке. Устойчивые si и so без изменения профиля приложения. PSI растет синхронно с замедлением. Машина останавливается без записи об OOM у себя. Один признак ничего не доказывает, три совпавших уже повод писать в поддержку с временем эпизодов и метриками.
Что спросить до заказа. Какой объем зарезервирован, а не просто виден. Допускается ли ballooning и до какого минимума. Разрешен ли swap на хосте для памяти машин. Для burstable отдельно: гарантированная часть и условия доступа к остальному.
Тип гипервизора говорит об архитектуре, а не о гарантиях: overcommit поддерживают и KVM, и VMware, и Xen. SLA обычно описывает доступность и компенсацию за простой, но не производительность.
Теперь можно спокойно снимать скринкасты, стримить работу в панели или шарить экран на демо-звонке. Нам, кстати, тоже стало заметно проще записывать для вас инструкции. Все потому, что в панели появился режим стримера.
Включаете — и панель сама блюрит конфиденциальные данные:
И это не тавтология... Проверьте свое знание синтаксиса, критическое мышление и умение вчитываться в ТЗ.
Условие
Идут обычные рабочие будни. Вы — ведущий DevOps-инженер в крупном маркетплейсе. В компании вовсю идет распродажа, и система распределенных вычислений на базе Celery работает на пределе возможностей, обрабатывая терабайты аналитики. В самом начале смены дежурный инженер замечает в системе ровно 100 активных задач. Согласно внутренней архитектуре, эти задачи зациклены: каждая задача после своего успешного завершения автоматически генерирует и ставит в очередь ровно одну новую задачу.
Через пару часов инженер бьет тревогу в рабочий чат: «Ребята, у нас проблема! График застыл! Похоже, планировщик завис или сеть легла, процессы не плодятся!». Вы открываете логи, смотрите на графики мониторинга и… Система работает абсолютно штатно, никакого бага нет.
Задача
Объясните паникующему инженеру, почему его логика отказала. Как так получилось, что количество задач не растет? Напишите простую симуляцию этого процесса на Python, чтобы наглядно показать коллеге, как ведет себя такая очередь.
GitHub превратили в TikTok — теперь новые библиотеки, инструменты и идеи для своих проектов можно находить обычными свайпами. Сервис Roamers показывает бесконечную ленту открытых репозиториев, почти как рилсы. Если войти через GitHub, рекомендации подстроятся под ваши интересы, но листать можно и анонимно.
Представлен открытый проект torlink, который умеет искать и работать с торрентами из проверенных источников. Запускается командой npx torlnk. Одновременно проверяет FitGirl, YTS, The Pirate Bay, 1337x, Nyaa и другие источники, а результаты показывает вместе с размером и числом сидов. Выбранный файл скачивается в фоне, а после завершения автоматически встаёт на раздачу.
«Найти торрент в наши дни — сплошная головная боль. Один сайт — это минное поле из поддельных кнопок загрузки. Другой скрывает настоящую ссылку под всплывающим окном, которое открывает ещё две вкладки. И после всего этого половина результатов — это неработающие сайты с нулевым количеством раздающих. Torlink — это программа для поиска торрентов, которая работает в вашем терминале, не требует никакой настройки и конфигурации. Один поиск проверяет короткий, тщательно отобранный список надёжных источников, и всё, что вы выберете, загрузится прямо на ваш компьютер. Файлы ваши, сохранены в папке загрузок», — пояснил автор проекта.
Что нам стоит override для юнита systemd написать? Подумал я как-то пятничным вечером, да чего там, я 100 раз так делал, 5 минут и справимся. Но не тут-то было, в посте хочу разобрать основные ошибки создания override.
Для начала немного теории - зачем он нужен. Как правило такая потребность возникает в сценариях:
автор ОС/пакета предусмотрел плохие дефолты или не подходящие для вас. классический пример PrivateTmp=Yes для exim или чего-то похожего
вам хочется дополнить/исправить логику работы демона, например очистить кэш, перегенерировать какой-то uuid перед стартом
юнит начал много кушать сокетов/памяти и вам хочется расширить-зарезать оные персонально этому юниту. зачастую плохая идея зарезать для определенного класса софта
да зачем нужен override, я просто внесу нужные изменения в юнит? нужен, потому что при любом обновлении dnf/apt системный пакет перетрет ваши изменения и вы очень долго будете искать потом что сломалось
Итак, основные ошибки при созданию override файлов:
мы все любим в deb based дистрибутивах цветовую схему nano по-умолчанию, прочитать блеклый текст между каких строк нужно писать я с первого раза не смог
писать надо строго по стрелочке, а не расскоментировать пример
писать нужно включая секцию, но это я помнил и так, пример
### Editing /etc/systemd/system/ssh.service.d/override.conf
### Anything between here and the comment below will become the contents of the drop-in file
[Service]
ExecStartPre=
### Edits below this comment will be discarded
у systemd нет шелла. совсем. поэтому пайпы, редиректы и все что связано не работают пример нерабочего оверрайда [Service] ExecStartPre=/usr/bin/uuidgen > /tmp/123 пример правильного [Service] ExecStartPre=/bin/sh -c "/usr/bin/uuidgen > /tmp/123"
без прямого указания шелла у вас uuidgen будет просто выплевываться в journalctl
После правки изменения нужно сохранить и сказать systemctl daemon-reload. Проверить внесенные изменения можно systemctl cat unitname, что не очень наглядно, лучше использовать systemctl status unitname будет виден результирующий юнитфайл.
В июле запустили третий этап Free Tier — бесплатный облачный сервер, ресурсов которого хватает уже на бизнес-проекты. Плюс упростили работу с ispmanager, открыли линейку «Стандартные» в двух регионах, добавили готовые образы в аттестованный контур ФЗ-152 и поделились исследованием о спросе на облако и GPU. Ниже — главное.
Запустили третий этап Free Tier — теперь и для бизнес-нагрузок
Расширили бесплатный облачный сервер до конфигурации, которой хватает для корпоративных порталов, крупных интернет-магазинов и ресурсоемких сервисов. На третьем этапе Free Tier дает выделенный облачный сервер бесплатно на два месяца: два виртуальных ядра, 4 ГБ оперативной памяти и 40 ГБ NVMe. Сервер подходит для проектов на «1С-Битрикс», переноса крупных сайтов с виртуального хостинга, баз данных и подготовки CI/CD-сред.
Исследование: спрос смещается к облаку, bare metal и GPU
Посмотрели, как за два года изменился спрос бизнеса на инфраструктуру. В публичном облаке акцент сместился с запуска проектов на резервирование: снапшоты используют 35,2% компаний малого бизнеса и 37% среднего. В dedicated и bare metal стало больше крупных клиентов — число компаний с расходами выше 500 тыс. руб. в месяц выросло более чем вдвое.
Особенно вырос спрос на GPU: за январь–июнь 2026 г. потребление прибавило 507% год к году. Чаще всего берут NVIDIA A4000 — у 63% компаний, и приходят за ускорителями уже не только ИТ, но и электронная коммерция, производство, логистика и финансы.
Управление ispmanager для выделенных серверов в личном кабинете Рег.облака
Теперь панель ispmanager для выделенных серверов можно заказать и настроить прямо в личном кабинете Рег.облака. Если панель уже подключена, в интерфейсе ЛК виден блок с доступами и ссылкой на саму панель на сервере.
Открыли линейку «Стандартные» в Москве-1 и Санкт-Петербурге-1
Добавили новые конфигурации в двух регионах. При заказе появился переключатель диска — хранилище можно подобрать под свою задачу сразу на этапе заказа.
Готовые образы GitLab, GitLab Runner, Nextcloud и Portainer в регионе Москва ФЗ-152
В аттестованном контуре появились предустановленные инструменты для разработки и совместной работы. Развернуть нужное решение в защищенной среде можно без ручной настройки.
Разобрали свои продукты в статьях
В июле вышли два продуктовых обзора на Хабре — если пропустили, читайте:
Все, что нужно знать DevOps-инженеру: сводка за лето 2026
Мы почитали за вас все release notes, статус-страницы, постмортемы и блоги, чтобы вы могли спокойно провести последний месяц лета. Вот краткая выжимка того, что реально стоит внимания.
⏰ Пять дедлайнов, которые уже наступили
Prometheus 3.5 LTS перестал поддерживаться 31 июля. Новая 3.13 LTS будет поддеживаться до 31 июля 2027. Лучше прямо сейчас запланировать переход всех инстансов Prometheus с 3.5 LTS и других устаревающих версий на актуальную 3.13 LTS. Не забудьте проверить совместимость стека и протестировать обновление в staging.
В Argo CD обнаружились три уязвимости. Утечка секретов через ServerSideDiff (CVE-2026-43824), обход авторизации (CVE-2026-42880) и RCE в repo-server (CVE-2026-15416). Затронуты 3.2.0–3.2.10 и 3.3.0–3.3.8, учитывая, что как раз вышла свежая версия 3.5, самое время обновиться.
Self-hosted runner ниже 2.329.0 не зарегистрируется. GitHub просто перестанет пускать к себе раннеров-старичков. Лучше обновиться, чтобы не словить падение CI/CD, на установку свежей версии теперь отводится 30 дней.
Выпущены патчи Etcd: v3.7.1, v3.6.14 и v3.5.33. Они закрывают утечку watch-ответов через границы RBAC и неограниченное создание goroutine на TLS-handshake. Проверьте, не используете ли вы ту версию etcd, которая дает возможность читать ключи и DoS’ить кластер, ну и не забудьте обновиться.
⚙️Про куберы
Kubernetes научился более умно работать с GPU и другим специальным железом. DRA (Dynamic Resource Allocation) вырос из «пробной» технологии, в штатный механизм. Теперь можно описывать, какое именно устройство вам нужно при выделении, как его делить и что делать при отказе.
Linkerd научился замечать, что конкретный сервис уже перегружен, и направлять новые запросы к другим доступным репликам: у версии Linkerd 2.20 появилась rate-limit-aware балансировка, а destination controller основательно переработали.
Istio добавил экспериментальный agentgateway — отдельный gateway‑proxy для ИИ‑агентов и MCP‑серверов. Еще развивается ambient multicluster: можно соединять сервисы в нескольких Kubernetes‑кластерах в одну mesh‑сеть без sidecar’а в каждом поде.
⛓️💥Про цепочки поставок
4 августа произошла масштабнейшая атака на цепочку поставки npm: в более чем 400 легитимных JavaScript‑пакетов встроили червя ChainDrop, который при установке крадет секреты разработчика или CI/CD и с украденным npm‑токеном сам заражает следующие пакеты. Работа для каждого на ближайшие недели — проверить dependency tree и lockfiles на скомпрометированные версии, очистить npm/yarn‑кеши в CI и на рабочих машинах, ну и отозвать и перевыпустить все доступные там секреты с чистого хоста.
CISA обновила минимальные элементы SBOM: подпись автора, инструмент генерации, хеш и алгоритм, лицензия, явные unknowns, машиночитаемость. CRA тоже требует вести машиночитаемый SBOM, поэтому тем, кто работает с рынком ЕС, уже стоит встроить генерацию и хранение SBOM в CI/CD: с декабря 2027 года он станет обязательным.
📊Про наблюдаемость
OpenTelemetry стал graduated-проектом CNCF, это по факту означает, что теперь у нас есть вендоронезависимый стандарт для сбора метрик, логов и трейсов, на который можно опираться при построении наблюдаемости.
Wake word устройство ловит локально, а дальше все идет на сервер: ASR переводит звук в текст, NLU достает интент, система выполняет действие, TTS озвучивает ответ. Сервер при этом чаще всего чужой. Вместе с аудио туда попадает и то, на чем ассистента обучали — внутренние инструкции, переписка, документы.
В статье разобрали путь команды от микрофона до ответа и объяснили, почему модели спотыкаются на омофонах и шуме.
🤖 AI-агенты для Ansible: как делегировать рутину и не писать плейбуки руками — бесплатный стрим 12 августа
Я перестал писать Ansible-плейбуки руками. Вообще. Вместо этого у меня работает AI-агент, который знает лучшие паттерны, понимает мою инфраструктуру и сам пишет роли, модули, соединяет их и поднимает всё необходимое. Недавно он за вечер собрал связку Terraform + Ansible на новом сервере — и справился лучше, чем я ожидал.
На стриме покажу, как это устроено изнутри:
🔧 Архитектура AI-агента для Ansible: база знаний, инструментарий, что дёргать и как дёргать 📜 Как агент пишет роли и модули: промпты, валидация, итеративное исправление ошибок 🖥 Живой пример: поднимем инфраструктуру с нуля руками агента — в реальном времени 💡 Границы применимости: что агент делает хорошо, а что пока лучше делать самому
Андрей Чуян — основатель DebugSkills, автор AI-агента для работы с Ansible, спикер лабораторных по AI-оркестрации и Kubernetes.
📅 12.08.2026, 19:00 (МСК) 📡 ktalk ⏱️ 45 мин контент + 15 мин Q&A
> «Я ушёл из рутины, делегировал Ansible AI-агенту, который занимается этим.» — Андрей Чуян, из диалога с участником на лекции Jenkins
Это не вебинар и не лабораторная. Это живой разговор о том, как AI меняет работу DevOps-инженера уже сегодня. Без продаж, без подписок — просто приходите и смотрите.
Как реализовать семантический поиск для RAG-архитектуры в PostgreSQL без усложнения инфраструктуры?
Ситуация: вы разрабатываете чат-бота для техподдержки на базе RAG-архитектуры. Используете PostgreSQL как хранилище знаний и делаете поиск по текстовым полям, но качество ответов нестабильное: система плохо справляется с синонимами, профессиональным сленгом и переформулировками запросов. Обязательно ли внедрять отдельную векторную базу данных, или можно реализовать семантический поиск прямо в PostgreSQL? Возможна ли простая проверка продуктовой гипотезы без усложнения архитектуры?
Да, семантический поиск в RAG-сценариях можно реализовать прямо в PostgreSQL без выделенной векторной базы данных (ClickHouse, Opensearch, Qdrant, Milvus и т. д).
Для этого используется PostgreSQL + расширение pgvector, которое добавляет поддержку хранения эмбеддингов (векторов) и поиск по расстоянию до ближайших соседей (KNN) прямо внутри SQL-движка. Разберем, как это работает на практике.
В RAG-пайплайне текст документов и запрос пользователя преобразуются в векторные представления. PostgreSQL хранит эти векторы в таблице и позволяет выполнять поиск по смысловой близости, а не по точному совпадению слов.
Для этой задачи будем использовать pgvector — это расширение к PostgreSQL, которое добавляет тип данных vector и операторы поиска по расстоянию до ближайших соседей (KNN).
Поддерживаются три основные метрики сравнения векторов:
L2 (евклидово расстояние) — классическое расстояние между двумя точками в многомерном пространстве. Хорошо работает, если векторы не нормализованы и распределение значений относительно равномерное.
Cosine similarity (косинусное сходство). В отличие от предыдущей метрики измеряет не абсолютное расстояние, а угол между двумя векторами. Подходит для текстовых эмбеддингов, где важна направленность, а не масштаб. Требует нормализации векторов.
Inner product (внутреннее произведение) — скалярное произведение двух векторов. Может использоваться как прокси для оценки «сходства» при обучении моделей и в задачах ранжирования.
Допустим, мы получаем на наш запрос именно такой вектор от модели OpenAI. Для хранения создаем таблицу с типом VECTOR:
CREATE TABLE items (
id SERIAL PRIMARY KEY,
title TEXT,
embedding VECTOR(1536)
);
Добавим данные для нескольких векторов разных объектов:
Теперь сравним их попарно и отсортируем по расстоянию:
SELECT
a.title AS title_a,
b.title AS title_b,
a.embedding <-> b.embedding AS distance
FROM items a
JOIN items b ON a.id < b.id
ORDER BY distance;
Оператор <-> здесь вычисляет расстояние между двумя векторами. Таким образом, мы можем оценивать степень семантической близости любых объектов, представленных векторами. Какая именно метрика используется, зависит от операторного класса, заданного при создании индекса.
В подобных RAG-сценариях нет необходимости сразу вводить отдельный класс инфраструктуры типа векторная БД. Семантический поиск можно реализовать эволюционно поверх существующего PostgreSQL.
А если вы не хотите самостоятельно заниматься настройкой индексов, тюнингом памяти и производительности, а также обновлением версии PostgreSQL, то воспользуйтесь DBaaS от Selectel. Мы предоставим вам кластер PostgreSQL с преднастроенными расширениями, готовый к эксплуатации под нагрузкой. Это позволит сосредоточиться на RAG-логике и качестве поиска, а не на инфраструктурной оптимизации.