Qdrant Beta API

Beta features, do not depend on these yet.

OpenAPI Specification

qdrant-beta-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Qdrant Aliases Beta API
  description: "API description for Qdrant vector search engine.\n\nThis document describes CRUD and search operations on collections of points (vectors with payload).\n\nQdrant supports any combinations of `should`, `min_should`, `must` and `must_not` conditions, which makes it possible to use in applications when object could not be described solely by vector. It could be location features, availability flags, and other custom properties businesses should take into account.\n## Examples\nThis examples cover the most basic use-cases - collection creation and basic vector search.\n### Create collection\nFirst - let's create a collection with dot-production metric.\n```\ncurl -X PUT 'http://localhost:6333/collections/test_collection' \\\n  -H 'Content-Type: application/json' \\\n  --data-raw '{\n    \"vectors\": {\n      \"size\": 4,\n      \"distance\": \"Dot\"\n    }\n  }'\n\n```\nExpected response:\n```\n{\n    \"result\": true,\n    \"status\": \"ok\",\n    \"time\": 0.031095451\n}\n```\nWe can ensure that collection was created:\n```\ncurl 'http://localhost:6333/collections/test_collection'\n```\nExpected response:\n```\n{\n  \"result\": {\n    \"status\": \"green\",\n    \"segments_count\": 5,\n    \"disk_data_size\": 0,\n    \"ram_data_size\": 0,\n    \"config\": {\n      \"params\": {\n        \"vectors\": {\n          \"size\": 4,\n          \"distance\": \"Dot\"\n        }\n      },\n      \"hnsw_config\": {\n        \"m\": 16,\n        \"ef_construct\": 100,\n        \"full_scan_threshold\": 10000\n      },\n      \"optimizer_config\": {\n        \"deleted_threshold\": 0.2,\n        \"vacuum_min_vector_number\": 1000,\n        \"default_segment_number\": 2,\n        \"max_segment_size\": null,\n        \"memmap_threshold\": null,\n        \"indexing_threshold\": 20000,\n        \"flush_interval_sec\": 5,\n        \"max_optimization_threads\": null\n      },\n      \"wal_config\": {\n        \"wal_capacity_mb\": 32,\n        \"wal_segments_ahead\": 0\n      }\n    }\n  },\n  \"status\": \"ok\",\n  \"time\": 2.1199e-05\n}\n```\n\n### Add points\nLet's now add vectors with some payload:\n```\ncurl -L -X PUT 'http://localhost:6333/collections/test_collection/points?wait=true' \\ -H 'Content-Type: application/json' \\ --data-raw '{\n  \"points\": [\n    {\"id\": 1, \"vector\": [0.05, 0.61, 0.76, 0.74], \"payload\": {\"city\": \"Berlin\"}},\n    {\"id\": 2, \"vector\": [0.19, 0.81, 0.75, 0.11], \"payload\": {\"city\": [\"Berlin\", \"London\"] }},\n    {\"id\": 3, \"vector\": [0.36, 0.55, 0.47, 0.94], \"payload\": {\"city\": [\"Berlin\", \"Moscow\"] }},\n    {\"id\": 4, \"vector\": [0.18, 0.01, 0.85, 0.80], \"payload\": {\"city\": [\"London\", \"Moscow\"] }},\n    {\"id\": 5, \"vector\": [0.24, 0.18, 0.22, 0.44], \"payload\": {\"count\": [0]}},\n    {\"id\": 6, \"vector\": [0.35, 0.08, 0.11, 0.44]}\n  ]\n}'\n```\nExpected response:\n```\n{\n    \"result\": {\n        \"operation_id\": 0,\n        \"status\": \"completed\"\n    },\n    \"status\": \"ok\",\n    \"time\": 0.000206061\n}\n```\n### Search with filtering\nLet's start with a basic request:\n```\ncurl -L -X POST 'http://localhost:6333/collections/test_collection/points/search' \\ -H 'Content-Type: application/json' \\ --data-raw '{\n    \"vector\": [0.2,0.1,0.9,0.7],\n    \"top\": 3\n}'\n```\nExpected response:\n```\n{\n    \"result\": [\n        { \"id\": 4, \"score\": 1.362, \"payload\": null, \"version\": 0 },\n        { \"id\": 1, \"score\": 1.273, \"payload\": null, \"version\": 0 },\n        { \"id\": 3, \"score\": 1.208, \"payload\": null, \"version\": 0 }\n    ],\n    \"status\": \"ok\",\n    \"time\": 0.000055785\n}\n```\nBut result is different if we add a filter:\n```\ncurl -L -X POST 'http://localhost:6333/collections/test_collection/points/search' \\ -H 'Content-Type: application/json' \\ --data-raw '{\n    \"filter\": {\n        \"should\": [\n            {\n                \"key\": \"city\",\n                \"match\": {\n                    \"value\": \"London\"\n                }\n            }\n        ]\n    },\n    \"vector\": [0.2, 0.1, 0.9, 0.7],\n    \"top\": 3\n}'\n```\nExpected response:\n```\n{\n    \"result\": [\n        { \"id\": 4, \"score\": 1.362, \"payload\": null, \"version\": 0 },\n        { \"id\": 2, \"score\": 0.871, \"payload\": null, \"version\": 0 }\n    ],\n    \"status\": \"ok\",\n    \"time\": 0.000093972\n}\n```\n"
  contact:
    email: andrey@vasnetsov.com
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  version: master
servers:
- url: '{protocol}://{hostname}:{port}'
  variables:
    protocol:
      enum:
      - http
      - https
      default: http
    hostname:
      default: localhost
    port:
      default: '6333'
