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

Источник: https://modelium.tech/zhurnal/qdrant-exact-search/

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

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

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

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

- Убедитесь, что имя учебной коллекции свободно: `curl -sS -i 'http://127.0.0.1:6333/collections/demo_exact_20261020'`. Для отсутствующей коллекции ожидается HTTP 404. **При HTTP 200 остановитесь** и выберите другое уникальное имя во *всех* командах: запись в существующую коллекцию здесь не допускается. Если сервер защищён API-ключом, используйте разрешённый способ доступа; не снимайте защиту ради опыта. [s3](#src-s3)

- Создайте учебную коллекцию с двумерными векторами: `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](#src-s3)

- Запишите три учебные точки: `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](#src-s4)

- Выполните обычный запрос: `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](#src-s1) [s2](#src-s2)

- Повторите *тот же* запрос с одним изменением: `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](#src-s1) [s2](#src-s2) [s5](#src-s5)

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

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

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

## Источники

1. [Qdrant — Search: exact search и параметры запроса](https://qdrant.tech/documentation/search/search/) — получено 2026-10-20
2. [Qdrant API v1.19.x — Query points](https://api.qdrant.tech/v-1-19-x/api-reference/search/query-points) — получено 2026-10-20
3. [Qdrant API v1.19.x — Create a collection](https://api.qdrant.tech/v-1-19-x/api-reference/collections/create-collection) — получено 2026-10-20
4. [Qdrant API v1.19.x — Upsert points](https://api.qdrant.tech/v-1-19-x/api-reference/points/upsert-points) — получено 2026-10-20
5. [Qdrant — What to Check Before Tuning a Qdrant Collection](https://qdrant.tech/documentation/search-tuning/before-tuning-a-qdrant-collection/) — получено 2026-10-20
6. [Qdrant — Measuring ANN Recall](https://qdrant.tech/documentation/tutorials-search-engineering/ann-recall/) — получено 2026-10-20
