# Qdrant Facet: значения поля и число точек для каждого

Источник: https://modelium.tech/zhurnal/qdrant-facet-po-polyu/

Facet в Qdrant показывает значения выбранного поля и количество точек с каждым значением. Для запроса нужен индекс этого поля; установите exact: true, если важен точный счёт, и задайте limit осознанно. Ниже — учебные запросы к своему локальному серверу, а не результат запуска редакции.

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

## Когда нужен Facet, а когда Count?

Представьте коллекцию заметок, где у каждой записи есть поле `kind` со значением `letter` или `note`. **Точка** — запись с ID, вектором и дополнительными полями (*payload*). Facet покажет, какие значения встречаются в `kind` и сколько точек приходится на каждое. В отличие от [Count points](/zhurnal/qdrant-count-points/), вы получите список значений со счётчиками, а не одно итоговое число. Facet — не проверка прав доступа к чужим документам. [s1](#src-s1) [s2](#src-s2)

Для Facet сначала нужен индекс поля, который поддерживает совпадение значения: здесь `keyword` для текстовых меток. По умолчанию Qdrant возвращает не более десяти значений (`limit: 10`), а счёт может быть приблизительным (`exact: false`). Поэтому в небольшом учебном примере укажем `limit: 5` и `exact: true`; на реальных данных более высокий предел и точный счёт могут стоить дополнительных ресурсов. [s1](#src-s1) [s2](#src-s2)

## Как получить два значения на отдельной учебной коллекции?

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

Создайте индекс поля `kind`: `curl -fsS -X PUT 'http://127.0.0.1:6333/collections/demo_facet_20261019/index?wait=true' -H 'Content-Type: application/json' -d '{"field_name":"kind","field_schema":"keyword"}'`. Успешный ответ содержит `status: ok` и `result.status: completed`. Если создание индекса не завершилось, не переходите дальше. [s1](#src-s1) [s3](#src-s3)

Загрузите три учебные точки: `curl -fsS -X PUT 'http://127.0.0.1:6333/collections/demo_facet_20261019/points?wait=true' -H 'Content-Type: application/json' -d '{"points":[{"id":1,"vector":[1,0],"payload":{"kind":"letter"}},{"id":2,"vector":[0,1],"payload":{"kind":"letter"}},{"id":3,"vector":[1,1],"payload":{"kind":"note"}}]}'`. Дождитесь `result.status: completed`. Повторный Upsert с тем же ID может заменить запись, поэтому используйте только отдельную учебную коллекцию. [s5](#src-s5)

Теперь запросите Facet: `curl -fsS -X POST 'http://127.0.0.1:6333/collections/demo_facet_20261019/facet' -H 'Content-Type: application/json' -d '{"key":"kind","limit":5,"exact":true}'`. Для **неизменённого** учебного набора ожидайте в `result.hits` две пары: `letter` → `2` и `note` → `1`; порядок пар не важен. Если пары другие, проверьте ответ загрузки, индекс, точное имя коллекции и отсутствие параллельных изменений. Это вывод из заданных данных, не ответ запущенного Qdrant. [s2](#src-s2) [s5](#src-s5)

## Что проверить перед использованием на своих данных?

`result.hits` — список значений и количеств, а не найденные тексты. Не считайте его полным перечнем уникальных значений, если их больше `limit`; для фильтрации по конкретной метке перейдите к [гайду по фильтрам](/zhurnal/qdrant-filtry-metadannyh/). Если Qdrant сообщает об отсутствии индекса, проверьте его создание именно для поля `kind` и тип `keyword`. При отказе в доступе не публикуйте сервер в интернет: используйте свой защищённый локальный доступ. Мы не проверяли это на настоящем сервере и не измеряли производительность. [s1](#src-s1) [s2](#src-s2) [s3](#src-s3)

## Источники

1. [Qdrant — Payload, Facet counts](https://qdrant.tech/documentation/manage-data/payload/) — получено 2026-10-19
2. [Qdrant — Payload field facets, API v1.19.x](https://api.qdrant.tech/v-1-19-x/api-reference/points/facet.md) — получено 2026-10-19
3. [Qdrant — Create payload index, API v1.19.x](https://api.qdrant.tech/v-1-19-x/api-reference/indexes/create-field-index.md) — получено 2026-10-19
4. [Qdrant — Create collection, API v1.19.x](https://api.qdrant.tech/v-1-19-x/api-reference/collections/create-collection.md) — получено 2026-10-19
5. [Qdrant — Upsert points, API v1.19.x](https://api.qdrant.tech/v-1-19-x/api-reference/points/upsert-points.md) — получено 2026-10-19
