-
Faiss to Milvus:將未壓縮的 Faiss 文件導入 Milvus -
HDF5 to Milvus:將 HDF5 格式的文件導入 Milvus -
Milvus to Milvus:支持 Milvus 之間的數據遷移 -
Milvus to HDF5:將 Milvus 數據批量備份爲 HDF5 格式的本地文件
功能介紹
📖使用示例
$ wget https://raw.githubusercontent.com/milvus-io/milvus-tools/main/yamls/F2M.yaml
F2M:
0.10.5 :
data_path: '/home/data/faiss.index'
dest_host: '127.0.0.1'
dest_port: 19530
mode: 'append'
dest_collection_name: 'test'
dest_partition_name: ''
collection_parameter:
dimension: 256
index_file_size: 1024
metric_type: 'L2'
milvusdm --yaml F2M.yaml
▶️具體實現
ids, vectors = faiss_data.read_faiss_data()
insert_milvus.insert_data(vectors, self.dest_collection_name, self.collection_parameter, self.mode, ids, self.dest_partition_name)
$ wget https://raw.githubusercontent.com/milvus-io/milvus-tools/main/yamls/H2M.yaml
data_path 參數可指定多個文件路徑, data_dir 參數指定文件目錄。兩個參數只能配置一個。
H2M:
0.10.5 :
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'
milvusdm --yaml H2M.yaml
▶️具體實現
embeddings, ids = self.file.read_hdf5_data()
ids = insert_milvus.insert_data(embeddings, self.c_name, self.c_param, self.mode, ids,self.p_name)
$ wget https://raw.githubusercontent.com/milvus-io/milvus-tools/main/yamls/M2M.yaml
如果源 Milvus 沒有使用 MySQL 進行元數據管理, mysql_parameter 參數則爲空。
M2M:
milvus_version: 0.10.5
source_milvus_path: '/home/user/milvus'
mysql_parameter:
host: '127.0.0.1'
user: 'root'
port: 3306
password: '123456'
database: 'milvus'
:
:
- 'partition_1'
- 'partition_2'
'127.0.0.1' :
dest_port: 19530
mode: 'skip' # 'skip/append/overwrite'
milvusdm --yaml M2M.yaml
▶️具體實現
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)
milvus_insert.insert_data(r_vectors, collection_name, collection_parameter, self.mode, r_ids, partition_tag)
$ wget https://raw.githubusercontent.com/milvus-io/milvus-tools/main/yamls/M2H.yaml
M2H:
milvus_version: 0.10.5
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'
milvusdm --yaml M2H.yaml
▶️具體實現
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)
data_save.save_yaml(collection_name, partition_tag, collection_parameter, version, save_hdf5_name)
Milvusdm 代碼結構
-
pymilvusdm -
Core milvus_client.py,Milvus 客戶端相關的操作
read_data.py,讀取本地 HDF5 格式的數據文件(如果有讀取其他文件格式的需求,可在此處添加代碼)
read_faiss_data.py,讀取 Faiss 的數據文件
read_milvus_data.py,讀取 Milvus 的數據文件
read_milvus_meta.py,讀取 Milvus 的 meta 信息
data_to_milvus.py,根據 yaml 文件配置參數,建立集合或分區,並將向量和 ids 導入 Milvus
save_data.py,將讀取到的數據保存爲 HDF5 格式的文件
write_logs.py,在執行操作時寫 debug/info/error 日誌
-
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,執行代碼時的相關配置參數
-
setup.py,將 pymilvusdm 打包並上傳到 pypi
-
支持將 Faiss 的 binary 數據文件導入 Milvus -
Milvus to Milvus 時支持指定黑白名單 -
Milvus to Milvus 時支持將多個集合或分區的數據合併導入至一個集合中 -
支持 Milvus 數據備份和數據恢復
歡迎加入 Milvus 社區
本文分享自微信公衆號 - ZILLIZ(Zilliztech)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。