最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Python的Milvus完整使用實戰(zhàn)案例

 更新時間:2026年03月25日 10:54:14   作者:工頁光軍  
本教程提供Milvus 2.4.x + Python的實戰(zhàn)案例,涵蓋向量數(shù)據(jù)庫全流程操作,通過Docker快速部署Milvus服務(wù),適合新手快速上手,對Python Milvus使用感興趣的朋友跟隨小編一起看看吧

這份教程是Milvus 2.4.x + Python的開箱即用實戰(zhàn)案例,覆蓋連接服務(wù)、創(chuàng)建集合、建索引、插入數(shù)據(jù)、向量檢索、混合檢索、數(shù)據(jù)管理全流程,適合新手快速上手。

一、環(huán)境準備

1. 啟動Milvus服務(wù)

推薦用Docker一鍵啟動(最簡單,無需復(fù)雜配置):

# 下載Milvus 2.4.x 配置文件
wget https://github.com/milvus-io/milvus/releases/download/v2.4.4/milvus-standalone-docker-compose.yml -O docker-compose.yml
# 啟動服務(wù)
docker-compose up -d

啟動后,Milvus默認地址:localhost:19530

2. 安裝Python客戶端

pip install pymilvus>=2.4.0  # 安裝官方Python SDK
pip install numpy           # 用于生成模擬向量

二、完整實戰(zhàn)代碼

核心場景:向量數(shù)據(jù)庫的基礎(chǔ)CRUD + 相似度檢索(模擬文本/圖像特征向量存儲與搜索)

# 1. 導(dǎo)入依賴包
from pymilvus import (
    connections,  # 連接Milvus
    Collection,   # 集合操作
    FieldSchema,  # 字段定義
    CollectionSchema,  # 集合結(jié)構(gòu)
    DataType,     # 數(shù)據(jù)類型
    utility       # 工具函數(shù)(檢查集合、刪除集合等)
)
import numpy as np
# ====================== 2. 連接Milvus服務(wù) ======================
# 默認連接本地Milvus,參數(shù):host(地址)、port(端口)、alias(連接別名)
connections.connect(
    alias="default", 
    host="localhost", 
    port="19530"
)
print("? 成功連接Milvus服務(wù)")
# ====================== 3. 定義集合結(jié)構(gòu)(Schema) ======================
# 集合 = 表,字段 = 列,必須包含:主鍵字段 + 向量字段
# 字段1:主鍵ID(自增整數(shù),唯一標識)
primary_field = FieldSchema(
    name="id", 
    dtype=DataType.INT64, 
    is_primary=True,  # 主鍵
    auto_id=True      # 自動生成ID,無需手動插入
)
# 字段2:向量字段(核心!存儲特征向量,512維)
vector_field = FieldSchema(
    name="embedding", 
    dtype=DataType.FLOAT_VECTOR, 
    dim=512  # 向量維度:必須和你的數(shù)據(jù)一致
)
# 字段3:標量字段(輔助過濾,比如分類標簽)
tag_field = FieldSchema(
    name="tag", 
    dtype=DataType.INT64
)
# 定義集合整體結(jié)構(gòu)
schema = CollectionSchema(
    fields=[primary_field, vector_field, tag_field],
    description="Milvus基礎(chǔ)案例:特征向量存儲與檢索"
)
# ====================== 4. 創(chuàng)建集合 ======================
collection_name = "milvus_demo"
# 如果集合已存在,先刪除(避免重復(fù)創(chuàng)建報錯)
if utility.has_collection(collection_name):
    utility.drop_collection(collection_name)
