Векторная база данных
Обычная база данных хорошо ищет по точным совпадениям и числовым диапазонам. Векторная база заточена под другой вопрос: «найди ближайшие точки к моему запросу в многомерном пространстве».
Что внутри
- Векторы фиксированной размерности (например, 768 или 1536).
- Метаданные: к какому документу относится вектор, какие у документа теги и атрибуты.
- Специальный индекс для приближённого поиска ближайших соседей (ANN).
- Фильтры по метаданным, чтобы сужать поиск (например, только документы своего отдела).
Что выбирают
- Pinecone, Weaviate, Qdrant, Milvus, Chroma — самостоятельные векторные базы.
- pgvector — расширение PostgreSQL, удобно если хочется одно решение для всех данных.
- Elasticsearch, OpenSearch — поддерживают векторный поиск рядом с обычным.
Когда применять и когда нет
Применять
- Строите RAG поверх своих документов
- Нужен семантический поиск или сравнение объектов по смыслу
- Хотите делать рекомендации «похожие на это»
Не применять
- Маленький объём данных, который помещается в обычный массив в памяти
- Задача чисто полнотекстового поиска без семантики
Примеры применения
Документация продукта на 10 000 страниц разбита на куски примерно по 500 токенов. Каждому куску посчитан эмбеддинг и записан в векторную базу вместе с ссылкой на исходный раздел. Когда сотрудник пишет в ассистент «как настроить уведомления», система за миллисекунды находит 5 наиболее близких кусков и отдаёт их большой модели для подготовки ответа.
Часто задаваемые вопросы
Для маленьких проектов — вполне. Можно держать эмбеддинги в обычной таблице и считать косинусную близость на лету. С ростом объёма это становится медленно, и тогда нужна либо специализированная база, либо расширение к PostgreSQL.
Elasticsearch исторически про полнотекстовый поиск по словам. Современные векторные базы — про поиск по смыслу через эмбеддинги. Сегодня обе категории сближаются: Elasticsearch и OpenSearch поддерживают векторный поиск, а специализированные векторные базы добавляют фильтрацию по метаданным.