Перейти к содержанию
modelium.
Начать с задачи
←

Qdrant Multivector: поиск по нескольким векторам одной записи

Multivector в Qdrant хранит несколько векторов как одну запись и сравнивает её с многовекторным запросом через MaxSim. Ниже — два искусственных примера и способ проверить их порядок; настоящую модель и сервер редакция не запускала. Понадобятся уже работающий локальный Qdrant v1.19.x и терминал.

Технический уровень. Понадобятся уже работающий локальный Qdrant v1.19.x, терминал Linux/macOS и curl. Это не рецепт установки AI-модели. Инструкция сверена с документацией 20 октября 2026 года: редакция проверила команды только на имитации HTTP-сервера, не запускала настоящий Qdrant. Пример без ключа обращается к 127.0.0.1; не открывайте тестовую базу в сеть. s1 s5

Зачем одной записи несколько векторов?

Обычно одной записи соответствует один вектор — список чисел для поиска похожего. Если у одного объекта несколько представлений, Qdrant может хранить их в одной точке как матрицу (несколько одинаковых по длине списков чисел). При сравнении max_sim для каждого вектора запроса выбирает наиболее похожий вектор точки и складывает оценки. Это даёт одну оценку на запись, а не отдельный ответ для каждой строки. Такие матрицы могут создавать специализированные модели вроде ColBERT, но наш короткий пример использует придуманные числа без модели. Для раздельного поиска по заголовку и изображению Qdrant описывает другой механизм — именованные векторы. s1

Как сравнить две учебные записи?

Сначала подготовьте локальный Qdrant. В терминале Linux/macOS используйте новую коллекцию demo_multivector_20261020; если она уже существует, остановитесь и замените имя во всех командах. Не выполняйте опыт над рабочей коллекцией. Числа ниже придуманы для проверки механизма, не являются эмбеддингами реального текста. s1 s3 s5

  1. Создайте коллекцию с векторами из двух чисел и сравнением max_sim: curl -fsS -X PUT 'http://127.0.0.1:6333/collections/demo_multivector_20261020' -H 'Content-Type: application/json' -d '{"vectors":{"size":2,"distance":"Cosine","multivector_config":{"comparator":"max_sim"}}}'. Ожидается status: ok, result: true; ошибка создания — повод проверить версию и имя коллекции, а не менять рабочую базу. s1 s3
  2. Сохраните две точки с двумя подвекторами в каждой: curl -fsS -X PUT 'http://127.0.0.1:6333/collections/demo_multivector_20261020/points?wait=true' -H 'Content-Type: application/json' -d '{"points":[{"id":1,"vector":[[1,0],[0,1]]},{"id":2,"vector":[[1,0],[1,0]]}]}'. Проверьте result.status: completed до поиска. Повторный upsert с теми же ID заменит учебные точки. s1 s4
  3. Отправьте запрос с двумя направлениями: curl -fsS -X POST 'http://127.0.0.1:6333/collections/demo_multivector_20261020/points/query' -H 'Content-Type: application/json' -d '{"query":[[1,0],[0,1]],"limit":2,"params":{"exact":true}}'. Сравните id и score в result.points. Расчётный ориентир для Cosine: ID 1 получает max(1,0) + max(0,1) = 2; ID 2 — max(1,1) + max(0,0) = 1. Это не измеренный ответ Qdrant: сначала убедитесь, что обе точки сохранены и сервер вернул их в ответе. s1 s2

Когда этот способ не подходит?

Если нужен обычный поиск по одному вектору или по ID точки, матрица усложнит данные без необходимости. Не смешивайте многовекторный MaxSim с именованными векторами для разных полей; при сравнении настоящих текстов понадобится совместимая модель, одинаковая размерность её векторов и проверка качества на собственных примерах. Официальная документация ограничивает произведение числа подвекторов и их размерности значением меньше 1 048 576; из размера данных нельзя вывести минимум RAM/VRAM. Права на документы и допустимые записи проверяйте отдельно: оценка сходства не заменяет фильтр доступа. s1

Источники

  1. Qdrant — Vectors: Multivectors и Named Vectors. Получено 20.10.2026.
  2. Qdrant API v1.19.x — Query points. Получено 20.10.2026.
  3. Qdrant API v1.19.x — Create a collection. Получено 20.10.2026.
  4. Qdrant API v1.19.x — Upsert points. Получено 20.10.2026.
  5. Qdrant — Local Quickstart. Получено 20.10.2026.