security:
- api-key: []
- bearerAuth: []
- {}
tags:
- name: Beta
  description: Beta features, do not depend on these yet.
paths:
  /issues:
    get:
      summary: Get issues
      description: Get a report of performance issues and configuration suggestions
      operationId: get_issues
      tags:
      - Beta
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
        4XX:
          description: error
    delete:
      summary: Clear issues
      description: Removes all issues reported so far
      operationId: clear_issues
      tags:
      - Beta
      responses:
        default:
          description: error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        4XX:
          description: error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                type: object
                properties:
                  usage:
                    default: null
                    anyOf:
                    - $ref: '#/components/schemas/Usage'
                    - nullable: true
                  time:
                    type: number
                    format: float
                    description: Time spent to process this request
                    example: 0.002
                  status:
                    type: string
                    example: ok
                  result:
                    type: boolean
components:
  schemas:
    HardwareUsage:
      description: Usage of the hardware resources, spent to process the request
      type: object
      required:
      - cpu
      - payload_index_io_read
      - payload_index_io_write
      - payload_io_read
      - payload_io_write
      - vector_io_read
      - vector_io_write
      properties:
        cpu:
          type: integer
          format: uint
          minimum: 0
        payload_io_read:
          type: integer
          format: uint
          minimum: 0
        payload_io_write:
          type: integer
          format: uint
          minimum: 0
        payload_index_io_read:
          type: integer
          format: uint
          minimum: 0
        payload_index_io_write:
          type: integer
          format: uint
          minimum: 0
        vector_io_read:
          type: integer
          format: uint
          minimum: 0
        vector_io_write:
          type: integer
          format: uint
          minimum: 0
    Usage:
      description: Usage of the hardware resources, spent to process the request
      type: object
      properties:
        hardware:
          anyOf:
          - $ref: '#/components/schemas/HardwareUsage'
          - nullable: true
        inference:
          anyOf:
          - $ref: '#/components/schemas/InferenceUsage'
          - nullable: true
    ErrorResponse:
      type: object
      properties:
        time:
          type: number
          format: float
          description: Time spent to process this request
        status:
          type: object
          properties:
            error:
              type: string
              description: Description of the occurred error.
        result:
          type: object
          nullable: true
    InferenceUsage:
      type: object
      required:
      - models
      properties:
        models:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/ModelUsage'
    ModelUsage:
      type: object
      required:
      - tokens
      properties:
        tokens:
          type: integer
          format: uint64
          minimum: 0
  securitySchemes:
    api-key:
      type: apiKey
      in: header
      name: api-key
      description: Authorization key, either read-write or read-only
    bearerAuth:
      type: http
      scheme: bearer
externalDocs:
  description: Find out more about Qdrant applications and demo
  url: https://qdrant.tech/documentation/