Skip to content

Documentation for Similarity Search API Methods


Functionality

Endpoint to search for similar objects using a query and/or payload filter. It accepts similarity search parameters and returns matching results along with a session ID if a session is created.


Request Parameters

  • search_query (any): A string or structured query object to find similar objects.
  • filter (object, optional): Optional payload filter for refining search results.
  • offset (int, optional): Pagination offset for search results.
  • limit (int): Maximum number of search results to return.
  • max_distance (float, optional): Maximum allowed distance for similarity matching.
  • create_session (bool): Boolean flag to create a session if one does not exist.
  • user_id (string, optional): Optional user identifier for tracking.
  • session_id (string, optional): Optional session identifier.
  • sort_by (object, optional): Sort configuration, e.g., by "field": "distance", "order": "asc".
  • similarity_first (bool): Prioritize similarity ranking before applying sort rules.
  • meta_info (object, optional): Additional metadata to store or log with the search.

Request JSON Example

{
  "search_query": "machine learning",
  "limit": 10,
  "offset": 0,
  "max_distance": 0.5,
  "filter": {
    "category": "AI",
    "published_year": { "$gte": 2020 }
  },
  "create_session": true,
  "user_id": "user-123",
  "session_id": null,
  "sort_by": {
    "field": "distance",
    "order": "asc"
  },
  "similarity_first": true,
  "meta_info": {
    "note": "production test run"
  }
}

Response JSON Example

{
  "session_id": "session-456",
  "next_page_offset": 10,
  "total_count": 189,
  "search_results": [
    {
      "object_id": "object-001",
      "distance": 0.172,
      "payload": {
        "title": "Deep Learning",
        "tags": ["AI", "ML"]
      },
      "meta": {
        "created_at": "2023-12-01T10:00:00Z"
      }
    }
  ],
  "meta_info": {
    "retrieval_time_ms": 312
  }
}

Functionality

This endpoint performs a search using only payload filters (no embedding similarity required). Ideal for structured lookups using JSON attributes.


Request Parameters

  • search_query: Can be a string or structured payload (e.g., metadata object).
  • limit: Max number of results to return.
  • offset: Optional offset for paginated results.
  • max_distance: Optional threshold if similarity is still relevant.
  • filter: Optional filter conditions for payload fields.
  • create_session: Whether to start a tracking session.
  • user_id: Optional user performing the request.
  • session_id: Reuse an existing session if provided.
  • sort_by: Optional sorting configuration.
  • similarity_first: Prioritize similarity when sorting, if enabled.
  • meta_info: Optional metadata for analytics or context.

Request JSON Example

{
  "search_query": {
    "tags": ["transformers", "vision"]
  },
  "limit": 15,
  "offset": 0,
  "filter": {
    "domain": "research",
    "stars": { "$gte": 100 }
  },
  "create_session": false,
  "user_id": "user-abc",
  "session_id": null,
  "sort_by": {
    "field": "created_at",
    "order": "desc"
  },
  "similarity_first": false,
  "meta_info": {
    "note": "payload search only"
  }
}

Response JSON Example

{
  "session_id": "session-789",
  "next_page_offset": 15,
  "total_count": 65,
  "search_results": [
    {
      "object_id": "object-xyz",
      "distance": 0.24,
      "payload": {
        "title": "Efficient AI Systems",
        "domain": "research"
      },
      "meta": {
        "language": "Python"
      }
    }
  ],
  "meta_info": {
    "execution_time_ms": 289
  }
}

/embeddings/payload-count

Functionality

Returns the count of documents matching a specified payload filter. Used to estimate result volume or support faceted filtering in UI.


Request Parameters

  • search_query: Optional object for filtering or search context.
  • filter: Optional structured object for attribute filtering.

Request JSON Example

{
  "search_query": {
    "domain": "research"
  },
  "filter": {
    "category": "opensource",
    "downloads": { "$gte": 1000 }
  }
}

Response JSON Example

{
  "total_count": 423
}

Example Curl

curl -X POST "http://<server>/embeddings/payload-count" \
     -H "Content-Type: application/json" \
     -d '{"filter": {"category": "opensource"}}'