Qdrant Update Vectors: как заменить один вектор точки и сохранить остальные
На странице · 3 разделов
Если нужно заменить один вектор уже существующей точки Qdrant, используйте Update Vectors, а не повторный Upsert всей точки. Запрос указывает ID и имя изменяемого вектора; другие векторы не должны меняться. Ниже — безопасный пример на новой учебной коллекции с контрольным чтением до и после; настоящий Qdrant редакция не запускала.
Технический уровень. Нужны свой запущенный Qdrant, терминал и новая пустая учебная коллекция; это не рецепт установки домашней AI-модели. Инструкция сверена с документацией API v1.19.x 17 октября 2026 года, но редакция не запускала настоящий сервер или модель. Все команды обращаются к
127.0.0.1без секретов. Если сервер требует ключ, используйте инструкцию администратора, а не открывайте API наружу ради опыта. s1 s4
Когда менять именно вектор?
Точка — запись с ID, числовым вектором для поиска и необязательными дополнительными полями (payload). В одной точке могут храниться несколько векторов с именами, например text и image. Update Vectors меняет только названные в запросе векторы существующей точки; неназванные остаются прежними. Все переданные точки должны уже существовать. Это отличается от повторного Upsert: тот может заменить неуказанные векторы. Для изменения только поля payload есть отдельная инструкция. s1 s2
Пример ниже использует пары чисел вместо результатов настоящей модели: он показывает механизм API, не качество поиска по тексту или картинке. В рабочей системе размер каждого вектора и его происхождение должны соответствовать настройкам вашей коллекции; не подменяйте производственный вектор игрушечными числами. s2 s4
Как заменить один вектор на учебной точке?
Если тестового сервера ещё нет, откройте гайд локального Qdrant. В терминале на своём компьютере создайте новую коллекцию с двумя именованными векторами размерности 2: curl -fsS -X PUT 'http://127.0.0.1:6333/collections/qv_sandbox_20261017' -H 'Content-Type: application/json' -d '{"vectors":{"text":{"size":2,"distance":"Cosine"},"image":{"size":2,"distance":"Cosine"}}}'. Ожидайте status: ok и result: true. Если имя уже существует, остановитесь и выберите другое уникальное имя во всех командах; не меняйте коллекцию с данными. s4
Создайте точку ID 1: curl -fsS -X PUT 'http://127.0.0.1:6333/collections/qv_sandbox_20261017/points?wait=true' -H 'Content-Type: application/json' -d '{"points":[{"id":1,"vector":{"text":[1,0],"image":[0,1]},"payload":{"label":"учебный"}}]}'. Ожидайте result.status: completed. Upsert с уже существующим ID меняет запись, поэтому этот шаг допустим только на новой учебной коллекции. s2 s5
Прочитайте исходную запись: curl -fsS -X POST 'http://127.0.0.1:6333/collections/qv_sandbox_20261017/points' -H 'Content-Type: application/json' -d '{"ids":[1],"with_vector":true,"with_payload":true}'. Проверьте в result вектор text: [1,0], вектор image: [0,1] и payload.label: учебный. Если точка не находится, не отправляйте изменение: сначала сверьте коллекцию и ID. s3
Измените только text: curl -fsS -X PUT 'http://127.0.0.1:6333/collections/qv_sandbox_20261017/points/vectors?wait=true' -H 'Content-Type: application/json' -d '{"points":[{"id":1,"vector":{"text":[0,1]}}]}'. wait=true запрашивает ожидание выполнения операции; проверьте result.status: completed, а не один лишь HTTP 200. В запросе нет image и payload: не добавляйте их ради «полноты». s1 s2
Повторите чтение той же точки: curl -fsS -X POST 'http://127.0.0.1:6333/collections/qv_sandbox_20261017/points' -H 'Content-Type: application/json' -d '{"ids":[1],"with_vector":true,"with_payload":true}'. Для неизменённого учебного набора ожидается text: [0,1], image: [0,1], payload.label: учебный. Это критерий вашей проверки, не результат теста редакции. Если одно из полей пропало или ответ содержит ошибку, не продолжайте на рабочей коллекции: проверьте версию сервера, ID, размерность, имена и исходный ответ. s1 s2 s3
Что важно проверить перед рабочими данными?
Этот пример не создаёт векторы из текста или изображения: text и image здесь только имена числовых полей. Для изменения поискового представления реального документа заранее получите корректный новый вектор от той же согласованной модели и проверьте размерность. Если меняете модель представления для всей базы, обновление одной точки не мигрирует коллекцию и не меняет модель для пользовательских запросов; отдельный сценарий переключения подготовленной коллекции описывает такой переход. Это редакционный вывод из разделения операций, не гарантия совместимости разных моделей. s2 s4
На рабочей базе сначала сделайте и проверьте резервную копию, затем выполните тест на отдельных данных и перечитайте точку. Если нужен новый payload, Update Vectors его не задаёт; изменение поля payload — следующий шаг. Не выдавайте этот учебный обмен числами за запуск AI-модели или подтверждённый результат поиска. s1 s3
Источники
- Qdrant — Update vectors, API v1.19.x — Снимок update_vectors.md и SHA-256 в manifest.json. Получено 17.10.2026.
- Qdrant — Manage data: Points, Update Vectors — Снимок points.html; официальные примеры named vectors, Upsert и Update Vectors. Получено 17.10.2026.
- Qdrant — Retrieve points, API v1.19.x — Снимок retrieve.md и SHA-256 в manifest.json. Получено 17.10.2026.
- Qdrant — Create a collection, API v1.19.x — Снимок create.md и SHA-256 в manifest.json. Получено 17.10.2026.
- Qdrant — Upsert points, API v1.19.x — Снимок upsert.md и SHA-256 в manifest.json. Получено 17.10.2026.