? ? ? ?Milvus是目前比較流行的開源向量數據庫,其官網地址
Milvus 是什么? | Milvus 文檔
1.Milvus簡介
Milvus 是一種高性能、高擴展性的向量數據庫。Milvus 提供強大的數據建模功能,能夠將非結構化或多模式數據組織成結構化的 Collections。它支持多種數據類型,適用于不同的屬性模型,包括常見的數字和字符類型、各種向量類型、數組、集合和 JSON。
Milvus 提供三種部署模式
- Milvus Lite 是一個 Python 庫,可以輕松集成到您的應用程序中。作為 Milvus 的輕量級版本,它非常適合在 Jupyter Notebooks 中進行快速原型開發,或在資源有限的邊緣設備上運行。
- Milvus Standalone 是單機服務器部署,所有組件都捆綁在一個 Docker 鏡像中,方便部署。
- Milvus Distributed 可部署在 Kubernetes 集群上,采用云原生架構,專為十億規模甚至更大的場景而設計。該架構可確保關鍵組件的冗余。
Milvus 的云原生和高度解耦的系統架構
2.Milvus實踐
推薦一個在線python運行環境(再也不用本地windows安裝linux虛擬機了)
玻爾 | 全球科學家的 AI for Science 空間站
下面使用Milvus Lite本地實踐一下,Milvus Lite,它是pymilvus
?中包含的一個 python 庫,可以嵌入到客戶端應用程序中。
安裝Milvus
pip install -U pymilvus
設置向量數據庫
from pymilvus import MilvusClient
client = MilvusClient("milvus_demo.db")
創建Collections
if client.has_collection(collection_name="demo_collection"):client.drop_collection(collection_name="demo_collection")
client.create_collection(collection_name="demo_collection",dimension=768, # The vectors we will use in this demo has 768 dimensions
)
用向量表示文本
import randomdocs = ["Artificial intelligence was founded as an academic discipline in 1956.","Alan Turing was the first person to conduct substantial research in AI.","Born in Maida Vale, London, Turing was raised in southern England.",
]
vectors = [[random.uniform(-1, 1) for _ in range(768)] for _ in docs]
data = [{"id": i, "vector": vectors[i], "text": docs[i], "subject": "history"}for i in range(len(vectors))
]print("Data has", len(data), "entities, each with fields: ", data[0].keys())
print("Vector dim:", len(data[0]["vector"]))
插入數據
res = client.insert(collection_name="demo_collection", data=data)print(res)
向量搜索
# query_vectors = embedding_fn.encode_queries(["Who is Alan Turing?"])
# If you don't have the embedding function you can use a fake vector to finish the demo:
query_vectors = [ [ random.uniform(-1, 1) for _ in range(768) ] ]
res = client.search(collection_name="demo_collection", # target collectiondata=query_vectors, # query vectorslimit=2, # number of returned entitiesoutput_fields=["text", "subject"], # specifies fields to be returned
)
print(res)
其他一些操作可以參考官網文檔
管理數據庫 | Milvus 文檔