векторный поиск

Векторный поиск — это метод информационного поиска, при котором объекты (тексты, изображения, аудио) представляются в виде числовых векторов (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 необязателен: укажите, если хотите ответ только для вас (мы не шлём рассылки).

Поделиться