Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

PostgreSQL 16 + pgvector — Развертывание для ИИ-агентов (RAG/LLM)

Автор: Olzhas Alseitov

Telegram: @olzhasAl

LinkedIn: olzhas-alseitov

GitHub: InfiniteJas

Описание: Что делает этот скрипт?

Этот проект содержит production-ready shell-скрипт (написанный с соблюдением стандартов Google Shell Style Guide) для полностью автоматизированного развертывания PostgreSQL 16 с расширением pgvector на базе RHEL/CentOS 8.

Скрипт решает следующие задачи:

  1. Автоматически скачивает и устанавливает ядро БД, векторное расширение и Enterprise-модули безопасности (credcheck, auth_delay).
  2. Динамически вычисляет ресурсы сервера (объем RAM, количество ядер CPU) и на лету генерирует оптимизированный postgresql.conf.
  3. Настраивает строгую аутентификацию по протоколу SCRAM-SHA-256.
  4. Создает изолированную базу данных, application-пользователя с криптографически стойким паролем (24 символа) и активирует векторные индексы.

Суть проекта и почему именно такой подход

Построение надежных ИИ-агентов и систем RAG (Retrieval-Augmented Generation) требует совершенно иного подхода к базе данных. Стандартный PostgreSQL "из коробки" не готов к тяжелым математическим операциям и массовым запросам на поиск векторного сходства.

Данный скрипт создает эталонный инфраструктурный фундамент. Он идеально подходит для построения защищенных сред при развертывании и дообучении LLM в изолированных (air-gapped) контурах. Скрипт изначально спроектирован так, чтобы база данных выдерживала жесткое нагрузочное тестирование инструментами вроде k6 или JMeter, эффективно утилизируя память без риска падения с OOM (Out of Memory).

Обоснование параметров конфигурации (Тюнинг)

При настройке PostgreSQL под векторные вычисления (эмбеддинги) недостаточно просто "накинуть памяти". Векторные индексы HNSW или IVFFlat критически требовательны к RAM во время их создания и обхода.

Настройки в скрипте опираются на рекомендации официальной документации pgvector и фундаментальные статьи по тюнингу БД, в частности — «Optimize PostgreSQL Server Performance Through Configuration» от инженеров Crunchy Data.

Ключевые параметры, которые динамически высчитывает скрипт:

  • shared_buffers (25% от RAM): Как отмечается в рекомендациях Crunchy Data, Postgres использует архитектуру двойного буферизирования (свой кэш + кэш ОС). Выделение ровно 25% гарантирует, что база данных сможет держать кэшированные эмбеддинги в быстрой памяти, оставляя ОС достаточно места (до 75%) для её собственного кэша, что ускоряет чтение файлов.
  • maintenance_work_mem (Динамический расчет): Этот параметр критически важен для pgvector. Создание HNSW-индексов на массивных датасетах требует колоссального объема памяти. Дефолтные 64MB приведут к тому, что база начнет постоянно сбрасывать временные данные на медленный диск. Скрипт выделяет значительный объем памяти специально под задачи построения индексов и VACUUM.
  • work_mem (Пропорционально RAM): Объем памяти, выделяемый под каждую операцию сортировки или хэширования внутри одного запроса. Оптимизированное значение спасает от медленных сортировок на диске при параллельном поиске (k-NN), не доводя сервер до исчерпания памяти при пиковых нагрузках.
  • Специфичный тюнинг воркеров (max_parallel_workers): pgvector способен распараллеливать процесс сборки индексов. Скрипт связывает количество background-воркеров напрямую с числом ядер процессора, чтобы максимизировать утилизацию железа.

Быстрый старт

# 1. Скопируйте скрипт на целевой сервер (RHEL/CentOS 8)
# 2. Выдайте права на исполнение
chmod +x setup_pg_en.sh

# 3. Запустите скрипт
sudo ./setup_pg_en.sh

About

This repository contains a one-shot provisioning script to install PostgreSQL 16 and the pgvector extension on RHEL/CentOS (EL8). It applies conservative, production-friendly tuning aimed at LLM/RAG/vector-search workloads, enables SCRAM-SHA-256 authentication, and prints ready-to-use connection credentials for an application database/user.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages