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

Qdrant exact search: как сравнить два режима поиска

В Qdrant параметр `params.exact: true` включает полный перебор векторов вместо приближённого поиска. Сравните его с обычным запросом на одной и той же коллекции и с одинаковым входом: смотрите ID и время ответа, а не только оценку сходства. На маленькой коллекции результаты могут совпасть, поскольку Qdrant и без этого параметра может выбрать полный перебор.

Нужно понять, меняет ли быстрый поиск Qdrant выдачу? В режиме exact search программа просматривает все подходящие векторы — числовые представления записей. Обычный поиск может использовать индекс — структуру, которая ускоряет подбор похожих записей. Сравним два результата на новой учебной коллекции, не затрагивая рабочие данные. s1 s3

Инструкция по документации, 20 октября 2026 года. Нужен уже запущенный собственный Qdrant на 127.0.0.1:6333, терминал с curl и право создать отдельную коллекцию. Это инженерный тест хранилища, не домашний рецепт запуска AI-модели: три вектора ниже придуманы для проверки формы запроса. Для настоящего поиска по тексту сначала нужна модель, превращающая текст в векторы; железо и память этой модели зависят от её варианта, здесь не оцениваются. Мы проверили команды на синтетическом HTTP-сервере, но не запускали Qdrant или модель. s2 s3 s4

Как сравнить два режима без правки рабочих данных?

  1. Убедитесь, что имя учебной коллекции свободно: curl -sS -i 'http://127.0.0.1:6333/collections/demo_exact_20261020'. Для отсутствующей коллекции ожидается HTTP 404. При HTTP 200 остановитесь и выберите другое уникальное имя во всех командах: запись в существующую коллекцию здесь не допускается. Если сервер защищён API-ключом, используйте разрешённый способ доступа; не снимайте защиту ради опыта. s3
  2. Создайте учебную коллекцию с двумерными векторами: curl -sS -X PUT 'http://127.0.0.1:6333/collections/demo_exact_20261020' -H 'Content-Type: application/json' -d '{"vectors":{"size":2,"distance":"Cosine"}}'. В ответе проверьте status: ok и result: true; при ошибке не выполняйте запись. Размерность 2 относится только к искусственным числам, не к реальной модели. s3
  3. Запишите три учебные точки: curl -sS -X PUT 'http://127.0.0.1:6333/collections/demo_exact_20261020/points?wait=true' -H 'Content-Type: application/json' -d '{"points":[{"id":1,"vector":[1,0]},{"id":2,"vector":[0.8,0.6]},{"id":3,"vector":[0,1]}]}'. Убедитесь, что операция завершилась без ошибки. Такая запись перезаписывает совпадающие ID, поэтому здесь разрешено только предварительно свободное учебное имя из шага 1. s4
  4. Выполните обычный запрос: curl -sS -X POST 'http://127.0.0.1:6333/collections/demo_exact_20261020/points/query' -H 'Content-Type: application/json' -d '{"query":[1,0],"limit":2}'. В result.points запишите порядок id и score (оценку сходства); для этого учебного набора первым должен идти ID 1. Зафиксируйте также time из ответа, если оно есть. s1 s2
  5. Повторите тот же запрос с одним изменением: curl -sS -X POST 'http://127.0.0.1:6333/collections/demo_exact_20261020/points/query' -H 'Content-Type: application/json' -d '{"query":[1,0],"limit":2,"params":{"exact":true}}'. Снова сравните ID, их порядок и time. Поле exact находится внутри params, а не рядом с query. Совпадение обеих выдач на трёх точках ожидаемо и ничего не доказывает о качестве большого индекса. s1 s2 s5

Что означает совпадение или расхождение?

Qdrant может сам выбрать полный перебор для малого или ещё не индексированного сегмента: поэтому одинаковые списки в этом примере не доказывают, что большой индекс всегда найдёт все ближайшие записи. Точный режим может заметно увеличить время поиска на большом наборе; не включайте его без замера для всех пользовательских запросов. Время одного HTTP-ответа также не является надёжным бенчмарком — для сравнения нужны повторения на одинаковой нагрузке. s1 s5

На своей заполненной коллекции сравнивайте одинаковые векторы запросов, фильтры и limit, изменяя только params.exact, и оценивайте совпадение ID на наборе реальных вопросов. Если точный и обычный поиск совпали, это ещё не означает, что найденные документы отвечают смыслу вопроса: для этого нужны примеры с заранее отмеченными правильными ответами. Автор Qdrant отдельно описывает измерение доли совпадений двух выдач (ANN recall) на выборке запросов. Следующий шаг — проверить качество поиска после изменений настроек, а не переносить результаты трёх искусственных точек в рабочую систему. s6

Источники

  1. Qdrant — Search: exact search и параметры запроса — Полный перебор при exact=true, примеры POST /points/query, возможная высокая задержка. HTML и SHA-256 сохранены в research/raw.. Получено 20.10.2026.
  2. Qdrant API v1.19.x — Query points — POST /collections/{collection_name}/points/query, параметры query, params, limit и ответ result.points.. Получено 20.10.2026.
  3. Qdrant API v1.19.x — Create a collection — PUT коллекции с vectors.size и distance; имя учебной коллекции — редакционный пример.. Получено 20.10.2026.
  4. Qdrant API v1.19.x — Upsert points — PUT points, ID и vector; перезапись при совпадении ID ограничена учебной коллекцией.. Получено 20.10.2026.
  5. Qdrant — What to Check Before Tuning a Qdrant Collection — Неиндексированные и малые сегменты могут обслуживаться полным сканированием без exact=true.. Получено 20.10.2026.
  6. Qdrant — Measuring ANN Recall — Отдельная проверка ANN recall на заполненной коллекции; совпадение с exact не означает релевантность документам.. Получено 20.10.2026.