векторный поиск
Векторный поиск — это метод информационного поиска, при котором объекты (тексты, изображения, аудио) представляются в виде числовых векторов (embeddings) в многомерном пространстве, а поиск осуществляется по семантической близости между векторами, а не по точному совпадению ключевых слов. Векторный поиск лежит в основе современных рекомендательных систем, семантического поиска и RAG-архитектур.
Как работают embeddings
Embedding-модель (например, text-embedding-ada-002, sentence-transformers, E5) преобразует текст в вектор с фиксированной размерностью — обычно 768, 1024 или 1536 чисел с плавающей точкой. Семантически близкие тексты получают близкие векторы в этом пространстве: запрос «цена на нефть» будет близок к «стоимость барреля» даже без общих слов.
Близость векторов измеряется метриками: косинусное сходство (угол между векторами), евклидово расстояние, скалярное произведение. Косинусное сходство наиболее распространено для текстовых embeddings.
Приближённый поиск ближайших соседей (ANN)
Точный поиск ближайших соседей (brute force) требует сравнения запроса с каждым вектором в базе — O(n·d), где n — число векторов, d — размерность. При миллионах векторов это неприемлемо медленно.
ANN-алгоритмы жертвуют точностью ради скорости:
- HNSW (Hierarchical Navigable Small World) — граф-структура, навигация по которой напоминает «тесный мир». Лучший баланс скорость/точность, стандарт для большинства векторных БД.
- IVF (Inverted File Index) — кластеризует векторы, при поиске проверяет только ближайшие кластеры. Хорошо масштабируется, занимает меньше памяти, чем HNSW.
- PQ (Product Quantization) — сжимает векторы, снижая потребление памяти в 8–32×.
- FAISS (Facebook AI Similarity Search) — библиотека от Meta, реализующая IVF, HNSW, PQ и их комбинации.
Векторные базы данных
Специализированные векторные СУБД оптимизированы для хранения и ANN-поиска по embeddings:
- Pinecone — полностью managed облачная векторная БД, простой старт
- Weaviate — open-source, поддерживает hybrid search, модульные embedding-провайдеры
- Milvus / Zilliz — высокопроизводительная open-source БД, миллиарды векторов
- Chroma — лёгкая embedding-БД для локальной разработки и прототипирования
- Qdrant — открытая, написана на Rust, быстрая фильтрация по payload
- pgvector — расширение PostgreSQL для хранения и ANN-поиска векторов
Гибридный поиск
Семантический поиск отлично находит концептуально близкие результаты, но уступает keyword-поиску при точных совпадениях (номера артикулов, имена собственные, технические термины). Гибридный поиск комбинирует dense (векторный) и sparse (BM25/TF-IDF) поиск, объединяя результаты через алгоритм RRF (Reciprocal Rank Fusion). Большинство современных векторных БД поддерживают гибридный поиск нативно.
Применения векторного поиска
RAG-системы — поиск релевантных документов для LLM. Семантический поиск по документации, базам знаний, e-commerce каталогам. Рекомендательные системы — поиск похожих товаров, статей, пользователей. Обнаружение дубликатов и near-duplicate detection. Кластеризация и визуализация больших корпусов документов. Мультимодальный поиск: поиск изображений по текстовому запросу через CLIP-embeddings.
Производительность и масштаб
Современные ANN-системы обрабатывают десятки миллионов запросов в секунду с задержкой в единицы миллисекунд при recall@10 выше 95%. Для миллиардного масштаба используют шардирование и иерархические индексы. Квантизация (PQ, scalar quantization) снижает потребление памяти без существенной потери качества.
Мультимодальный векторный поиск
Векторный поиск выходит за рамки текста. Мультимодальные модели типа CLIP (Contrastive Language-Image Pre-Training) создают единое векторное пространство для текста и изображений: поиск изображений по текстовому запросу, или наоборот. OpenAI CLIP, Google ALIGN, ImageBind (видео, аудио, текст, изображения в едином пространстве) открывают возможности кросс-модального поиска. В e-commerce это означает: пользователь загружает фото вещи и получает похожие товары из каталога. В security — поиск похожих вредоносных скриншотов по визуальному шаблону. Video understanding через поиск по временным сегментам видео по текстовым запросам. Аудио-поиск по семантической близости звука. Эти применения становятся доступными благодаря зрелости векторных баз данных и embedding-моделей.
Частые вопросы
Чем векторный поиск отличается от полнотекстового?
Полнотекстовый поиск (BM25, TF-IDF) ищет точные совпадения слов. Векторный поиск находит семантически близкие результаты даже без общих слов. Запрос 'автомобиль' найдёт документы со словом 'машина' и 'транспортное средство'. Гибридный поиск объединяет оба подхода.
Какой размерности embedding нужен?
Большинство современных embedding-моделей используют 768–1536 измерений. Больше измерений — выше точность, но больше памяти и медленнее поиск. Matryoshka embeddings (MRL) позволяют усекать вектор до нужной размерности без переобучения.
pgvector или специализированная векторная БД?
pgvector хорош для начала, если данные уже в PostgreSQL и объём не превышает нескольких миллионов векторов. При масштабе от 10M+ векторов или требованиях к throughput/latency выбирайте специализированные БД (Qdrant, Weaviate, Milvus).
Другие термины в теме «Инженерия данных»
Не хватает деталей?
Напишите, что уточнить по теме «векторный поиск» — это помогает улучшать материал и подсказывает, какие термины добавить дальше. Email необязателен: укажите, если хотите ответ только для вас (мы не шлём рассылки).