Qdrant: как удалить точки по фильтру и проверить выборку
На странице · 3 разделов
Qdrant позволяет удалить точки по фильтру поля payload — дополнительным данным записи. Перед удалением посчитайте совпадения и просмотрите их ID тем же фильтром, а после запроса проверьте, что они исчезли и другая запись осталась. Ниже — только учебная коллекция: удаление рабочих данных требует проверенной резервной копии и отдельного плана восстановления.
Технический уровень. Нужен свой работающий Qdrant и умение отправлять запросы через терминал; это не домашний рецепт установки модели. Ниже приведена инструкция по официальной документации API v1.19.x, сверенной 17 октября 2026 года. Modelium не запускал сервер и не воспроизводил удаление. Все команды направлены только на
127.0.0.1и специально названную учебную коллекцию; не подставляйте вместо неё рабочую. Если Qdrant требует ключ, используйте свои права локально, не публикуйте секрет. s1 s4
Что будет удалено и как заранее увидеть совпадения?
Точка в Qdrant — запись с ID, вектором и дополнительными полями (payload). Пусть у двух тестовых записей поле stage равно соответственно old и current. Фильтр stage=old должен выбрать только первую. Удаление по фильтру меняет данные коллекции, а обычный фильтр поиска их не трогает. s4 s6
Сначала откройте инструкцию по запуску локального Qdrant и убедитесь, что ваш собственный тестовый API доступен на http://127.0.0.1:6333. Создайте отдельную коллекцию для упражнения: curl -fsS -X PUT 'http://127.0.0.1:6333/collections/docs_delete_sandbox_20261017' -H 'Content-Type: application/json' -d '{"vectors":{"size":2,"distance":"Cosine"}}'. Ожидайте status: ok и result: true; если коллекция уже есть, не загружайте в неё пример вслепую — возьмите другое новое учебное имя и последовательно замените его во всех командах. Число size:2 здесь только размер игрушечного вектора, не конфигурация для реальных документов. s1
Добавьте две учебные записи: curl -fsS -X PUT 'http://127.0.0.1:6333/collections/docs_delete_sandbox_20261017/points?wait=true' -H 'Content-Type: application/json' -d '{"points":[{"id":1,"vector":[1,0],"payload":{"stage":"old","note":"учебная старая запись"}},{"id":2,"vector":[0,1],"payload":{"stage":"current","note":"учебная текущая запись"}}]}'. Ожидайте status: ok, а в result.status — completed; если операция не завершилась, остановитесь и выясните её состояние. Повторная загрузка с теми же ID перезаписывает точки, поэтому выполняйте шаг только в новой учебной коллекции. s3
Посчитайте будущие совпадения: curl -fsS -X POST 'http://127.0.0.1:6333/collections/docs_delete_sandbox_20261017/points/count' -H 'Content-Type: application/json' -d '{"filter":{"must":[{"key":"stage","match":{"value":"old"}}]},"exact":true}'. Ожидайте result.count: 1. Если число другое — не продолжайте. s2
Просмотрите сами записи с тем же фильтром: curl -fsS -X POST 'http://127.0.0.1:6333/collections/docs_delete_sandbox_20261017/points/scroll' -H 'Content-Type: application/json' -d '{"filter":{"must":[{"key":"stage","match":{"value":"old"}}]},"limit":10,"with_payload":true,"with_vector":false}'. В result.points должен быть только ID 1 с stage: old; result.next_page_offset должен быть пустым. Scroll выдаёт страницы: при большом рабочем наборе один экран не доказывает полноту совпадений — переходите по offset или прекращайте операцию. s5
Как удалить только проверенную выборку?
Только если count равен 1, Scroll показал ID 1 и это учебная коллекция, отправьте: curl -fsS -X POST 'http://127.0.0.1:6333/collections/docs_delete_sandbox_20261017/points/delete?wait=true' -H 'Content-Type: application/json' -d '{"filter":{"must":[{"key":"stage","match":{"value":"old"}}]}}'. Ожидайте status: ok и result.status: completed; acknowledged означает лишь принятие в очередь, wait_timeout — не подтверждённое завершение. Даже completed не показывает, какие ID вы удалили: проверьте данные повторным чтением. s4
Выполните прежнюю команду подсчёта ещё раз: result.count должен стать 0. Затем прежнюю команду Scroll: result.points должен стать пустым. Наконец, проверьте сохранность другой записи по её ID: curl -fsS 'http://127.0.0.1:6333/collections/docs_delete_sandbox_20261017/points/2?with_payload=true&with_vector=false'; в ответе ожидается ID 2 с stage: current. Синтаксис чтения точки по ID описан в разделе Points официальной документации. Это критерии для самостоятельного теста, а не результат запуска редакции. s2 s5 s6
Когда нельзя повторять это на рабочей коллекции?
Если фильтр неожиданно выбрал много записей, поле stage отсутствует или запись меняется параллельно, не отправляйте delete. Между предварительным Scroll и удалением другие процессы могут изменить точки: показанная проверка не блокирует записи и не даёт транзакционной гарантии набора ID. Это ограничение последовательности самостоятельных API-запросов, а не подтверждённый эксперимент Modelium. Для небольшого заранее известного набора ID у Qdrant есть альтернативный режим points: [ID], но это тоже удаление данных. s4 s5
Прежде чем работать с реальными данными, сделайте и проверьте восстановление снимка нужной коллекции по инструкции о Qdrant snapshots; сам снимок не содержит алиасов, а в кластере требуются отдельные снимки узлов. Не считайте ответ HTTP 200 подтверждением безопасного удаления: сохраните контрольные ID, проверьте счёт и оставшиеся записи. Для фильтрации без изменения данных читайте гайд по метаданным. s7 s2 s5
Следующий шаг: сделайте проверенную резервную копию перед переносом любой процедуры на рабочие документы. s7
Источники
- Qdrant — Create a collection, API v1.19.x — Снимок create.md и SHA-256 в manifest.json; это версия документации, не версия выполненного сервера. Получено 17.10.2026.
- Qdrant — Count points, API v1.19.x — Снимок count.md и SHA-256 в manifest.json. Получено 17.10.2026.
- Qdrant — Upsert points, API v1.19.x — Снимок upsert.md и SHA-256 в manifest.json. Получено 17.10.2026.
- Qdrant — Delete points, API v1.19.x — Снимок delete.md и SHA-256 в manifest.json. Получено 17.10.2026.
- Qdrant — Scroll points, API v1.19.x — Снимок scroll.md и SHA-256 в manifest.json. Получено 17.10.2026.
- Qdrant — Manage Data: Points — Снимок points.html и SHA-256 в manifest.json; фильтрация, удаление, ожидание. Получено 17.10.2026.
- Qdrant — Snapshots — Снимок snapshots.html и SHA-256 в manifest.json. Получено 17.10.2026.