Предисловие: В Интернете есть много объяснений милвуса, но, прочитав их, я все еще чувствую, что они не очень подробные. Я специально написал этот блог, чтобы записать подробные шаги в качестве вводного поста о милвусе.
Вектор — это величина определенного размера и направления. Его можно просто понимать как набор чисел, например матрицу с одной строкой и несколькими столбцами, например: [2,0,1,9,0,6,3. ,0]. Каждая строка представляет элемент данных, а каждый столбец представляет атрибут элемента данных.
Собственные векторы — это векторы, которые содержат важные характеристики чего-либо. Хорошо известным вектором признаков является цвет RGB (красный-зеленый-синий). Каждый цвет можно получить соотношением трех цветов: красного®, зеленого (G) и синего (B). Такой вектор признаков можно описать как: цвет = [красный, зеленый, синий].
Под поиском векторов понимается извлечение K векторов, ближайших к целевому вектору, из библиотеки векторов. Обычно мы используем евклидово расстояние, косинусное расстояние и т. д. между двумя векторами, чтобы измерить расстояние между двумя векторами и оценить сходство двух векторов одновременно.
Нажмите, чтобы войти Milvus официальный сайт.
Milvus был создан в 2019 году с единственной целью: хранить, индексировать и управлять большим количеством векторов внедрения, созданных глубокими нейронными сетями и другими моделями машинного обучения (ML). Будучи базой данных, специально предназначенной для обработки входных векторных запросов, она способна индексировать векторы в масштабе триллиона. В отличие от существующих реляционных баз данных, которые в основном обрабатывают структурированные данные по заранее заданным схемам, Milvus спроектирован снизу вверх для обработки встроенных векторов, преобразованных из неструктурированных данных.
Milvus — это векторная база данных с открытым исходным кодом, которая поддерживает операции добавления, удаления и модификации, а также запросы векторов размером в терабайтах практически в реальном времени. Она очень гибкая, стабильная, надежная и обладает характеристиками высокоскоростных запросов. Milvus интегрирует широко используемые библиотеки векторных индексов, такие как Faiss, NMSLIB и Annoy, поддерживает такие функции, как секционирование и сегментирование данных, сохранение данных, инкрементальный прием данных, скалярно-векторный гибридный запрос и перемещение во времени. Производительность может удовлетворить потребности приложений в любом сценарии векторного поиска. Он предоставляет набор простых и интуитивно понятных API, позволяющих выбирать разные типы индексов для разных сценариев. Кроме того, Milvus также может фильтровать скалярные данные, что еще больше улучшает запоминаемость и повышает гибкость поиска.
Milvus использует общую архитектуру хранения данных, в которой хранилище и вычисления полностью разделены, а вычислительные узлы поддерживают горизонтальное расширение. С архитектурной точки зрения Milvus следует разделению потока данных и потока управления и разделен на четыре уровня: уровень доступа, службу координатора, рабочий узел и уровень хранения. Каждый уровень независим друг от друга, способен к независимому расширению и аварийному восстановлению.
С развитием Интернета,,Неструктурированные данные становятся все более распространенными,Включает электронные письма, документы, данные датчиков Интернета вещей, фотографии Facebook, белковые структуры и многое другое. для Позвольте компьютерам понимать и обрабатывать неструктурированные данные,Технология встраивания use преобразует эти данные в векторы. Milvus хранит и индексирует эти векторы. Milvus может анализировать корреляцию между двумя векторами, вычисляя расстояние их сходства. Если два вектора внедрения очень похожи,Это означает, что исходный источник данных также очень похож.。Milvus База данных векторов специально разработана для векторных запросов и поиска и может индексировать триллионы векторных данных. В отличие от существующих реляционных баз данных, которые в основном используются для обработки структурированных данных, Milvus В основе лежит обработка преобразования различных неструктурированных данных. Embedding Рожденный от переносчиков。
Описывает, как использовать Docker Compose для самостоятельной установки Milvus. Перед установкой проверьте требования к аппаратному и программному обеспечению.
Для пользователей MacOS 10.14 и более поздних версий настройте виртуальную машину Docker так, чтобы она использовала как минимум 2 виртуальных процессора и 8 ГБ начальной памяти. В противном случае установка может завершиться неудачно.
Ссылка на официальный сайт Милвуса
Загрузите milvus-standalone-docker-compose. и сохраните его как docker-compose. Создайте Yml вручную или с помощью следующей команды.
wget https://github.com/milvus-io/milvus/releases/download/v2.2.11/milvus-standalone-docker-compose.yml -O docker-compose.yml
В том же каталоге, что и docker-compose. yml, выполните следующую команду, чтобы запустить Milvus:
sudo docker-compose up -d
or
docker-compose up -d
Совет: Если в вашей системе установлен Docker Compose V2 вместо V1, используйте Docker Compose вместо Docker-Compose. Если это так, проверьте версию Docker Compose. Нажмите здесь, чтобы узнать больше.
При запуске команды docker-compose up -d появляется сообщение об ошибке, указывающее, что команда не найдена.
# docker-compose up -d
-bash: docker-compose: command not found
Решение:
# yum -y install epel-release
# yum -y install python-pip
# pip install --upgrade pip
# pip install docker-compose
# docker-compose -version
docker-compose version 1.29.2, build unknown
Когда я впервые использовал среду установки, загрузка зависла, и даже после многократного повторения команды она зависла в том же месте. В конце концов решение было найдено и перезапуск решил 99% проблем.
raise DockerException( docker.errors.DockerException: Error while fetching server API version: (‘Connection aborted.’, FileNotFoundError(2, ‘No such file or directory’))
service docker restart
Создание займет много времени, наберитесь терпения.
Creating milvus-etcd ... done
Creating milvus-minio ... done
Creating milvus-standalone ... done
Теперь проверьте, запущен ли контейнер. (Я встал на заднем плане)
sudo docker-compose ps
or
docker-compose ps
После запуска автономного сервиса Milvus будут работать три докер-контейнера, включая автономный сервис Milvus и две его зависимости.
Name Command State Ports
--------------------------------------------------------------------------------------------------------------------
milvus-etcd etcd -advertise-client-url ... Up 2379/tcp, 2380/tcp
milvus-minio /usr/bin/docker-entrypoint ... Up (healthy) 9000/tcp
milvus-standalone /tini -- milvus run standalone Up 0.0.0.0:19530->19530/tcp, 0.0.0.0:9091->9091/tcp
Проверьте, какой локальный порт прослушивает сервер Milvus. Замените имя контейнера своим собственным именем.
docker port milvus-standalone 19530/tcp
Вы можете подключиться к кластеру Milvus через локальный IP-адрес и номер порта, возвращаемые этой командой.
Чтобы остановить автономный Milvus, запустите:
sudo docker-compose down
Для удаления данных после остановки Милвуса используйте команду:
sudo rm -rf volumes
pymilvus>=2.1.0
hnswlib>=0.5.2
pybind11
milvus>=2.1.0
wget https://raw.githubusercontent.com/milvus-io/pymilvus/v2.2.8/examples/hello_milvus.py
or
wget https://raw.githubusercontent.com/milvus-io/pymilvus/v2.2.x/examples/hello_milvus.py
бегать hello_milvus.py
python hello_milvus.py
=== start connecting to Milvus ===
Does collection hello_milvus exist in Milvus: False
=== Create collection `hello_milvus` ===
=== Start inserting entities ===
Number of entities in Milvus: 3000
=== Start Creating index IVF_FLAT ===
=== Start loading ===
=== Start searching based on vector similarity ===
hit: id: 2998, distance: 0.0, entity: {'random': 0.9728033590489911}, random field: 0.9728033590489911
hit: id: 1262, distance: 0.08883658051490784, entity: {'random': 0.2978858685751561}, random field: 0.2978858685751561
hit: id: 1265, distance: 0.09590047597885132, entity: {'random': 0.3042039939240304}, random field: 0.3042039939240304
hit: id: 2999, distance: 0.0, entity: {'random': 0.02316334456872482}, random field: 0.02316334456872482
hit: id: 1580, distance: 0.05628091096878052, entity: {'random': 0.3855988746044062}, random field: 0.3855988746044062
hit: id: 2377, distance: 0.08096685260534286, entity: {'random': 0.8745922204004368}, random field: 0.8745922204004368
search latency = 0.1278s
=== Start querying with `random > 0.5` ===
query result:
-{'random': 0.6378742006852851, 'embeddings': [0.20963514, 0.39746657, 0.12019053, 0.6947492, 0.9535575, 0.5454552, 0.82360446, 0.21096309], 'pk': '0'}
search latency = 0.0587s
query pagination(limit=4):
[{'random': 0.6378742006852851, 'pk': '0'}, {'random': 0.5763523024650556, 'pk': '100'}, {'random': 0.9425935891639464, 'pk': '1000'}, {'random': 0.7893211256191387, 'pk': '1001'}]
query pagination(offset=1, limit=3):
[{'random': 0.5763523024650556, 'pk': '100'}, {'random': 0.9425935891639464, 'pk': '1000'}, {'random': 0.7893211256191387, 'pk': '1001'}]
=== Start hybrid searching with `random > 0.5` ===
hit: id: 2998, distance: 0.0, entity: {'random': 0.9728033590489911}, random field: 0.9728033590489911
hit: id: 747, distance: 0.14606499671936035, entity: {'random': 0.5648774800635661}, random field: 0.5648774800635661
hit: id: 2527, distance: 0.1530652642250061, entity: {'random': 0.8928974315571507}, random field: 0.8928974315571507
hit: id: 2377, distance: 0.08096685260534286, entity: {'random': 0.8745922204004368}, random field: 0.8745922204004368
hit: id: 2034, distance: 0.20354536175727844, entity: {'random': 0.5526117606328499}, random field: 0.5526117606328499
hit: id: 958, distance: 0.21908017992973328, entity: {'random': 0.6647383716417955}, random field: 0.6647383716417955
search latency = 0.1308s
=== Start deleting with expr `pk in ["0" , "1"]` ===
query before delete by expr=`pk in ["0" , "1"]` -> result:
-{'random': 0.6378742006852851, 'embeddings': [0.20963514, 0.39746657, 0.12019053, 0.6947492, 0.9535575, 0.5454552, 0.82360446, 0.21096309], 'pk': '0'}
-{'random': 0.43925103574669633, 'embeddings': [0.52323616, 0.8035404, 0.77824664, 0.80369574, 0.4914803, 0.8265614, 0.6145269, 0.80234545], 'pk': '1'}
query after delete by expr=`pk in ["0" , "1"]` -> result: []
=== Drop collection `hello_milvus` ===
Для объяснения этого кода обратитесь к сообщению блога 3, где есть простые изменения для лучшего понимания.
from pymilvus import (
connections,
utility,
FieldSchema,
CollectionSchema,
DataType,
Collection,
)
Теперь нам нужен инструмент (для поиска, организации и управления этими шарами)
from pymilvus import
:нам нужно использоватьприезжать Один называется “pymilvus” панель инструментов (библиотека кода).
connections, utility,
:здесьмы хотимиспользоватьв ящике для инструментовиздва инструмента,Один называется «связи».,
Помогает подключиться к сумке (другая база данных называется); «Утилита», имеющая ряд полезных функций по эксплуатации и управлению мячом.
FieldSchema, CollectionSchema,
: Эти двое похожи на шаблоны для изготовления сумок для мячей,
Расскажите, как придать форму и размер различным волшебным шарам.
DataType,
: этот инструмент сообщает захватывающему устройству, как идентифицировать различные типы шариков и как отделять круглые и квадратные шарики.Collection,
:наконец,Мы используем “Collection” Этот инструмент создает специальную сумку, в которой можно удерживать мяч.Он поможет вам соединять, находить и упорядочивать различные типы шаров в мешочке с волшебными шарами.
connections.connect("default", host="localhost", port="19530")
Эта строка кода сообщает компьютеру, как подключиться к сумке с мячами, где находится сумка и как ее открыть.
default
:Давайте дадим этому соединению имя,называется «по умолчанию», чтобы, когда нам понадобится подключиться в будущем, мы знали, что нужно использовать это имя для поиска сумки.host="localhost"
:здесь Скажи грабберу, где сумка.。"localhost"скажи компьютеру,Эта сумка находится на текущем компьютере, а не на другом компьютере.port="19530"
:здесь Расскажите захватчику, как открыть сумку.。“19530”как пароль или ключ,У вас должен быть правильный «номер порта», чтобы войти в сумку и прикоснуться к волшебному шару прибытия.`
fields = [
FieldSchema(, dtype=DataType.INT64, is_primary=True, auto_id=False),
FieldSchema(, dtype=DataType.DOUBLE),
FieldSchema(, dtype=DataType.FLOAT_VECTOR, dim=8)
]
schema = CollectionSchema(fields, "hello_milvus is the simplest demo to introduce the APIs")
hello_milvus = Collection("hello_milvus", schema)
Этот код в основном выполняет следующие три вещи:
fields = [...]
:здесьнасопределение Понятномагиямячиз Каковы атрибуты,Всего атрибутов три:
FieldSchema(, dtype=DataType.INT64, is_primary=True, auto_id=False)
:
определяет файл с именем “pk” Атрибут, тип данных целочисленный (INT64), этот атрибут является основным, похож на число, используемый для различения каждого магического шара. is_primary=Истина Указывает, что этот атрибут является основным атрибутом, auto_id=False. Указывает, что номер не будет генерироваться автоматически.
FieldSchema(, dtype=DataType.DOUBLE)
:
определяет файл с именем “random” атрибут, тип данных — число двойной точности с плавающей запятой (DOUBLE), этот атрибут описывает некоторые характеристики волшебного шара, такие как цвет, вес и т. д.
FieldSchema(, dtype=DataType.FLOAT_VECTOR, dim=8)
:
определяет файл с именем “embeddings” Атрибут, тип данных — вектор с плавающей запятой (FLOAT_VECTOR), который может содержать 8 данных с плавающей запятой. Этот атрибут может описывать многомерные характеристики магического шара, такие как форма, текстура и т. д.
schema = CollectionSchema(fields, "hello_milvus is the simplest demo to introduce the APIs")
:
На основе только что определенных атрибутов (полей) волшебного шара мы создаем шаблон для мешочка с волшебным шаром.
Заодно добавляем к этому шаблону описание: «hello_milvus is the simplest demo to introduce the APIs”。
hello_milvus = Collection("hello_milvus", schema)
:
Наконец, на основе шаблона (схемы) мешка с волшебным шаром мы создали файл с именем “hello_milvus” мешочек с волшебным шаром. Теперь в этой сумке можно хранить волшебные шары с заданными нами свойствами.
Подводя итог, этот код определяет свойства волшебного шара, создает шаблон, а затем фактически создает мешок с волшебными шарами. Теперь мы можем начать складывать волшебные шары в этот мешочек, извлекать их и распоряжаться ими в соответствии с их свойствами.
import random
entities = [
[i for i in range(3000)], # field pk
[float(random.randrange(-20, -10)) for _ in range(3000)], # field random
[[random.random() for _ in range(8)] for _ in range(3000)], # field embeddings
]
insert_result = hello_milvus.insert(entities)
# After final entity is inserted, it is best to call flush to have no growing segments left in memory
hello_milvus.flush()
Этот код в основном выполняет следующие три вещи:
hello_milvus
Мешок с волшебным шаром вставляется в эти объекты, и данные сбрасываются в память.import random
:эта строка кодаимпортировать ПонятноPythonиз random Модуль генерации случайных чисел.
entities = [...]
:здесьнассоздавать Понятноимядля entities переменная, которая представляет собой переменную, содержащую 3000 Список объектов магического шара. Каждая сущность имеет три значения атрибута:
[i for i in range(3000)]
:Создайте файл,содержащий 3000 список целых чисел как сущностей “pk” значение атрибута.здесь,целое число от 0 приезжать 2999。[float(random.randrange(-20, -10)) for _ in range(3000)]
:
Создайте файл, содержащий 3000 список случайных чисел с плавающей запятой, которые будут использоваться в качестве объектов “random” значение атрибута. Эти числа с плавающей запятой находятся между -20 и -10 между.
[[random.random() for _ in range(8)] for _ in range(3000)]
:
Создайте файл, содержащий 3000 список векторов с плавающей запятой как объектов “embeddings” значение атрибута. Каждый вектор содержит 8 случайное число с плавающей запятой в диапазоне от 0 приезжать 1 между.
insert_result = hello_milvus.insert(entities)
:
Эта строка кода вставляет сущность «Магический шар создательблагодизма» в приезжатьнашего предыдущего создателя. hello_milvus Волшебный шар в мешочке. вставлять() Функция возвращает объект результата вставки.
hello_milvus.flush()
:эта строка кодавызов flush() функция, будет hello_milvus сумка с волшебным данные шаром освежить память приезда. Преимущество этого заключается в том, что данные вставленного объекта сохраняются в памяти, чтобы мы могли выполнять последующие запросы, поиск и другие операции.
Подводя итог, этот код вставляет 3000 объектов магического шара со случайными значениями атрибутов в наш мешок с магическими шарами и сбрасывает данные в память. Таким образом, у нас есть некоторые данные, позволяющие убедиться, что функциональность мешка с волшебным шаром, которую мы создали ранее, работает правильно.
index = {
"index_type": "IVF_FLAT",
"metric_type": "L2",
"params": {"nlist": 128},
}
hello_milvus.create_index("embeddings", index)
Этот код в основном выполняет следующие две вещи:
embeddings
Индекс создания недвижимости. index = {...}
:насопределяет файл с именем index Переменная словаря, содержащая соответствующие параметры индекса.
"index_type":
«IVF_FLAT»: установите тип индекса для “IVF_FLAT”。
Это тип индекса, основанный на инвертированном файле (IVF), который использует плоское сканирование (FLAT) для достижения точного расчета расстояния. Этот тип индекса подходит для наборов данных среднего размера.
"metric_type": "L2"
:Установить метод измерения расстояниядля Евклидово расстояние(L2расстояние)。Это обычно используемыйиз Измерение сходства векторовизметод。
"params": {"nlist": 128}
:Установить индексизпараметр。здесьнаснастраиватьпараметр “nlist” для 128,
Он представляет собой инвертированный файл, созданный в 128 инвертированный список списки). больше nlist Значения помогают улучшить скорость поиска, но увеличивают показатель потребления памяти.
hello_milvus.create_index("embeddings", index)
:Согласно настройкамизиндекспараметр,
Мы звоним create_index() Функция для hello_milvus сумка с волшебным шаром “embeddings” Индекс создания После индексации недвижимости.создавать мы можем быстро запросить объекты магического шара, расстояние которых соответствует требованиям.
Подводя итог, этот код hello_milvus
сумка с волшебным шаром “embeddings” Атрибут создает индекс, с помощью которого мы можем быстрее и точнее находить объекты магического шара, расположенные близко друг к другу.
hello_milvus.load()
vectors_to_search = entities[-1][-2:]
search_params = {
"metric_type": "L2",
"params": {"nprobe": 10},
}
result = hello_milvus.search(vectors_to_search, "embeddings", search_params, limit=3, output_fields=["random"])
Этот код в основном выполняет следующие пять вещей:
hello_milvus.load()
:вызов load() функция, будет hello_milvus Мешок данных с волшебным шаром загружается в память приезжающего.
Прежде чем продолжить, нам необходимо убедиться, что данные из сумки загружены в память прибытия.
vectors_to_search = entities[-1][-2:]
:раньшесоздаватьизсущность entities в списке,
Выберите последний объект из двух последних векторов, так как мы хотим запросить вектор из.
search_params = {...}
:здесьнасопределяет файл с именем search_params из словарной переменной, используемой для установки параметров поиска.
"metric_type": "L2"
:Установить метод измерения расстояниядля Евклидово расстояние(L2расстояние)。
"params": {"nprobe": 10}
:настраиватьпоискпараметр “nprobe” для 10,
Представляет поиск из инвертированного списка. 10 Выполните точные расчеты расстояний до ближайших кандидатов.
больше nprobe Ценность помогает повысить точность поиска, но снижает скорость поиска.
result = hello_milvus.search(...)
:По вектору запроса Vectors_to_search, индексный атрибут “embeddings” параметры ипоиска search_params,
вызов search() Функция для осуществления поиска. В то же время установите limit=3 Чтобы ограничить количество результатов поиска и вернуть первые три ближайших объекта магического шара.
output_fields=["random"]
Указывает, что выходные результаты включают “random” свойство.
result
В переменной хранится результат поиска,
Этот результат содержит три верхних объекта, наиболее близких к вектору запроса (отсортированные по евклидову расстоянию), и их “random” значение атрибута.
Подводя итог, этот код Мы предлагаем hello_milvus
Метод поиска в мешке магических шаров объектов, похожих на вектор запроса. Установив соответствующие параметры поиска, мы можем найти баланс между точностью и скоростью в соответствии с реальными потребностями. Результаты поиска возвращают определенное количество объектов, наиболее близких к вектору запроса и связанным с ними атрибутам.
result = hello_milvus.query(expr="random > -14", output_fields=["random", "embeddings"])
Этот код в основном выполняет следующие две вещи:
query()
Функция выполняет условный запрос;esult = hello_milvus.query(...)
:вызов query() Функция выполняет условный запрос.
Мы устанавливаем выражение запроса в этой функции expr=“random > -14", что указывает на запрос hello_milvus Волшебный шар в мешочке “random” Атрибут больше, чем -14 сущность.
output_fields=["random", "embeddings"]
:настраивать Выходные результаты включают в себя “random” и “embeddings” Два свойства. Это означает, что результат запроса вернет сущности, удовлетворяющие условию из и его двум значениям. атрибута.
result
В переменной хранится результат запроса, который содержит результаты, удовлетворяющие условию («случайный» Атрибут больше, чем -14) субъекты и их “random” и “embeddings” значение атрибута.
Подводя итог, этот код использует query()
функция, в hello_milvus
Мешок с волшебным шаром заполняется согласно заданным условиям («случайно» Атрибут больше, чем -14) Выполните запрос и верните объекты, соответствующие условиям, и связанные с ними атрибуты. Задавая разные выражения запроса, мы можем гибко запрашивать данные сущности в разных условиях.
result = hello_milvus.search(vectors_to_search, "embeddings", search_params, limit=3, expr="random > -12", output_fields=["random"])
Этот код в основном выполняет следующие две вещи:
search()
поиск условия выполнения функции;result = hello_milvus.search(...)
:По вектору запроса Vectors_to_search, индексный атрибут “embeddings” параметры ипоиска search_params,вызов search() Функция для осуществления поиска. Дополнительно установите limit=3 Чтобы ограничить количество результатов поиска и вернуть первые три объекта магического шара, ближайшие к вектору запроса.
expr="random > -12"
:Добавьте новое условное выражение,означает толькопоиск Выполните условия(“random” Атрибут больше, чем -12) сущность. Таким образом, мы можем одновременно удовлетворить другие условия атрибутов в векторе сходства поиска.
output_fields=["random"]
:настраивать Вывод включает только “random” свойство. Это означает, что результат поиска вернет сущности, удовлетворяющие условию из и их свойства. “random” значение атрибута.
result
В переменной хранится результат поиска,
Этот результат содержит три наиболее близких к вектору запроса, которые удовлетворяют условию («случайный» Атрибут больше, чем -12) субъекты и их “random” значение атрибута.
Подводя итог, этот код использует search()
функция, в hello_milvus
Мешок с волшебным шаром заполняется согласно заданным условиям («случайно» Атрибут больше, чем -12) Поиск и возврат объектов, соответствующих условиям и связанным с ними атрибутам. Добавляя выражения запроса, мы можем удовлетворить другие условия атрибутов при поиске похожих векторов. Таким образом, в практических приложениях можно удовлетворить более сложные требования к запросам.
expr = f"pk in [{ids[0]}, {ids[1]}]"
hello_milvus.delete(expr)
Этот код в основном выполняет следующие операции:
delete()
Функция удаляет совпадающие условия сущности.expr = f"pk in [{ids[0]}, {ids[1]}]"
:здесь,насиспользовать Python из Синтаксис f-строки (форматированная строка), создает имя для expr изString переменная. Эта строка представляет собой условное выражение удаления: «Первичный ключ (pk) в заданном из двух ids "в".ids Это список, содержащий первичный ключ объекта, который мы хотим удалить. {идентификаторы[0]} и {ids[1]} Соответственно ids № из в списке 0 индивидуальный 1 элементы.
hello_milvus.delete(expr)
:вызов delete() функция, основанная на условном выражении expr Удалить критерий соответствия. В этом примере мы удаляем сущность с заданным первичным ключом. ids[0] и ids[1] сущность.
Подводя итог, этот код удаляет условное выражение на основе expr
,использовать delete()
функция от hello_milvus
Сущности, соответствующие критериям, удаляются из мешка с волшебным шаром. Устанавливая различные условные выражения, мы можем гибко удалять сущности в соответствии с фактическими потребностями.
utility.drop_collection("hello_milvus")
Здесь мы вызываем функцию drop_collection(), чтобы удалить коллекцию с указанным именем «hello_milvus». При удалении коллекции все сущности, структуры индексов и метаданные, связанные с коллекцией, удаляются.
https://github.com/zilliztech/attu/blob/main/doc/zh-CN/attu_install-docker.md
docker run -p 8000:3000 -e MILVUS_URL={your machine IP}:19530 zilliz/attu:v2.2.6
Установите Attu с помощью Docker Compose для управления сервисом Milvus v2.2.x.
Attu — эффективный инструмент управления с открытым исходным кодом от Milvus. В этом разделе описывается, как установить Attu с помощью Docker Compose, эффективного инструмента управления с открытым исходным кодом.
Milvus Version | Recommended Attu Image Version |
---|---|
v2.0.x | v2.0.5 |
v2.1.x | v2.1.5 |
v2.2.x | v2.2.6 |
docker run -p 8000:3000 -e MILVUS_URL={your machine IP}:19530 zilliz/attu:v2.2.6
После запуска докера посетите «http://{ваш machine IP}:8000”,Нажмите“Connect”ВходитьAttuСлужить。нас Также поддерживаетTLSсоединять,Имя пользователя и пароль.
* Подключитесь к сервису Милвус
Подключитесь к сервису Milvus, используя логин и пароль.
скачать `"milvus-standalone-docker-compose. И сохраните его как "docker-compose". Вручную или с помощью следующей команды.
wget https://github.com/milvus-io/milvus/releases/download/v2.2.11/milvus-standalone-docker-compose.yml -O docker-compose.yml
Отредактируйте «docker-compose». Используйте свой любимый текстовый редактор, чтобы добавить файл Yml, добавленный в служебный блок:
attu:
container_name: attu
image: zilliz/attu:v2.2.6
environment:
MILVUS_URL: milvus-standalone:19530
ports:
- "8000:3000"
depends_on:
- "standalone"
В том же каталоге, что и файл «docker-compose». запустить Следующая команда запускает MilvusиAttu:
$ sudo docker-compose up -d
Если Docker установлен в вашей системе Compose V2 вместо V1 используйте ' Docker Compose 'скорее, чем' Docker - Compose '. Проверьте "$ docker compose version”Так ли это?。читатьздесьПонятно Узнать больше。
Creating milvus-etcd ... done
Creating milvus-minio ... done
Creating milvus-standalone ... done
Creating attu ... done
Теперь проверьте, запущен ли контейнер и запустите.
$ sudo docker-compose ps
После запуска автономного сервиса Milvus будут работать три докер-контейнера, включая автономный сервис Milvus и две его зависимости.
Name Command State Ports
--------------------------------------------------------------------------------------------------------------------
milvus-etcd etcd -advertise-client-url ... Up 2379/tcp, 2380/tcp
milvus-minio /usr/bin/docker-entrypoint ... Up (healthy) 9000/tcp
milvus-standalone /tini -- milvus run standalone Up 0.0.0.0:19530->19530/tcp, 0.0.0.0:9091->9091/tcp
attu /usr/bin/docker-entrypoint ... Up 0.0.0.0:8000->3000/tcp
В браузере посетите «http://{ваш machine IP}:8000”,Нажмите“Connect”ВходитьAttuСлужить。нас Также поддерживаетTLSсоединять,Имя пользователя и пароль.