Применение AI-инструментов
В продукте СУБД Pangolin реализована функциональность векторных данных на базе расширения vector, которая предназначена для хранения векторных представлений (эмбеддингов) и выполнения поиска по сходству непосредственно в базе данных, что обеспечивает интеграцию AI-задач — семантического поиска, рекомендательных систем, классификации и других — с гарантиями ACID, репликацией и возможностью восстановления на определенный момент времени.
Векторные данные как основа когнитивных функций
Когнитивные функции СУБД Pangolin — обработка естественного языка и семантический анализ — опираются на векторные типы хранения данных:
-
Хранение эмбеддингов. Векторные типы (
vector,halfvec,bit,sparsevec) служат хранилищем численных представлений текста, изображений и аудио, полученных от нейросетевых моделей (например, GigaChat). Это позволяет базе данных работать с семантическим содержанием данных, а не только с их структурным представлением. Различные типы покрывают спектр сценариев — от высокоточных моделей с плавающей запятой до разреженных векторов и двоичных представлений. -
Семантический поиск и анализ. Поиск по сходству (нахождение ближайших соседей в векторном пространстве) лежит в основе когнитивных возможностей системы:
- Семантический поиск — понимание намерения пользователя за текстовым запросом и сопоставление его с релевантными объектами базы данных по смыслу, а не по ключевым словам;
- Классификация и кластеризация — автоматическая группировка схожих запросов, данных или результатов, что позволяет LLM-модулю опираться на исторические паттерны при генерации рекомендаций;
- Поиск дубликатов и аналогов — выявление семантически эквивалентных запросов, что снижает нагрузку и улучшает качество кэширования ответов.
-
Встроенное векторное хранилище. Векторные типы позволяют размещать эмбеддинги и выполнять поиск по сходству непосредственно внутри Pangolin, без необходимости отдельного векторного хранилища. Это дает когнитивным функциям гарантии ACID, встроенную репликацию и возможность восстановления на точку во времени (PITR), а индексы HNSW и IVFFlat обеспечивают ускоренный поиск даже на миллионах векторов.
Использование векторных данных внутри базы данных устраняет необходимость синхронизации между отдельными хранилищами и снижает задержки при выполнении когнитивных запросов.
Описание алгоритма работы векторного поиска
- Пользователь создает таблицу с векторным полем, указывая тип и размерность векторов (
vector,halfvec,bit,sparsevec). - Сервис собирает информацию о текущей конфигурации индексов (HNSW или IVFFlat), метриках расстояния (L2, L1, косинусное, внутреннее произведение, Хэмминг, Жаккард) и параметрах запросов.
- На основании выбранного типа индекса и метрики расстояния формируется план выполнения запроса:
- HNSW — обход многослойного графа с параметром
hnsw.ef_search, определяющим размер динамического списка кандидатов; - IVFFlat — поиск по инвертированным спискам с параметром
ivfflat.probes, определяющим количество проверяемых списков.
- Результатом выполнения запроса является набор ближайших соседей, отсортированный по выбранной метрике расстояния, с возможностью фильтрации по дополнительным условиям (
WHERE) и ограничения количества результатов (LIMIT).
Функциональность не изменяет существующие механизмы хранения и индексирования данных Pangolin. Расширение vector предоставляет дополнительные типы данных, операторы и типы индексов, интегрированные в стандартный планировщик запросов.
Ключевые возможности
Расширение vector имитирует следующие возможности, характерные для специализированных векторных баз данных:
| Возможность | Описание |
|---|---|
| Хранение векторов | Поддержка типов vector (одинарная точность), halfvec (половинная точность), bit (двоичные), sparsevec (разреженные) |
| Вычисление расстояний | L2, L1, косинусное, внутреннее произведение, Хэмминг (для bit), Жаккард (для bit) |
| Точный поиск | Полное сканирование таблицы с вычислением точных расстояний между векторами |
| Приблизительный поиск | Индексы HNSW и IVFFlat для ускорения поиска ближайших соседей |
| ACID-совместимость | Векторные данные участвуют в транзакциях наравне с обычными столбцами |
| Репликация и PITR | Использование WAL-журнала для репликации и восстановления на точку во времени |
| Гибридный поиск | Интеграция с полнотекстовым поиском PostgreSQL |
| Агрегатные функции | AVG(), SUM() для вычисления средних и суммарных векторов |
| Масштабирование | Вертикальное — через настройки Pangolin, горизонтальное — через реплики или Citus |
Примеры использования СУБД Pangolin при интеграционном подключении генеративного искусственного интеллекта (например GigaChat):
- Семантический поиск по базам знаний. Понимание намерения пользователя за текстовым запросом и сопоставление его с релевантными объектами базы данных по смыслу, а не по ключевым словам;
- Системы вопросов и ответов (Q&A) на основе RAG. Извлечение контекста из корпоративной базы знаний и передача его языковой модели для генерации точных и обоснованных ответов;
- Классификация и маршрутизация запросов. Автоматическая категоризация входящих обращений, запросов поддержки или документов на основе векторного сходства с эталонными образцами;
- Поиск дубликатов и аналогов. Выявление семантически эквивалентных запросов и записей для устранения дублирования, кэширования результатов и снижения вычислительной нагрузки;
- Рекомендательные системы. Рекомендация релевантных объектов (товаров, документов, статей) на основе векторной близости профиля пользователя к каталогу объектов;
- И другие.