# 創(chuàng)建集合
collection = Collection(
    name=collection_name,
    schema=schema,
    using="default"  # 使用默認連接
)
print(f"? 成功創(chuàng)建集合:{collection_name}")
# ====================== 5. 創(chuàng)建向量索引(必須?。?======================
# Milvus必須建索引才能檢索,索引決定檢索速度和精度
# 入門推薦:IVF_FLAT(平衡速度和精度)
index_params = {
    "index_type": "IVF_FLAT",      # 索引類型
    "metric_type": "L2",           # 相似度計算方式:L2(歐氏距離)、IP(內(nèi)積)、COSINE(余弦)
    "params": {"nlist": 128}       # 索引參數(shù)(聚類數(shù)量)
}
# 為向量字段創(chuàng)建索引
collection.create_index(
    field_name="embedding",
    index_params=index_params
)
print("? 成功創(chuàng)建向量索引")
# ====================== 6. 加載集合到內(nèi)存(必須?。?======================
# 集合創(chuàng)建后默認在磁盤,必須加載到內(nèi)存才能讀寫
collection.load()
print("? 集合已加載到內(nèi)存")
# ====================== 7. 插入模擬數(shù)據(jù) ======================
# 生成1000條512維隨機向量(模擬文本/圖像特征)
num_entities = 1000
vectors = np.random.rand(num_entities, 512).tolist()  # 轉(zhuǎn)列表格式
# 生成標量標簽(0-9隨機分類)
tags = np.random.randint(0, 10, num_entities).tolist()
# 插入數(shù)據(jù):字段順序和Schema定義一致
insert_result = collection.insert(
    data=[vectors, tags]  # 自動填充主鍵(auto_id=True)
)
print(f"? 成功插入 {num_entities} 條數(shù)據(jù),主鍵ID:{insert_result.ids[:5]}...")
# 刷新數(shù)據(jù)(確保插入后立即可檢索)
collection.flush()
# ====================== 8. 核心功能:向量相似度檢索 ======================
# 生成1條查詢向量(和插入數(shù)據(jù)同維度)
search_vector = np.random.rand(1, 512).tolist()
# 檢索參數(shù)
search_params = {
    "metric_type": "L2",
    "params": {"nprobe": 10}  # 檢索精度:值越大越準,速度越慢
}
# 執(zhí)行檢索
results = collection.search(
    data=search_vector,        # 查詢向量
    anns_field="embedding",    # 要檢索的向量字段
    param=search_params,       # 檢索參數(shù)
    limit=5,                   # 返回Top5最相似的結(jié)果
    output_fields=["id", "tag"]# 同時返回的標量字段
)
# 打印檢索結(jié)果
print("\n?? 向量相似度檢索結(jié)果(Top5):")
for hits in results:
    for hit in hits:
        print(f"ID: {hit.id}, 相似度距離: {hit.distance:.4f}, 標簽: {hit.entity.get('tag')}")
# ====================== 9. 進階:標量過濾 + 向量檢索 ======================
# 場景:只檢索【標簽=3】的向量中,最相似的Top3
filtered_results = collection.search(
    data=search_vector,
    anns_field="embedding",
    param=search_params,
    limit=3,
    expr="tag == 3",  # 標量過濾條件(SQL風格)
    output_fields=["id", "tag"]
)
print("\n?? 過濾后檢索結(jié)果(tag=3,Top3):")
for hits in filtered_results:
    for hit in hits:
        print(f"ID: {hit.id}, 相似度距離: {hit.distance:.4f}, 標簽: {hit.entity.get('tag')}")
# ====================== 10. 數(shù)據(jù)管理 ======================
# 1. 刪除數(shù)據(jù)(根據(jù)主鍵ID)
if len(insert_result.ids) > 0:
    del_id = insert_result.ids[0]
    collection.delete(expr=f"id == {del_id}")
    print(f"\n? 成功刪除ID={del_id}的數(shù)據(jù)")
# 2. 釋放集合(從內(nèi)存卸載)
collection.release()
print("? 集合已從內(nèi)存釋放")
# 3. 刪除集合(清空所有數(shù)據(jù))
# utility.drop_collection(collection_name)
# print("? 已刪除集合")
# ====================== 11. 斷開連接 ======================
connections.disconnect("default")
print("\n? 已斷開Milvus連接")

三、關(guān)鍵知識點解釋

1. 核心概念

概念解釋
集合(Collection)相當于關(guān)系型數(shù)據(jù)庫的,用于存儲向量數(shù)據(jù)
向量字段存儲特征向量(文本/圖像/音頻的數(shù)字化特征)
索引加速向量檢索的核心,無索引無法檢索
相似度計算L2(歐氏距離,越小越相似)、IP(內(nèi)積,越大越相似)、COSINE(余弦相似度)

2. 必做操作

  1. 連接Milvus后才能操作
  2. 向量字段必須建索引
  3. 集合必須加載到內(nèi)存才能讀寫
  4. 檢索前建議flush()刷新數(shù)據(jù)

3. 檢索參數(shù)說明

  • nprobe:檢索精度,10-100 之間調(diào)整,越大越準、速度越慢
  • limit:返回最相似的TopN結(jié)果
  • expr:標量過濾,支持==、>、<、and、or等條件

四、常見問題

  1. 連接失敗:檢查Milvus服務(wù)是否啟動(docker ps 查看容器)
  2. 維度不匹配:插入向量的dim必須和Schema定義一致
  3. 檢索報錯:未建索引/未加載集合到內(nèi)存
  4. 數(shù)據(jù)不顯示:插入后未執(zhí)行flush()刷新

