# Qdrant: как удалить одно поле payload точки и проверить остальные

Источник: https://modelium.tech/zhurnal/qdrant-udalit-pole-payload/

Если устарело одно поле записи Qdrant, используйте Delete payload с ключом поля и ID точки, а не Clear payload или удаление всей точки. На отдельной учебной коллекции сначала прочитайте исходные данные, затем удалите поле и проверьте, что другое поле, вектор и соседняя запись остались. Это инструкция по документации; настоящий сервер редакция не запускала.

**Технический уровень.** Нужны свой Qdrant с доступом к локальному API и терминал; это не рецепт установки AI-модели. Действия сверены с официальным OpenAPI Qdrant v1.19.2 и документацией v1.19.x на 17 октября 2026 года, но редакция **не запускала Qdrant**. Выполняйте пример только на новой учебной коллекции по адресу `127.0.0.1`; не копируйте команды на рабочую коллекцию. При включённом API-ключе используйте свою защищённую схему доступа, не публикуя ключ. [s1](#src-s1) [s3](#src-s3)

## Что исчезнет при удалении одного поля?

**Точка** — запись Qdrant с ID и вектором; **payload** — дополнительные именованные поля. Допустим, у точки ID 1 есть `tag: old` и `owner: demo`. Нужно убрать устаревший `tag`, но не `owner`, вектор или точку ID 2. Путь **Delete payload** принимает список `keys` и конкретные `points`. Не путайте его с **Clear payload**, который убирает все поля payload у выбранных точек, и с удалением самих точек. [s1](#src-s1) [s2](#src-s2)

Для изменения *значения* поля вместо удаления есть [другой гайд](/zhurnal/qdrant-obnovit-payload-tochki/). Здесь мы выбираем ID, не фильтр: массовые запросы опаснее, если условия ошибочны. Перед любой операцией в реальных данных нужны резервная копия и контроль списка ID; это пример на искусственных данных. [s1](#src-s1) [s2](#src-s2)

## Как сделать безопасный учебный пример?

Если сервера ещё нет, начните с [руководства по локальному Qdrant](/zhurnal/qdrant-lokalno/). На своём тестовом сервере создайте **новую** коллекцию: `curl -fsS -X PUT 'http://127.0.0.1:6333/collections/demo_payload_delete_20261017' -H 'Content-Type: application/json' -d '{"vectors":{"size":2,"distance":"Cosine"}}'`. Дождитесь `status: ok` и `result: true`. Если имя уже занято, **остановитесь**: подберите другое новое имя и одинаково замените его во всех командах. Размерность `2` и числа ниже — только учебные координаты, не модель для документов. [s3](#src-s3)

Добавьте две искусственные точки: `curl -fsS -X PUT 'http://127.0.0.1:6333/collections/demo_payload_delete_20261017/points?wait=true' -H 'Content-Type: application/json' -d '{"points":[{"id":1,"vector":[1,0],"payload":{"tag":"old","owner":"demo"}},{"id":2,"vector":[0,1],"payload":{"tag":"keep","owner":"other"}}]}'`. Проверьте `status: ok` и `result.status: completed`. **Upsert перезаписывает существующий ID**, поэтому не применяйте команду к старой коллекции. [s4](#src-s4)

Снимите исходные значения обеих точек: `curl -fsS -X POST 'http://127.0.0.1:6333/collections/demo_payload_delete_20261017/points' -H 'Content-Type: application/json' -d '{"ids":[1,2],"with_payload":true,"with_vector":true}'`. В `result` должны быть обе записи: у ID 1 — `tag: old`, `owner: demo` и `[1,0]`; у ID 2 — `tag: keep`, `owner: other` и `[0,1]`. При другом результате не продолжайте. [s5](#src-s5)

Удалите **только **`**tag**`** у ID 1**: `curl -fsS -X POST 'http://127.0.0.1:6333/collections/demo_payload_delete_20261017/points/payload/delete?wait=true' -H 'Content-Type: application/json' -d '{"keys":["tag"],"points":[1]}'`. Ожидайте `status: ok` и `result.status: completed`; не меняйте путь на `/payload/clear` и не расширяйте `points`. `keys: ["tag"]` выбирает поле, а `points: [1]` — одну запись; именно такой запрос по ключу и ID есть в тесте Qdrant. [s1](#src-s1) [s2](#src-s2)

## Как проверить, что остальное сохранилось?

Повторите чтение: `curl -fsS -X POST 'http://127.0.0.1:6333/collections/demo_payload_delete_20261017/points' -H 'Content-Type: application/json' -d '{"ids":[1,2],"with_payload":true,"with_vector":true}'`. Сверьте обе записи с исходным ответом: у ID 1 поля `tag` уже нет, но есть `owner: demo` и вектор `[1,0]`; у ID 2 сохранились оба поля и `[0,1]`. Ответ `completed` на запись не заменяет эту проверку. Если коллега или программа одновременно изменяют коллекцию, отдельные чтения не дают транзакционной гарантии неизменности данных: не переносите учебный порядок действий на рабочую миграцию без контроля записей. [s1](#src-s1) [s2](#src-s2) [s5](#src-s5)

В примере нет AI-модели, создания embeddings или измерения качества поиска. Удаление метаданных может изменить поведение [фильтров по полям](/zhurnal/qdrant-filtry-metadannyh/); на настоящих документах сначала убедитесь, какие фильтры нужны приложению. Если вам надо удалить *всю точку*, это [другая операция](/zhurnal/qdrant-udalit-tochki-po-filtru/). [s1](#src-s1)

## Источники

1. [Qdrant v1.19.2 — OpenAPI points: Delete и Clear payload](https://github.com/qdrant/qdrant/blob/016542aa5deb6c66380bb137badf73d54f742bde/openapi/openapi-points.ytt.yaml) — получено 2026-10-17
2. [Qdrant v1.19.2 — интеграционный тест удаления поля](https://github.com/qdrant/qdrant/blob/016542aa5deb6c66380bb137badf73d54f742bde/tests/openapi/test_payload_operations.py) — получено 2026-10-17
3. [Qdrant — Create collection, API v1.19.x](https://api.qdrant.tech/v-1-19-x/api-reference/collections/create-collection.md) — получено 2026-10-17
4. [Qdrant — Upsert points, API v1.19.x](https://api.qdrant.tech/v-1-19-x/api-reference/points/upsert-points.md) — получено 2026-10-17
5. [Qdrant — Retrieve points, API v1.19.x](https://api.qdrant.tech/v-1-19-x/api-reference/points/get-points.md) — получено 2026-10-17
