Milvus 是一個(gè)開源的向量數(shù)據(jù)庫(kù),專為管理和檢索大量向量數(shù)據(jù)而設(shè)計(jì),廣泛應(yīng)用于人工智能、推薦系統(tǒng)、圖像檢索、自然語(yǔ)言處理等領(lǐng)域。它支持 PB 級(jí)別的數(shù)據(jù)存儲(chǔ),提供高性能的向量檢索服務(wù)。
Milvus 的核心功能
1. 高效檢索: 支持 ANN(近似最近鄰)檢索,適用于超大規(guī)模向量檢索任務(wù)。
2. 多數(shù)據(jù)類型: 支持文本、圖像、視頻等多種嵌入向量數(shù)據(jù)。
3. 彈性擴(kuò)展: 支持水平擴(kuò)展和分布式部署。
4. 多種索引類型: 包括 IVF、HNSW、DiskANN 等。
5. 多語(yǔ)言 SDK 支持: 提供 Python、Java、Go、C++ 等多種 SDK。
6. 云原生架構(gòu): 支持 Kubernetes 部署,便于云上運(yùn)行。
Milvus 的應(yīng)用場(chǎng)景
1. 圖像和視頻檢索(內(nèi)容推薦)
2. 自然語(yǔ)言處理(語(yǔ)義檢索與推薦)
3. 推薦系統(tǒng)(個(gè)性化推薦)
4. 生物醫(yī)學(xué)數(shù)據(jù)分析(DNA 比對(duì))
5. 安全監(jiān)控(面部識(shí)別)
Milvus 快速上手教程
1. 環(huán)境準(zhǔn)備
? 操作系統(tǒng):Linux/macOS/Windows
? 安裝 Docker(推薦)或 Kubernetes(用于生產(chǎn)環(huán)境)
2. 安裝 Milvus
使用 Docker 快速啟動(dòng):
docker pull milvusdb/milvus:latest
docker run -d –name milvus-standalone -p 19530:19530 -p 8080:8080 milvusdb/milvus:latest
3. 創(chuàng)建 Milvus 客戶端
安裝 Milvus Python SDK:
pip install pymilvus
4. 連接到 Milvus
from pymilvus import connections
connections.connect(
alias=”default”,
host=”localhost”,
port=”19530″
)
5. 創(chuàng)建集合與插入數(shù)據(jù)
from pymilvus import Collection, FieldSchema, CollectionSchema, DataType
# 定義字段
fields = [
FieldSchema(name=”id”, dtype=DataType.INT64, is_primary=True, auto_id=True),
FieldSchema(name=”embedding”, dtype=DataType.FLOAT_VECTOR, dim=128)
]
# 定義集合架構(gòu)
schema = CollectionSchema(fields, “向量數(shù)據(jù)集合”)
# 創(chuàng)建集合
collection = Collection(“example_collection”, schema)
# 插入數(shù)據(jù)
import numpy as np
data = [
[i for i in range(1000)], # id
np.random.random([1000, 128]).tolist() # 隨機(jī)向量
]
collection.insert(data)
6. 創(chuàng)建索引與檢索
# 創(chuàng)建索引
index_params = {
“metric_type”: “L2”,
“index_type”: “IVF_FLAT”,
“params”: {“nlist”: 100}
}
collection.create_index(field_name=”embedding”, index_params=index_params)
# 搜索向量
search_params = {
“metric_type”: “L2”,
“params”: {“nprobe”: 10}
}
query_vector = np.random.random([1, 128]).tolist()
results = collection.search(
data=query_vector,
anns_field=”embedding”,
param=search_params,
limit=5
)
# 輸出結(jié)果
for result in results[0]:
print(f”ID: {result.id}, Distance: {result.distance}”)
Milvus 官方資源
? 官網(wǎng):Milvus 官方網(wǎng)站
? 文檔:Milvus 文檔中心
? GitHub:Milvus GitHub 倉(cāng)庫(kù)
如果需要更詳細(xì)的教程或針對(duì)特定場(chǎng)景的使用指導(dǎo),請(qǐng)告訴我!
]]>