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

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

Параметр 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 s5

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

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

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

Сначала подготовьте локальный Qdrant. Проверьте, что имя demo_score_20261019 свободно: команды создают коллекцию и записывают точки; на чужой или рабочей коллекции их не выполняйте. Размер вектора 2 и оба вектора ниже — искусственный пример, не характеристики реальной модели и не смысловые представления текста. Если меняете имя, замените его в каждой команде. s3 s4

  1. Создайте учебную коллекцию с метрикой 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
  2. Добавьте точки: 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
  3. Запросите оба результата без порога: 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
  4. Добавьте порог: 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 s2

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

Сверьте имя коллекции и размерность запроса с записанными векторами. Убедитесь, что без score_threshold точки вообще возвращаются; затем понижайте порог только для этой Cosine-коллекции и сравнивайте оценки. В иной метрике направление отсечения может быть противоположным. Порог оценки не управляет правами пользователя и не заменяет фильтр по полям: доступ к чужим данным проверяют отдельно. Даже если учебные ID совпали, правильность поиска по реальным документам ещё нужно проверить вручную на собственных вопросах. s1 s2

Источники