syntax = "proto3";
import "points.proto";
package qdrant;
option csharp_namespace = "Qdrant.Client.Grpc";
service Points {
// Perform insert + updates on points.
// If a point with a given ID already exists - it will be overwritten.
rpc Upsert(UpsertPoints) returns (PointsOperationResponse) {}
// Delete points
rpc Delete(DeletePoints) returns (PointsOperationResponse) {}
// Retrieve points
rpc Get(GetPoints) returns (GetResponse) {}
// Update named vectors for point
rpc UpdateVectors(UpdatePointVectors) returns (PointsOperationResponse) {}
// Delete named vectors for points
rpc DeleteVectors(DeletePointVectors) returns (PointsOperationResponse) {}
// Set payload for points
rpc SetPayload(SetPayloadPoints) returns (PointsOperationResponse) {}
// Overwrite payload for points
rpc OverwritePayload(SetPayloadPoints) returns (PointsOperationResponse) {}
// Delete specified key payload for points
rpc DeletePayload(DeletePayloadPoints) returns (PointsOperationResponse) {}
// Remove all payload for specified points
rpc ClearPayload(ClearPayloadPoints) returns (PointsOperationResponse) {}
// Create index for field in collection
rpc CreateFieldIndex(CreateFieldIndexCollection)
returns (PointsOperationResponse) {}
// Delete field index for collection
rpc DeleteFieldIndex(DeleteFieldIndexCollection)
returns (PointsOperationResponse) {}
// Create a new named vector on the collection
rpc CreateVectorName(CreateVectorNameRequest) returns (PointsOperationResponse) {}
// Delete a named vector from the collection
rpc DeleteVectorName(DeleteVectorNameRequest) returns (PointsOperationResponse) {}
// Retrieve closest points based on vector similarity and given filtering
// conditions
rpc Search(SearchPoints) returns (SearchResponse) {}
// Retrieve closest points based on vector similarity and given filtering
// conditions
rpc SearchBatch(SearchBatchPoints) returns (SearchBatchResponse) {}
// Retrieve closest points based on vector similarity and given filtering
// conditions, grouped by a given field
rpc SearchGroups(SearchPointGroups) returns (SearchGroupsResponse) {}
// Iterate over all or filtered points
rpc Scroll(ScrollPoints) returns (ScrollResponse) {}
// Look for the points which are closer to stored positive examples and at
// the same time further to negative examples.
rpc Recommend(RecommendPoints) returns (RecommendResponse) {}
// Look for the points which are closer to stored positive examples and at
// the same time further to negative examples.
rpc RecommendBatch(RecommendBatchPoints) returns (RecommendBatchResponse) {}
// Look for the points which are closer to stored positive examples and at
// the same time further to negative examples, grouped by a given field
rpc RecommendGroups(RecommendPointGroups) returns (RecommendGroupsResponse) {}
// Use context and a target to find the most similar points to the target,
// constrained by the context.
//
// When using only the context (without a target), a special search - called
// context search - is performed where pairs of points are used to generate a
// loss that guides the search towards the zone where most positive examples
// overlap. This means that the score minimizes the scenario of finding a
// point closer to a negative than to a positive part of a pair.
//
// Since the score of a context relates to loss, the maximum score a point
// can get is 0.0, and it becomes normal that many points can have a score of
// 0.0.
//
// When using target (with or without context), the score behaves a little
// different: The integer part of the score represents the rank with respect
// to the context, while the decimal part of the score relates to the
// distance to the target. The context part of the score for each pair is
// calculated +1 if the point is closer to a positive than to a negative part
// of a pair, and -1 otherwise.
rpc Discover(DiscoverPoints) returns (DiscoverResponse) {}
// Batch request points based on { positive, negative } pairs of examples, and/or a target
rpc DiscoverBatch(DiscoverBatchPoints) returns (DiscoverBatchResponse) {}
// Count points in collection with given filtering conditions
rpc Count(CountPoints) returns (CountResponse) {}
// Perform multiple update operations in one request
rpc UpdateBatch(UpdateBatchPoints) returns (UpdateBatchResponse) {}
// Universally query points.
// This endpoint covers all capabilities of search, recommend, discover, filters.
// But also enables hybrid and multi-stage queries.
rpc Query(QueryPoints) returns (QueryResponse) {}
// Universally query points in a batch fashion.
// This endpoint covers all capabilities of search, recommend, discover, filters.
// But also enables hybrid and multi-stage queries.
rpc QueryBatch(QueryBatchPoints) returns (QueryBatchResponse) {}
// Universally query points in a group fashion.
// This endpoint covers all capabilities of search, recommend, discover, filters.
// But also enables hybrid and multi-stage queries.
rpc QueryGroups(QueryPointGroups) returns (QueryGroupsResponse) {}
// Perform facet counts.
// For each value in the field, count the number of points that have this
// value and match the conditions.
rpc Facet(FacetCounts) returns (FacetResponse) {}
// Compute distance matrix for sampled points with a pair based output format
rpc SearchMatrixPairs(SearchMatrixPoints)
returns (SearchMatrixPairsResponse) {}
// Compute distance matrix for sampled points with an offset based output format
rpc SearchMatrixOffsets(SearchMatrixPoints)
returns (SearchMatrixOffsetsResponse) {}
}