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

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

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

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

一、環(huán)境準(zhǔn)備

1. 啟動(dòng)Milvus服務(wù)

推薦用Docker一鍵啟動(dòng)(最簡(jiǎn)單,無需復(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
# 啟動(dòng)服務(wù)
docker-compose up -d

啟動(dòng)后,Milvus默認(rèn)地址:localhost:19530

2. 安裝Python客戶端

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

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

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

# 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ù) ======================
# 默認(rèn)連接本地Milvus,參數(shù):host(地址)、port(端口)、alias(連接別名)
connections.connect(
    alias="default", 
    host="localhost", 
    port="19530"
)
print("? 成功連接Milvus服務(wù)")
# ====================== 3. 定義集合結(jié)構(gòu)(Schema) ======================
# 集合 = 表,字段 = 列,必須包含:主鍵字段 + 向量字段
# 字段1:主鍵ID(自增整數(shù),唯一標(biāo)識(shí))
primary_field = FieldSchema(
    name="id", 
    dtype=DataType.INT64, 
    is_primary=True,  # 主鍵
    auto_id=True      # 自動(dòng)生成ID,無需手動(dòng)插入
)
# 字段2:向量字段(核心!存儲(chǔ)特征向量,512維)
vector_field = FieldSchema(
    name="embedding", 
    dtype=DataType.FLOAT_VECTOR, 
    dim=512  # 向量維度:必須和你的數(shù)據(jù)一致
)
# 字段3:標(biāo)量字段(輔助過濾,比如分類標(biāo)簽)
tag_field = FieldSchema(
    name="tag", 
    dtype=DataType.INT64
)
# 定義集合整體結(jié)構(gòu)
schema = CollectionSchema(
    fields=[primary_field, vector_field, tag_field],
    description="Milvus基礎(chǔ)案例:特征向量存儲(chǔ)與檢索"
)
# ====================== 4. 創(chuàng)建集合 ======================
collection_name = "milvus_demo"
# 如果集合已存在,先刪除(避免重復(fù)創(chuàng)建報(bào)錯(cuò))
if utility.has_collection(collection_name):
    utility.drop_collection(collection_name)
# 創(chuàng)建集合
collection = Collection(
    name=collection_name,
    schema=schema,
    using="default"  # 使用默認(rèn)連接
)
print(f"? 成功創(chuàng)建集合:{collection_name}")
# ====================== 5. 創(chuàng)建向量索引(必須?。?======================
# Milvus必須建索引才能檢索,索引決定檢索速度和精度
# 入門推薦:IVF_FLAT(平衡速度和精度)
index_params = {
    "index_type": "IVF_FLAT",      # 索引類型
    "metric_type": "L2",           # 相似度計(jì)算方式: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)建后默認(rèn)在磁盤,必須加載到內(nèi)存才能讀寫
collection.load()
print("? 集合已加載到內(nèi)存")
# ====================== 7. 插入模擬數(shù)據(jù) ======================
# 生成1000條512維隨機(jī)向量(模擬文本/圖像特征)
num_entities = 1000
vectors = np.random.rand(num_entities, 512).tolist()  # 轉(zhuǎn)列表格式
# 生成標(biāo)量標(biāo)簽(0-9隨機(jī)分類)
tags = np.random.randint(0, 10, num_entities).tolist()
# 插入數(shù)據(jù):字段順序和Schema定義一致
insert_result = collection.insert(
    data=[vectors, tags]  # 自動(dòng)填充主鍵(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ǔn),速度越慢
}
# 執(zhí)行檢索
results = collection.search(
    data=search_vector,        # 查詢向量
    anns_field="embedding",    # 要檢索的向量字段
    param=search_params,       # 檢索參數(shù)
    limit=5,                   # 返回Top5最相似的結(jié)果
    output_fields=["id", "tag"]# 同時(shí)返回的標(biāo)量字段
)
# 打印檢索結(jié)果
print("\n?? 向量相似度檢索結(jié)果(Top5):")
for hits in results:
    for hit in hits:
        print(f"ID: {hit.id}, 相似度距離: {hit.distance:.4f}, 標(biāo)簽: {hit.entity.get('tag')}")
# ====================== 9. 進(jìn)階:標(biāo)量過濾 + 向量檢索 ======================
# 場(chǎng)景:只檢索【標(biāo)簽=3】的向量中,最相似的Top3
filtered_results = collection.search(
    data=search_vector,
    anns_field="embedding",
    param=search_params,
    limit=3,
    expr="tag == 3",  # 標(biāo)量過濾條件(SQL風(fēng)格)
    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}, 標(biāo)簽: {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)鍵知識(shí)點(diǎn)解釋

1. 核心概念

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

2. 必做操作

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

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

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

四、常見問題

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

總結(jié)

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Python Gitlab Api 使用方法

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

    python?中?lxml?的?etree?標(biāo)簽解析

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

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

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

最新評(píng)論

宜兰市| 涞水县| 乐山市| 海林市| 平安县| 北宁市| 永仁县| 宝清县| 秦安县| 天祝| 齐齐哈尔市| 佛坪县| 淮安市| 普兰店市| 延吉市| 额尔古纳市| 平泉县| 佛坪县| 班戈县| 邹平县| 茂名市| 博客| 义马市| 吉木萨尔县| 庆云县| 峨眉山市| 亳州市| 佛山市| 盖州市| 轮台县| 南木林县| 浙江省| 永登县| 常山县| 阳春市| 财经| 大厂| 大埔区| 湟源县| 丹阳市| 株洲县|