Что означает num_entities для коллекции Milvus?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Что означает num_entities для коллекции Milvus?

Сообщение Anonymous »

Я думал, что num_entities будет указывать количество записей (или какой-то другой правильный термин) в коллекции Milvus. Однако я создал один файл — test_milvus.py, чтобы создать такую ​​простую коллекцию:

Код: Выделить всё

import numpy as np
from pymilvus import connections, Collection, CollectionSchema, FieldSchema, DataType

connections.connect(alias='default',host='localhost', port='19530')

# Define the schema
schema = CollectionSchema([FieldSchema("id", DataType.INT64, is_primary=True, max_length=100),
FieldSchema("vector", DataType.FLOAT_VECTOR, dim=2)])

# Create a collection
collection = Collection("test_collection", schema)

# Insert data
data = [{"id":i, "vector": np.array([i, i],dtype=np.float32)} for i in range(10)]
collection.insert(data)

# Flush data
collection.flush()

# Disconnect from the server
connections.disconnect(alias='default')
и еще один для получения информации о коллекциях в базе данных Milvus = milvus_info.py – вот так:

Код: Выделить всё

from pymilvus import Collection, connections, db, utility

def get_info (host: str = "localhost", port: str = "19530"):

# Connect to Milvus (replace with your connection details)
connections.connect(alias="default", host=host, port=port)  # Replace with your connection parameters

# Print the list of databases and collections
db_list = db.list_database()
for db_name in db_list:
print(f"Database: {db_name}")
collection_list = utility.list_collections(using=db_name)
if len(collection_list) == 0:
print("  No collections")
for collection_name in collection_list:
print(f"  Collection: {collection_name}")
temp_collection = Collection(name=collection_name)
for info in temp_collection.describe():
print(f"    {info}: {temp_collection.describe()[info]}")
print(f"   Number of entities: {temp_collection.num_entities}")

# Disconnect from Milvus
connections.disconnect(alias='default')

if __name__ == "__main__":
get_info()
Когда я впервые запустил test_milvus, а затем milvus_info.py, я получил следующий результат:

Код: Выделить всё

  $ python test_milvus.py
$ python milvus_info.py
Database: default
Collection: test_collection
collection_name: test_collection
auto_id: False
num_shards: 1
description:
fields: [{'field_id': 100, 'name': 'id', 'description': '', 'type': , 'params': {}, 'is_primary': True}, {'field_id': 101, 'name': 'vector', 'description': '', 'type': , 'params': {'dim': 2}}]
aliases: []
collection_id: 450687678279804785
consistency_level: 2
properties: {}
num_partitions: 1
enable_dynamic_field: False
Number of entities: 10
что показалось мне странным, поскольку в базе данных было только 2 вектора.
Однако, если я снова запущу `test_milvus.py', количество объектов увеличивается до 20, хотя новые векторы не добавляются:

Код: Выделить всё

$ python test_milvus.py
$ python milvus_info.py
Database: default
Collection: test_collection
collection_name: test_collection
auto_id: False
num_shards: 1
description:
fields: [{'field_id': 100, 'name': 'id', 'description': '', 'type': , 'params': {}, 'is_primary': True}, {'field_id': 101, 'name': 'vector', 'description': '', 'type': , 'params': {'dim': 2}}]
aliases: []
collection_id: 450687678279804785
consistency_level: 2
properties: {}
num_partitions: 1
enable_dynamic_field: False
Number of entities: 20
Это происходит, хотя я пытался добавить только те записи, которые уже были там. Я ожидал, что num_entities будет равно 10, независимо от того, сколько раз я запускаю эти файлы. В документации говорится, что он возвращает количество строк, но я могу увеличить его до произвольного значения, сохраняя при этом только 10 строк. Предполагается ли, что num_entities отслеживает все когда-либо существовавшие строки???

Подробнее здесь: https://stackoverflow.com/questions/786 ... collection
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»