總結(jié)

  1. 本案例覆蓋Milvus Python客戶端全流程操作,可直接復(fù)制運行
  2. 核心能力是向量相似度檢索,適用于AI大模型、圖像搜索、推薦系統(tǒng)等場景
  3. 入門優(yōu)先用IVF_FLAT索引+L2相似度,后續(xù)可根據(jù)業(yè)務(wù)優(yōu)化索引類型

到此這篇關(guān)于基于Python的Milvus完整使用案例的文章就介紹到這了,更多相關(guān)Python Milvus使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Python實現(xiàn)Office文檔(Word/Excel/PowerPoint)批量轉(zhuǎn)換為PDF

    使用Python實現(xiàn)Office文檔(Word/Excel/PowerPoint)批量轉(zhuǎn)換為PDF

    在處理不同格式的Office文檔(如Word、Excel和PowerPoint)時,將其轉(zhuǎn)換為PDF格式是常見的需求,本文就跟隨小編來看看如何使用Python將Word/Excel/PowerPoint批量轉(zhuǎn)換為PDF吧
    2024-10-10
  • Pandas保存csv數(shù)據(jù)的三種方式詳解

    Pandas保存csv數(shù)據(jù)的三種方式詳解

    CSV文件以純文本形式存儲表格數(shù)據(jù)(數(shù)字和文本),是一種通用的、相對簡單的文件格式,被用戶、商業(yè)和科學(xué)廣泛應(yīng)用。本文介紹了三種Pandas保存CSV文件數(shù)據(jù)的方法,需要的可以參考一下
    2022-03-03
  • 詳解基于python-django框架的支付寶支付案例

    詳解基于python-django框架的支付寶支付案例

    這篇文章主要介紹了基于python-django框架的支付寶支付案例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2019-09-09
  • python實現(xiàn)逆濾波與維納濾波示例

    python實現(xiàn)逆濾波與維納濾波示例

    今天小編就為大家分享一篇python實現(xiàn)逆濾波與維納濾波示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • django admin 自定義替換change頁面模板的方法

    django admin 自定義替換change頁面模板的方法

    今天小編就為大家分享一篇django admin 自定義替換change頁面模板的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 基于Python?wxPython開發(fā)文件管理工具

    基于Python?wxPython開發(fā)文件管理工具

    這篇文章主要為大家詳細介紹了如何基于wxPython開發(fā)一個文件管理工具,該工具提供了多種實用功能,代碼結(jié)構(gòu)清晰,易于理解和擴展,需要的可以了解下
    2025-02-02
  • Python裝飾器用法實例總結(jié)

    Python裝飾器用法實例總結(jié)

    這篇文章主要介紹了Python裝飾器用法,結(jié)合實例形式總結(jié)分析了Python裝飾器的功能、原理及常見使用方法,需要的朋友可以參考下
    2018-05-05
  • Python Gitlab Api 使用方法

    Python Gitlab Api 使用方法

    今天小編就為大家分享一篇Python Gitlab Api 使用方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • python?中?lxml?的?etree?標簽解析

    python?中?lxml?的?etree?標簽解析

    這篇文章主要介紹了python?中l(wèi)xml的etree?標簽解析,文章圍繞主題展開詳細內(nèi)容,需要的小伙伴可以參考一下,希望對你的學(xué)習或工作有所幫助
    2022-04-04
  • 1行代碼搞定Python中的高頻數(shù)據(jù)處理場景

    1行代碼搞定Python中的高頻數(shù)據(jù)處理場景

    本文介紹了使用Python和Pandas庫進行高效數(shù)據(jù)處理的技巧,通過一行代碼即可完成90%的日常數(shù)據(jù)處理需求,內(nèi)容涵蓋數(shù)據(jù)加載、清洗、轉(zhuǎn)換、統(tǒng)計分析和導(dǎo)出全流程,希望對大家有所幫助
    2026-04-04

最新評論

龙江县| 岳阳市| 襄城县| 西盟| 广宗县| 平果县| 高阳县| 大同县| 关岭| 铁力市| 宁都县| 遵化市| 新源县| 赞皇县| 巴林左旗| 上饶市| 辽阳市| 武威市| 江陵县| 和顺县| 丘北县| 桦甸市| 茶陵县| 吴桥县| 常宁市| 达日县| 扎鲁特旗| 信阳市| 灵丘县| 琼结县| 大厂| 孟连| 临猗县| 连江县| 晋宁县| 合水县| 高雄市| 阳高县| 永吉县| 丰县| 天气|