mirror of
https://gitee.com/milvus-io/milvus.git
synced 2025-12-07 01:28:27 +08:00
299 lines
6.5 KiB
Python
299 lines
6.5 KiB
Python
from enum import IntEnum
|
|
|
|
|
|
class IndexType(IntEnum):
|
|
INVALIDE = 0
|
|
IDMAP = 1
|
|
IVFLAT = 2
|
|
|
|
|
|
class TableSchema(object):
|
|
"""
|
|
Table Schema
|
|
|
|
:type table_name: str
|
|
:param table_name: (Required) name of table
|
|
|
|
:type index_type: IndexType
|
|
:param index_type: (Optional) index type, default = 0
|
|
|
|
`IndexType`: 0-invalid, 1-idmap, 2-ivflat
|
|
|
|
:type dimension: int64
|
|
:param dimension: (Required) dimension of vector
|
|
|
|
:type store_raw_vector: bool
|
|
:param store_raw_vector: (Optional) default = False
|
|
|
|
"""
|
|
def __init__(self, table_name,
|
|
dimension=0,
|
|
index_type=IndexType.INVALIDE,
|
|
store_raw_vector=False):
|
|
self.table_name = table_name
|
|
self.index_type = index_type
|
|
self.dimension = dimension
|
|
self.store_raw_vector = store_raw_vector
|
|
|
|
|
|
class Range(object):
|
|
"""
|
|
Range information
|
|
|
|
:type start: str
|
|
:param start: Range start value
|
|
|
|
:type end: str
|
|
:param end: Range end value
|
|
|
|
"""
|
|
def __init__(self, start, end):
|
|
self.start = start
|
|
self.end = end
|
|
|
|
|
|
class RowRecord(object):
|
|
"""
|
|
Record inserted
|
|
|
|
:type vector_data: binary str
|
|
:param vector_data: (Required) a vector
|
|
|
|
"""
|
|
def __init__(self, vector_data):
|
|
self.vector_data = vector_data
|
|
|
|
|
|
class QueryResult(object):
|
|
"""
|
|
Query result
|
|
|
|
:type id: int64
|
|
:param id: id of the vector
|
|
|
|
:type score: float
|
|
:param score: Vector similarity 0 <= score <= 100
|
|
|
|
"""
|
|
def __init__(self, id, score):
|
|
self.id = id
|
|
self.score = score
|
|
|
|
def __repr__(self):
|
|
L = ['%s=%r' % (key, value)
|
|
for key, value in self.__dict__.items()]
|
|
return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
|
|
|
|
|
|
class TopKQueryResult(object):
|
|
"""
|
|
TopK query results
|
|
|
|
:type query_results: list[QueryResult]
|
|
:param query_results: TopK query results
|
|
|
|
"""
|
|
def __init__(self, query_results):
|
|
self.query_results = query_results
|
|
|
|
def __repr__(self):
|
|
L = ['%s=%r' % (key, value)
|
|
for key, value in self.__dict__.items()]
|
|
return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
|
|
|
|
|
|
def _abstract():
|
|
raise NotImplementedError('You need to override this function')
|
|
|
|
|
|
class ConnectIntf(object):
|
|
"""SDK client abstract class
|
|
|
|
Connection is a abstract class
|
|
|
|
"""
|
|
|
|
def connect(self, host=None, port=None, uri=None):
|
|
"""
|
|
Connect method should be called before any operations
|
|
Server will be connected after connect return OK
|
|
Should be implemented
|
|
|
|
:type host: str
|
|
:param host: host
|
|
|
|
:type port: str
|
|
:param port: port
|
|
|
|
:type uri: str
|
|
:param uri: (Optional) uri
|
|
|
|
:return: Status, indicate if connect is successful
|
|
"""
|
|
_abstract()
|
|
|
|
def connected(self):
|
|
"""
|
|
connected, connection status
|
|
Should be implemented
|
|
|
|
:return: Status, indicate if connect is successful
|
|
"""
|
|
_abstract()
|
|
|
|
def disconnect(self):
|
|
"""
|
|
Disconnect, server will be disconnected after disconnect return SUCCESS
|
|
Should be implemented
|
|
|
|
:return: Status, indicate if connect is successful
|
|
"""
|
|
_abstract()
|
|
|
|
def create_table(self, param):
|
|
"""
|
|
Create table
|
|
Should be implemented
|
|
|
|
:type param: TableSchema
|
|
:param param: provide table information to be created
|
|
|
|
:return: Status, indicate if connect is successful
|
|
"""
|
|
_abstract()
|
|
|
|
def delete_table(self, table_name):
|
|
"""
|
|
Delete table
|
|
Should be implemented
|
|
|
|
:type table_name: str
|
|
:param table_name: table_name of the deleting table
|
|
|
|
:return: Status, indicate if connect is successful
|
|
"""
|
|
_abstract()
|
|
|
|
def add_vectors(self, table_name, records):
|
|
"""
|
|
Add vectors to table
|
|
Should be implemented
|
|
|
|
:type table_name: str
|
|
:param table_name: table name been inserted
|
|
|
|
:type records: list[RowRecord]
|
|
:param records: list of vectors been inserted
|
|
|
|
:returns:
|
|
Status : indicate if vectors inserted successfully
|
|
ids :list of id, after inserted every vector is given a id
|
|
"""
|
|
_abstract()
|
|
|
|
def search_vectors(self, table_name, query_records, query_ranges, top_k):
|
|
"""
|
|
Query vectors in a table
|
|
Should be implemented
|
|
|
|
:type table_name: str
|
|
:param table_name: table name been queried
|
|
|
|
:type query_records: list[RowRecord]
|
|
:param query_records: all vectors going to be queried
|
|
|
|
:type query_ranges: list[Range]
|
|
:param query_ranges: Optional ranges for conditional search.
|
|
If not specified, search whole table
|
|
|
|
:type top_k: int
|
|
:param top_k: how many similar vectors will be searched
|
|
|
|
:returns:
|
|
Status: indicate if query is successful
|
|
query_results: list[TopKQueryResult]
|
|
"""
|
|
_abstract()
|
|
|
|
def describe_table(self, table_name):
|
|
"""
|
|
Show table information
|
|
Should be implemented
|
|
|
|
:type table_name: str
|
|
:param table_name: which table to be shown
|
|
|
|
:returns:
|
|
Status: indicate if query is successful
|
|
table_schema: TableSchema, given when operation is successful
|
|
"""
|
|
_abstract()
|
|
|
|
def get_table_row_count(self, table_name):
|
|
"""
|
|
Get table row count
|
|
Should be implemented
|
|
|
|
:type table_name, str
|
|
:param table_name, target table name.
|
|
|
|
:returns:
|
|
Status: indicate if operation is successful
|
|
count: int, table row count
|
|
"""
|
|
_abstract()
|
|
|
|
def show_tables(self):
|
|
"""
|
|
Show all tables in database
|
|
should be implemented
|
|
|
|
:return:
|
|
Status: indicate if this operation is successful
|
|
tables: list[str], list of table names
|
|
"""
|
|
_abstract()
|
|
|
|
def client_version(self):
|
|
"""
|
|
Provide client version
|
|
should be implemented
|
|
|
|
:return: str, client version
|
|
"""
|
|
_abstract()
|
|
|
|
def server_version(self):
|
|
"""
|
|
Provide server version
|
|
should be implemented
|
|
|
|
:return: str, server version
|
|
"""
|
|
_abstract()
|
|
|
|
def server_status(self, cmd):
|
|
"""
|
|
Provide server status
|
|
should be implemented
|
|
:type cmd, str
|
|
|
|
:return: str, server status
|
|
"""
|
|
_abstract()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|