Представляем инструмент для миграции данных Milvus
Важное замечание: инструмент Mivus Data Migration Tool был устаревшим. Для миграции данных из других баз данных в Milvus мы рекомендуем вам использовать более продвинутый инструмент Milvus-migration Tool.
В настоящее время инструмент Milvus-migration поддерживает:
- Elasticsearch в Milvus 2.x
- Faiss в Milvus 2.x
- Milvus 1.x - Milvus 2.x
- Milvus 2.3.x на Milvus 2.3.x или выше.
Мы будем поддерживать миграцию с других источников векторных данных, таких как Pinecone, Chroma и Qdrant. Следите за новостями.
Для получения дополнительной информации смотрите документацию по Milvus-migration или ее репозиторий на GitHub.
--------------------------------- Mivus Data Migration Tool был устаревшим ----------------------
Обзор
MilvusDM (Milvus Data Migration) - это инструмент с открытым исходным кодом, разработанный специально для импорта и экспорта файлов данных с помощью Milvus. MilvusDM может значительно повысить эффективность управления данными и снизить затраты на DevOps следующими способами:
Faiss в Milvus: Импорт распакованных данных из Faiss в Milvus.
HDF5 в Milvus: импорт файлов HDF5 в Milvus.
Milvus to Milvus: перенос данных из исходного Milvus в другой целевой Milvus.
Milvus to HDF5: сохранение данных в Milvus в виде файлов HDF5.
блог milvusdm 1.png
MilvusDM размещен на Github и может быть легко установлен путем запуска командной строки pip3 install pymilvusdm
. MilvusDM позволяет переносить данные в определенную коллекцию или раздел. В следующих разделах мы расскажем, как использовать каждый тип миграции данных.
Faiss в Milvus
Шаги
1.Загрузите файл F2M.yaml:
$ wget https://raw.githubusercontent.com/milvus-io/milvus-tools/main/yamls/F2
2.Установите следующие параметры:
data_path
: : Путь к данным (векторы и соответствующие им идентификаторы) в Faiss.dest_host
: : Адрес сервера Milvus.dest_port
: Порт сервера Milvus.mode
: Данные можно импортировать в Milvus, используя следующие режимы:Пропустить: игнорировать данные, если коллекция или раздел уже существуют.
Append (Добавить): Добавить данные, если коллекция или раздел уже существуют.
Перезаписать: Удалить данные перед вставкой, если коллекция или раздел уже существуют.
dest_collection_name
: Имя принимающей коллекции для импорта данных.dest_partition_name
: Имя принимающего раздела для импорта данных.collection_parameter
: Специфическая для коллекции информация, такая как размер вектора, размер индексного файла и метрика расстояния.
F2M:
milvus_version: 1.0.0
data_path: '/home/data/faiss.index'
dest_host: '127.0.0.1'
dest_port: 19530
mode: 'append' # 'skip/append/overwrite'
dest_collection_name: 'test'
dest_partition_name: ''
collection_parameter:
dimension: 256
index_file_size: 1024
metric_type: 'L2'
3.Запустите файл F2M.yaml:
$ milvusdm --yaml F2M.yaml
Код примера
1.Считать файлы Faiss для получения векторов и соответствующих им идентификаторов.
ids, vectors = faiss_data.read_faiss_data()
2.Вставить полученные данные в Milvus:
insert_milvus.insert_data(vectors, self.dest_collection_name, self.collection_parameter, self.mode, ids, self.dest_partition_name)
HDF5 в Milvus
Шаги
1.Загрузите файл H2M.yaml.
$ wget https://raw.githubusercontent.com/milvus-io/milvus-tools/main/yamls/H2M.yaml
2.Установите следующие параметры:
data_path
: Путь к файлам HDF5.data_dir
: Каталог, содержащий файлы HDF5.dest_host
: Адрес сервера Milvus.dest_port
: Порт сервера Milvus.mode
: Данные можно импортировать в Milvus, используя следующие режимы:Пропустить: игнорировать данные, если коллекция или раздел уже существуют.
Append (Добавить): Добавить данные, если коллекция или раздел уже существуют.
Перезаписать: Удалить данные перед вставкой, если коллекция или раздел уже существуют.
dest_collection_name
: Имя принимающей коллекции для импорта данных.dest_partition_name
: Имя принимающего раздела для импорта данных.collection_parameter
: Информация о конкретной коллекции, например размер вектора, размер индексного файла и метрика расстояния.
Установите либо
data_path
, либоdata_dir
. Не задавайте оба варианта. Используйтеdata_path
, чтобы указать несколько путей к файлам, илиdata_dir
, чтобы указать каталог, в котором находится файл данных.
H2M:
milvus-version: 1.0.0
data_path:
- /Users/zilliz/float_1.h5
- /Users/zilliz/float_2.h5
data_dir:
dest_host: '127.0.0.1'
dest_port: 19530
mode: 'overwrite' # 'skip/append/overwrite'
dest_collection_name: 'test_float'
dest_partition_name: 'partition_1'
collection_parameter:
dimension: 128
index_file_size: 1024
metric_type: 'L2'
3.Запустите H2M.yaml:
$ milvusdm --yaml H2M.yaml
Код примера
1.Прочитайте файлы HDF5, чтобы получить векторы и соответствующие им идентификаторы:
vectors, ids = self.file.read_hdf5_data()
2.Вставьте полученные данные в Milvus:
ids = insert_milvus.insert_data(vectors, self.c_name, self.c_param, self.mode, ids,self.p_name)
Milvus to Milvus
Шаги
1.Загрузите файл M2M.yaml.
$ wget https://raw.githubusercontent.com/milvus-io/milvus-tools/main/yamls/M2M.yaml
2.Установите следующие параметры:
source_milvus_path
: Исходный рабочий путь Milvus.mysql_parameter
: Настройки исходного Milvus MySQL. Если MySQL не используется, задайте параметр mysql_parameter равным ''.source_collection
: Имена коллекции и ее разделов в исходном Milvus.dest_host
: Адрес сервера Milvus.dest_port
: : Порт сервера Milvus.mode
: Данные можно импортировать в Milvus, используя следующие режимы:Пропустить: игнорировать данные, если коллекция или раздел уже существуют.
Append (Добавить): Добавить данные, если коллекция или раздел уже существуют.
Перезаписать: Удалить данные перед вставкой, если коллекция или раздел уже существуют.
M2M:
milvus_version: 1.0.0
source_milvus_path: '/home/user/milvus'
mysql_parameter:
host: '127.0.0.1'
user: 'root'
port: 3306
password: '123456'
database: 'milvus'
source_collection:
test:
- 'partition_1'
- 'partition_2'
dest_host: '127.0.0.1'
dest_port: 19530
mode: 'skip' # 'skip/append/overwrite'
3.Запустите файл M2M.yaml.
$ milvusdm --yaml M2M.yaml
Пример кода
1.В соответствии с указанными метаданными коллекции или раздела, прочитайте файлы в папке milvus/db на локальном диске, чтобы получить векторы и соответствующие им идентификаторы из исходного Milvus.
collection_parameter, _ = milvus_meta.get_collection_info(collection_name)
r_vectors, r_ids, r_rows = milvusdb.read_milvus_file(self.milvus_meta, collection_name, partition_tag)
2.Вставьте полученные данные в целевой Milvus.
milvus_insert.insert_data(r_vectors, collection_name, collection_parameter, self.mode, r_ids, partition_tag)
Преобразование Milvus в HDF5
Шаги
1.Загрузите файл M2H.yaml:
$ wget https://raw.githubusercontent.com/milvus-io/milvus-tools/main/yamls/M2H.yaml
2.Установите следующие параметры:
source_milvus_path
: Исходный рабочий путь Milvus.mysql_parameter
: Настройки исходного Milvus MySQL. Если MySQL не используется, задайте параметр mysql_parameter равным ''.source_collection
: Имена коллекции и ее разделов в исходном Milvus.data_dir
: Каталог для хранения сохраненных HDF5-файлов.
M2H:
milvus_version: 1.0.0
source_milvus_path: '/home/user/milvus'
mysql_parameter:
host: '127.0.0.1'
user: 'root'
port: 3306
password: '123456'
database: 'milvus'
source_collection: # specify the 'partition_1' and 'partition_2' partitions of the 'test' collection.
test:
- 'partition_1'
- 'partition_2'
data_dir: '/home/user/data'
3.Запустите M2H.yaml:
$ milvusdm --yaml M2H.yaml
Пример кода
1.В соответствии с указанными метаданными коллекции или раздела, прочитайте файлы в каталоге milvus/db на локальном диске, чтобы получить векторы и соответствующие им идентификаторы.
collection_parameter, version = milvus_meta.get_collection_info(collection_name)
r_vectors, r_ids, r_rows = milvusdb.read_milvus_file(self.milvus_meta, collection_name, partition_tag)
2.Сохраните полученные данные в виде файлов HDF5.
data_save.save_yaml(collection_name, partition_tag, collection_parameter, version, save_hdf5_name)
Структура файлов MilvusDM
Приведенная ниже блок-схема показывает, как MilvusDM выполняет различные задачи в зависимости от полученного YAML-файла:
milvusdm blog 2.png
Структура файла MilvusDM:
pymilvusdm
ядро
milvus_client.py: Выполняет клиентские операции в Milvus.
read_data.py: Читает файлы данных в формате HDF5 на вашем локальном диске. (Добавьте сюда свой код для поддержки чтения файлов данных в других форматах).
read_faiss_data.py: Читает файлы данных в Faiss.
read_milvus_data.py: Читает файлы данных в формате Milvus.
read_milvus_meta.py: Читает метаданные в Milvus.
data_to_milvus.py: Создает коллекции или разделы на основе параметров в YAML-файлах и импортирует векторы и соответствующие векторные идентификаторы в Milvus.
save_data.py: Сохраняет данные в виде файлов HDF5.
write_logs.py: Записывает журналы во время выполнения программы.
faiss_to_milvus.py: Импортирует данные из Faiss в Milvus.
hdf5_to_milvus.py: Импортирует данные в файлах HDF5 в Milvus.
milvus_to_milvus.py: Переносит данные из исходного Milvus в целевой Milvus.
milvus_to_hdf5.py: Экспортирует данные в Milvus и сохраняет их в виде файлов HDF5.
main.py: Выполняет соответствующие задачи в соответствии с полученным YAML-файлом.
setting.py: Конфигурации, связанные с запуском кода MilvusDM.
setup.py: Создает пакеты файлов pymilvusdm и загружает их в PyPI (Python Package Index).
Обзор
MilvusDM в первую очередь занимается миграцией данных в Milvus и из него, включая Faiss в Milvus, HDF5 в Milvus, Milvus в Milvus и Milvus в HDF5.
В ближайших выпусках запланированы следующие функции:
Импорт бинарных данных из Faiss в Milvus.
Блок-лист и список разрешений для миграции данных между исходным Milvus и целевым Milvus.
Слияние и импорт данных из нескольких коллекций или разделов в исходном Milvus в новую коллекцию в целевом Milvus.
Резервное копирование и восстановление данных Milvus.
Проект MilvusDM является проектом с открытым исходным кодом на Github. Любой вклад в проект приветствуется. Дайте ему звезду 🌟, и не стесняйтесь подать проблему или представить свой собственный код!
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word