# Qdrant: отсеять слабые совпадения по порогу

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

Параметр score_threshold убирает из ответа Qdrant результаты с оценкой хуже выбранного порога. В учебной коллекции ниже два искусственных вектора: сравните выдачу до и после ограничения. Это инженерный пример по документации v1.19.x, а не проверка качества вашей модели или реальный запуск Qdrant редакцией.

**Технический уровень.** Нужны уже работающий собственный Qdrant v1.19.x и терминал Linux/macOS с `curl`; это не домашний рецепт установки AI-модели. Инструкция сверена с документацией 19 октября 2026 года. Редакция не запускала Qdrant: команды и ожидаемые ID проверены только на учебной HTTP-фикстуре. Запросы идут к `127.0.0.1`; пример без API-ключа не подходит защищённому серверу. Не открывайте незащищённый Qdrant в сеть. [s1](#src-s1) [s5](#src-s5)

## Зачем нужен порог оценки?

Представьте поиск по своим заметкам: даже слабое совпадение может оказаться в списке. Qdrant присваивает найденной записи оценку (*score*); параметр `score_threshold` исключает результат с оценкой хуже заданного порога. **Вектор** — числовое представление записи, а **метрика** — способ сравнения таких векторов. Число порога не является универсальной мерой качества текста: оно зависит от векторов и выбранной метрики. Для метрики Euclidean большая дистанция хуже, поэтому направление отсечения отличается. Для рабочих документов порог выбирают на своих размеченных вопросах, проверяя также полезные записи, которые могли пропасть. [s1](#src-s1) [s2](#src-s2)

## Как сравнить поиск с порогом и без него?

Сначала [подготовьте локальный Qdrant](/zhurnal/qdrant-lokalno/). Проверьте, что имя `demo_score_20261019` свободно: команды создают коллекцию и записывают точки; на чужой или рабочей коллекции их не выполняйте. Размер вектора `2` и оба вектора ниже — **искусственный пример**, не характеристики реальной модели и не смысловые представления текста. Если меняете имя, замените его в каждой команде. [s3](#src-s3) [s4](#src-s4)

- Создайте учебную коллекцию с метрикой Cosine: `curl -fsS -X PUT 'http://127.0.0.1:6333/collections/demo_score_20261019' -H 'Content-Type: application/json' -d '{"vectors":{"size":2,"distance":"Cosine"}}'`. В ответе ожидаются `status: ok` и `result: true`. Если это не так, остановитесь и проверьте адрес и существование коллекции. [s3](#src-s3)

- Добавьте точки: `curl -fsS -X PUT 'http://127.0.0.1:6333/collections/demo_score_20261019/points?wait=true' -H 'Content-Type: application/json' -d '{"points":[{"id":1,"vector":[1,0],"payload":{"note":"same"}},{"id":2,"vector":[0,1],"payload":{"note":"different"}}]}'`. Ожидаются `status: ok` и `result.status: completed`. Повторная запись существующего ID перезапишет точку. [s4](#src-s4)

- Запросите оба результата без порога: `curl -fsS -X POST 'http://127.0.0.1:6333/collections/demo_score_20261019/points/query' -H 'Content-Type: application/json' -d '{"query":[1,0],"limit":2,"with_payload":true,"params":{"exact":true}}'`. Для заданных векторов в `result.points` ожидаются ID `1` и `2`; `exact: true` отключает приближённый поиск для этого теста. Это вывод для учебных данных, **не** снятый редакцией ответ работающего Qdrant. [s1](#src-s1)

- Добавьте порог: `curl -fsS -X POST 'http://127.0.0.1:6333/collections/demo_score_20261019/points/query' -H 'Content-Type: application/json' -d '{"query":[1,0],"limit":2,"score_threshold":0.5,"with_payload":true,"params":{"exact":true}}'`. С векторами из шага 2 в `result.points` ожидается только ID `1`; ID `2` с ортогональным вектором должен быть исключён. Это критерий учебного опыта, не рекомендация ставить `0.5` для ваших документов. [s1](#src-s1) [s2](#src-s2)

## Что проверить, если список пуст?

Сверьте имя коллекции и размерность запроса с записанными векторами. Убедитесь, что без `score_threshold` точки вообще возвращаются; затем понижайте порог **только для этой Cosine-коллекции** и сравнивайте оценки. В иной метрике направление отсечения может быть противоположным. Порог оценки не управляет правами пользователя и не заменяет [фильтр по полям](/zhurnal/qdrant-filtry-metadannyh/): доступ к чужим данным проверяют отдельно. Даже если учебные ID совпали, правильность поиска по реальным документам ещё нужно проверить вручную на собственных вопросах. [s1](#src-s1) [s2](#src-s2)

## Источники

1. [Qdrant API v1.19.x — Query points](https://api.qdrant.tech/v-1-19-x/api-reference/search/query-points.md) — получено 2026-10-19
2. [Qdrant — Search: Filtering Results by Score](https://qdrant.tech/documentation/search/search.md) — получено 2026-10-19
3. [Qdrant API v1.19.x — Create a collection](https://api.qdrant.tech/v-1-19-x/api-reference/collections/create-collection.md) — получено 2026-10-19
4. [Qdrant API v1.19.x — Upsert points](https://api.qdrant.tech/v-1-19-x/api-reference/points/upsert-points.md) — получено 2026-10-19
5. [Qdrant — Quickstart: безопасность локального сервера](https://qdrant.tech/documentation/quickstart/) — получено 2026-10-19
