# Qdrant Scroll: как прочитать все точки коллекции по страницам

Источник: https://modelium.tech/zhurnal/qdrant-scroll-vse-tochki/

Чтобы получить записи Qdrant без заранее известных ID, используйте Scroll: запросите первую страницу, затем подставляйте возвращённый next_page_offset в следующий запрос. Не останавливайтесь после первой порции. Ниже — учебный пример на собственной новой коллекции; реальный сервер редакция не запускала.

**Технический уровень.** Нужны собственный запущенный Qdrant и терминал: это не домашняя установка AI-модели. Инструкция основана на документации API v1.19.x, сверенной 17 октября 2026 года. Редакция не запускала Qdrant; ожидаемые ответы ниже — условия самостоятельной проверки, а не результат нашего запуска. Пример обращается только к `127.0.0.1` и новой учебной коллекции. Если ваш сервер требует ключ, настройте доступ по его инструкции, не вставляйте секрет в публичный пример. [s1](#src-s1) [s2](#src-s2)

## Почему одной страницы недостаточно?

**Точка** Qdrant — запись с ID, вектором и дополнительными полями (*payload*). Допустим, нужно просмотреть три учебных документа с ID 1, 2 и 3. Операция **Scroll** читает точки коллекции порциями; она не удаляет их и не выполняет поиск похожего текста. При `limit: 2` первая порция не может сама показать все три записи. Ответ содержит `result.next_page_offset` — значение для поля `offset` следующего запроса. По умолчанию обход упорядочен по ID. [s1](#src-s1) [s4](#src-s4)

Для рабочих данных не принимайте число точек на первом экране за полный объём: повторяйте запрос, пока ответ не перестанет давать следующий offset. При одновременных записях и удалениях такая последовательность не является зафиксированным снимком коллекции; согласуйте отдельную процедуру, если нужна точная копия изменяемой базы. Это редакционный вывод из нескольких независимых запросов, а не обещание транзакционной гарантии. [s1](#src-s1)

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

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

Поместите в пустую коллекцию три записи: `curl -fsS -X PUT 'http://127.0.0.1:6333/collections/docs_scroll_sandbox_20261017/points?wait=true' -H 'Content-Type: application/json' -d '{"points":[{"id":1,"vector":[1,0],"payload":{"name":"Альфа"}},{"id":2,"vector":[0,1],"payload":{"name":"Бета"}},{"id":3,"vector":[1,1],"payload":{"name":"Гамма"}}]}'`. Ожидайте `status: ok` и `result.status: completed`. Повторный Upsert с тем же ID **заменяет** точку — никогда не подставляйте рабочую коллекцию вместо новой учебной. [s3](#src-s3)

Запросите не более двух записей: `curl -fsS -X POST 'http://127.0.0.1:6333/collections/docs_scroll_sandbox_20261017/points/scroll' -H 'Content-Type: application/json' -d '{"limit":2,"with_payload":true,"with_vector":false}'`. В `result.points` ожидаются ID 1 и 2 с именами «Альфа» и «Бета». Скопируйте из **своего ответа** `result.next_page_offset`: в таком неизменённом примере ожидается `3`. Если ответ отличается, не угадывайте offset — сначала проверьте записи и настройки коллекции. [s1](#src-s1)

Передайте возвращённое значение следующей странице: `curl -fsS -X POST 'http://127.0.0.1:6333/collections/docs_scroll_sandbox_20261017/points/scroll' -H 'Content-Type: application/json' -d '{"limit":2,"offset":3,"with_payload":true,"with_vector":false}'`. **Число 3 годится только для этого неизменённого примера**: в своей коллекции подставьте именно `next_page_offset` из предыдущего ответа. В `result.points` ожидается ID 3 с именем «Гамма»; при отсутствии следующего offset обход завершён. Если offset снова возвращён, сделайте ещё один запрос с новым значением. [s1](#src-s1) [s4](#src-s4)

## Как проверить результат и что делать при ошибке?

В учебном наборе соберите ID из обеих порций: ожидаются **1, 2, 3 без повторов**. Если видите только два ID, не была запрошена следующая страница; если новая страница повторяет прежнюю, проверьте, что в `offset` отправлено *возвращённое* значение, а не старое. Отсутствие `payload` проверьте по `with_payload: true`; вектор здесь скрыт параметром `with_vector: false`, но хранится в точке. [s1](#src-s1)

Если сервер отвечает ошибкой доступа, не публикуйте API-ключ и не открывайте сервер наружу ради примера; выполните инструкции своего администратора. Если ответ имеет другой формат, сверьте версию собственного Qdrant с приведённой документацией. Не используйте Scroll как доказательство полноты меняющейся в этот момент базы или как резервную копию: [отдельный материал о snapshots](/zhurnal/qdrant-snapshots/) посвящён резервированию. Здесь не запускалась AI-модель, не выполнялся поиск и не измерялась скорость. [s1](#src-s1) [s4](#src-s4)

**Следующий шаг:** [проверьте отбор точек по полю](/zhurnal/qdrant-filtry-metadannyh/) на отдельной учебной коллекции: постраничный обход и фильтр решают разные задачи. [s1](#src-s1)

## Источники

1. [Qdrant — Scroll points, API v1.19.x](https://api.qdrant.tech/v-1-19-x/api-reference/points/scroll-points.md) — получено 2026-10-17
2. [Qdrant — Create collection, API v1.19.x](https://api.qdrant.tech/v-1-19-x/api-reference/collections/create-collection.md) — получено 2026-10-17
3. [Qdrant — Upsert points, API v1.19.x](https://api.qdrant.tech/v-1-19-x/api-reference/points/upsert-points.md) — получено 2026-10-17
4. [Qdrant — Manage data: Points](https://qdrant.tech/documentation/manage-data/points/) — получено 2026-10-17
