Milvus.io — официальный сайт Milvus, векторной базы данных, предназначенной для масштабируемого поиска по сходству. Это масштабируемая и невероятно быстрая база данных с открытым исходным кодом, которая специализируется на хранении, индексировании и управлении огромными векторами внедрения, генерируемыми глубокими нейронными сетями и другими моделями машинного обучения. Milvus предлагает простой и интуитивно понятный SDK для различных языков программирования, позволяющий пользователям быстро создавать крупномасштабные сервисы поиска по сходству.
В этой статье блога мы рассмотрим несколько методов работы с Milvus и приведем примеры кода для каждого метода. Давайте погрузимся!
-
Установка Milvus:
Для начала вам необходимо установить Milvus в вашей системе. Вы можете скачать автономную версию Milvus, используя следующий код:wget https://github.com/milvus-io/milvus/releases/download/v2.3.3/milvus-standalone-docker-compose.yml -O docker-compose.yml
После загрузки файла запустите Milvus с помощью Docker Compose:
sudo docker compose up -d
-
Операции CRUD:
Milvus предоставляет удобные методы выполнения операций CRUD (создание, чтение, обновление, удаление) над векторными данными. Вот пример того, как вставлять векторы в коллекцию:from milvus import Milvus, DataType, IndexType # Connect to Milvus server milvus = Milvus(host='localhost', port='19530') # Create a collection collection_name = 'my_collection' dimension = 128 milvus.create_collection(collection_name, {'dimension': dimension, 'index_file_size': 1024, 'metric_type': MetricType.L2}) # Insert vectors into the collection vectors = [[1.0] * dimension, [2.0] * dimension] ids = [1, 2] milvus.insert(collection_name, vectors, ids)
-
Векторный поиск:
Milvus обеспечивает эффективный поиск по сходству на основе векторного сходства. Вот пример выполнения векторного поиска:from milvus import Milvus, DataType, IndexType # Connect to Milvus server milvus = Milvus(host='localhost', port='19530') # Load the collection collection_name = 'my_collection' milvus.load_collection(collection_name) # Define the query vector query_vector = [1.0] * dimension # Perform vector search top_k = 10 results = milvus.search(collection_name, query_vector, top_k)
-
Фильтрация атрибутов.
Milvus поддерживает расширенный векторный поиск с фильтрацией атрибутов. Вот пример того, как фильтровать результаты поиска по атрибутам:from milvus import Milvus, DataType, IndexType # Connect to Milvus server milvus = Milvus(host='localhost', port='19530') # Load the collection collection_name = 'my_collection' milvus.load_collection(collection_name) # Define the query vector and attribute filter query_vector = [1.0] * dimension attr_filter = {'age': [30, 40]} # Perform vector search with attribute filtering top_k = 10 results = milvus.search(collection_name, query_vector, top_k, params={'anns_field': 'age', 'params': attr_filter})
Это всего лишь несколько примеров методов и функций, предлагаемых Milvus. База данных предоставляет широкий спектр функций, включая поддержку UDF, настраиваемый уровень согласованности, перемещение во времени и многое другое.
Реализуя эти методы и используя возможности Milvus, разработчики могут эффективно управлять крупномасштабными векторными данными и осуществлять поиск для различных приложений машинного обучения.