97色伦色在线综合视频,无玛专区,18videosex性欧美黑色,日韩黄色电影免费在线观看,国产精品伦理一区二区三区,在线视频欧美日韩,亚洲欧美在线中文字幕不卡

網(wǎng)站建設(shè)開題報(bào)告論述吉林市最新消息今天

鶴壁市浩天電氣有限公司 2026/01/24 10:39:29
網(wǎng)站建設(shè)開題報(bào)告論述,吉林市最新消息今天,中國企業(yè)網(wǎng),成都網(wǎng)站建設(shè)、一、什么是 Milvus 向量數(shù)據(jù)庫#xff1f; Milvus 是一款開源的向量數(shù)據(jù)庫#xff08;2019年提出#xff09;#xff0c;其唯一目標(biāo)是存儲(chǔ)、索引和管理由深度神經(jīng)網(wǎng)絡(luò)和其他機(jī)器學(xué)習(xí)#xff08;ML#xff09;模型生成的大規(guī)模嵌入向量。 作為一個(gè)專門設(shè)計(jì)用于處理輸入向…一、什么是 Milvus 向量數(shù)據(jù)庫Milvus 是一款開源的向量數(shù)據(jù)庫2019年提出其唯一目標(biāo)是存儲(chǔ)、索引和管理由深度神經(jīng)網(wǎng)絡(luò)和其他機(jī)器學(xué)習(xí)ML模型生成的大規(guī)模嵌入向量。作為一個(gè)專門設(shè)計(jì)用于處理輸入向量查詢的數(shù)據(jù)庫它能夠處理萬億級別的向量索引。與現(xiàn)有的關(guān)系型數(shù)據(jù)庫主要處理遵循預(yù)定義模式的結(jié)構(gòu)化數(shù)據(jù)不同Milvus 從底層設(shè)計(jì)用于處理從非結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)換而來的嵌入向量。隨著互聯(lián)網(wǎng)的發(fā)展和演變非結(jié)構(gòu)化數(shù)據(jù)變得越來越常見包括電子郵件、論文、物聯(lián)網(wǎng)傳感器數(shù)據(jù)、Facebook 照片、蛋白質(zhì)結(jié)構(gòu)等等。為了使計(jì)算機(jī)能夠理解和處理非結(jié)構(gòu)化數(shù)據(jù)使用嵌入技術(shù)將它們轉(zhuǎn)換為向量。Milvus 存儲(chǔ)和索引這些向量。Milvus 能夠通過計(jì)算它們的相似距離來分析兩個(gè)向量之間的相關(guān)性。如果兩個(gè)嵌入向量非常相似則意味著原始數(shù)據(jù)源也很相似。二、關(guān)鍵概念一非結(jié)構(gòu)化數(shù)據(jù)非結(jié)構(gòu)化數(shù)據(jù)包括圖像、視頻、音頻和自然語言等信息這些信息不遵循預(yù)定義的模型或組織方式。這種數(shù)據(jù)類型占據(jù)了世界數(shù)據(jù)的約 80%可以使用各種人工智能AI和機(jī)器學(xué)習(xí)ML模型將其轉(zhuǎn)換為向量。二嵌入向量嵌入向量是對非結(jié)構(gòu)化數(shù)據(jù)如電子郵件、物聯(lián)網(wǎng)傳感器數(shù)據(jù)、Instagram 照片、蛋白質(zhì)結(jié)構(gòu)等的特征抽象。數(shù)學(xué)上嵌入向量是一個(gè)浮點(diǎn)數(shù)或二進(jìn)制數(shù)的數(shù)組?,F(xiàn)代的嵌入技術(shù)被用于將非結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)換為嵌入向量。三向量相似度搜索向量相似度搜索是將向量與數(shù)據(jù)庫進(jìn)行比較以找到與查詢向量最相似的向量的過程。使用近似最近鄰搜索算法加速搜索過程。如果兩個(gè)嵌入向量非常相似那么原始數(shù)據(jù)源也是相似的。四Collection和Field與傳統(tǒng)數(shù)據(jù)庫引擎類似您也可以在Milvus中創(chuàng)建數(shù)據(jù)庫并為某些用戶分配權(quán)限來管理它們。那么這些用戶就有權(quán)管理數(shù)據(jù)庫中的集合。一個(gè)Milvus集群最多支持 64 個(gè)數(shù)據(jù)庫.在關(guān)系數(shù)據(jù)庫中表和字段的結(jié)構(gòu)可以與Milvus中的Collection和Field進(jìn)行對應(yīng)Milvus關(guān)系數(shù)據(jù)庫描述Collection表集合相當(dāng)于關(guān)系數(shù)據(jù)庫中的表用于組織數(shù)據(jù)Field字段字段Schema相當(dāng)于表中的列is_primary主鍵在Field Schema中標(biāo)記為主鍵對應(yīng)該列的主鍵dtype數(shù)據(jù)類型字段的數(shù)據(jù)類型如INT,VARCHAR等max_length最大長度對應(yīng)VARCHAR類型字段的最大字符數(shù)dim-向量字段的維度沒有直接對應(yīng)但可以視為特殊數(shù)據(jù)處理注意1個(gè)collection最多支持4個(gè)向量Field1、Filed schemaField schema是字段的邏輯定義。我們在定義集合架構(gòu)和管理集合之前需要定義的第一件事就是定義Field schema。Milvus集合中僅支持一個(gè)主鍵字段。屬性描述備注name要?jiǎng)?chuàng)建的集合中的字段名稱String必填dtype字段的數(shù)據(jù)類型必填description字段描述String選填is_primary是否設(shè)置該字段為主鍵字段Boolean (trueorfalse) 主鍵字段必填auto_id主鍵字段必填切換以啟用或禁用自動(dòng) ID主鍵分配True或Falsemax_lengthVARCHAR字段必需允許插入的字符串的最大長度。[1, 65,535]dim向量的維數(shù)∈[1, 32768]is_partition_key該字段是否是分區(qū)鍵字段布爾值true或false2、Collection schemacollection schema是collection的邏輯定義。我們需要在定義collection schema之前定義field schema。屬性描述備注field集合中要?jiǎng)?chuàng)建的字段必填description集合描述String,選填partition_key_field設(shè)計(jì)用作分區(qū)鍵的字段的名稱。String 選填enable_dynamic_field是否啟用動(dòng)態(tài)模式Boolean (trueorfalse)三、為什么選擇Milvus在處理大規(guī)模數(shù)據(jù)集的向量搜索時(shí)具有高性能。開發(fā)者優(yōu)先的社區(qū)提供多語言支持和工具鏈。云擴(kuò)展性和高可靠性即使出現(xiàn)故障也不會(huì)受到影響。通過將標(biāo)量過濾與向量相似度搜索配對實(shí)現(xiàn)混合搜索。四、支持哪些索引和度量索引是數(shù)據(jù)的組織單位。在搜索或查詢插入的實(shí)體之前必須聲明索引類型和相似度度量。如果您未指定索引類型則 Milvus 將默認(rèn)使用暴力搜索。一索引類型1、FLAT暴力搜索FLAT適合在小型、百萬級數(shù)據(jù)集上尋求完全準(zhǔn)確和精確搜索結(jié)果的場景。這是最簡單的索引方式進(jìn)行暴力搜索brute-force可以保證精確度但效率低尤其在數(shù)據(jù)量大時(shí)。適合場景在小型、百萬級數(shù)據(jù)集上尋求完全精確的搜索結(jié)果。FLAT意味著不對原始的向量數(shù)據(jù)進(jìn)行壓縮保持向量的原始精度所以在進(jìn)行搜索的時(shí)候計(jì)算是精確的2、IVF_FLAT1介紹IVF_FLAT通過先分類后精確查找的策略極大提高檢索效率。是一種基于倒排索引的方法核心是在精度和速度之間取得一個(gè)平衡。核心思想分而治之IVF是Inverted File Index的縮寫即倒排索引2工作原理第一步聚類使用聚類算法如k-means將數(shù)據(jù)集中所有的向量進(jìn)行“分類簇”算法會(huì)計(jì)算出來指定數(shù)量比如1024個(gè)的中心點(diǎn)每個(gè)中心點(diǎn)代表一個(gè)類別稱為簇最終每個(gè)向量都會(huì)被劃分到舉例它最近那個(gè)中心點(diǎn)所代表的簇中第二步創(chuàng)建倒排索引為第一步中得到的每個(gè)簇書架建立一個(gè)倒排列表這個(gè)列表記錄著所有屬于這個(gè)簇的向量的id以及向量本身因?yàn)橛玫氖莊lat所以數(shù)據(jù)不壓縮每個(gè)向量會(huì)被映射到它所屬的簇這樣在查詢時(shí)系統(tǒng)只需關(guān)注與查詢向量相似的簇而不需要搜索整個(gè)高維空間從而顯著降低搜索的時(shí)間復(fù)雜度。第三步查詢階段1確定搜索范圍找到可能相關(guān)的書架區(qū)域當(dāng)新查詢向量到達(dá)系統(tǒng)先計(jì)算它與所有簇中心點(diǎn)的距離找到距離最近的若干個(gè)簇nprobe決定了查詢幾個(gè)最近的書架區(qū)域假設(shè)總共有1024個(gè)區(qū)域簇設(shè)置nprobe6查找向量最接近的6個(gè)簇中心點(diǎn)對應(yīng)的區(qū)域2在范圍內(nèi)進(jìn)行精確查找系統(tǒng)從創(chuàng)建的倒排索引列表中取出來nprobe個(gè)簇中的所有向量然后在這個(gè)子集中進(jìn)行精確的線性搜索暴力比較找出來最相似的K個(gè)結(jié)果為了優(yōu)化查詢IVF_FLAT使用一個(gè)參數(shù)nprobe來控制搜索的簇?cái)?shù)。nprobe控制搜索時(shí)考慮的簇的數(shù)量從而平衡查詢精度和查詢速度增大nprobe可以搜索更多簇返回更多候選向量提高結(jié)果的精確度但查詢時(shí)間也會(huì)增加。減少nprobe可以縮小搜索范圍降低計(jì)算時(shí)間查詢速度更快但可能會(huì)犧牲一些精度3、IVF_SQ81介紹IVF_SQ8是在 IVF_FLAT 基礎(chǔ)上增加了量化步驟的一種索引方法其核心思想與 IVF_FLAT 類似IVF_SQ8通過標(biāo)量量化Scalar Quantization將每個(gè)維度的 4 字節(jié)浮點(diǎn)數(shù)表示壓縮為 1 字節(jié)整數(shù)表示。核心思想壓縮2關(guān)鍵技術(shù)IVF_SQ8包含兩個(gè)關(guān)鍵的技術(shù)1Inverted File Index繼承了IVF_FLAT的聚類搜索框架2Scalar Quantization to 8 bit新增的標(biāo)量量化技術(shù)將數(shù)據(jù)壓縮到原來的1/4量化過程[0.0,0.2]-映射到整數(shù)0[0.2,0.4]-映射到整數(shù)1[0.4,0.6]-映射到整數(shù)2[0.6,0.8]-映射到整數(shù)3[0.8,1.0]-映射到整數(shù)4映射過程:如0.9落在[0.8,1.0]之間映射為4...壓縮效益存儲(chǔ)空間變?yōu)樵瓉淼?/44、IVF_PQ1介紹IVF_PQ是一種高效的向量索引方式結(jié)合了倒排文件索引和乘積量化Product Quantization技術(shù)旨在加速大規(guī)模高維數(shù)據(jù)集的檢索。倒排文件索引IVF_PQ首先將數(shù)據(jù)集劃分為多個(gè)簇每個(gè)簇由一個(gè)聚類中心表示。查詢時(shí)系統(tǒng)首先計(jì)算查詢向量與這些聚類中心的距離選擇最接近的幾個(gè)簇進(jìn)行詳細(xì)搜索從而減少計(jì)算量。乘積量化在每個(gè)簇內(nèi)向量被進(jìn)一步量化為多個(gè)子向量這些子向量通過獨(dú)立的量化過程進(jìn)行編碼。這樣可以顯著降低存儲(chǔ)需求并加快相似度計(jì)算。存儲(chǔ)與速度IVF_PQ通過減少存儲(chǔ)空間的占用同時(shí)保持較高的查詢速度和準(zhǔn)確性適用于處理大規(guī)模高維向量數(shù)據(jù)。2工作原理介紹第一部分場景與數(shù)據(jù)定義我們先來定義一個(gè)非常具體、簡化的問題場景以便后續(xù)逐步推演。任務(wù)從 12 個(gè) 4 維向量中找與查詢向量 ( Q ) 最相似的 3 個(gè)向量。數(shù)據(jù)表示每張圖片由一個(gè)4維向量表示。這顯然不現(xiàn)實(shí)但低維度能讓我們在演示時(shí)看清所有計(jì)算細(xì)節(jié)。數(shù)據(jù)集12 個(gè) 4 維向量V1: [1.0, 2.0, 1.5, 3.0]V2: [1.2, 1.8, 1.6, 2.9]V3: [9.0, 8.0, 8.5, 7.0]V4: [9.1, 8.2, 8.4, 7.2]V5: [2.0, 1.0, 3.0, 1.5]V6: [2.1, 1.1, 3.1, 1.4]V7: [8.0, 9.0, 7.0, 8.5]V8: [8.2, 9.1, 7.1, 8.6]V9: [1.5, 2.5, 1.0, 2.5]V10: [9.5, 8.5, 9.0, 7.5]V11: [2.5, 1.5, 2.5, 1.0]V12: [8.5, 9.5, 7.5, 9.0]查詢向量( Q: [1.1, 2.1, 1.4, 2.8] )預(yù)期與 ( V_1, V_2, V_9 ) 最相似。面臨的挑戰(zhàn)即使只有12個(gè)向量為了找到最近鄰暴力搜索需要計(jì)算12次距離。如果向量是100萬、1000萬甚至10億個(gè)呢我們需要IVF_PQ。第二部分倒排文件索引IVF—— 分簇粗篩1. 核心思想回顧分簇建立“書架”。2. 具體步驟演示步驟1聚類我們使用k-means算法將12個(gè)向量聚成3個(gè)簇 (nlist 3)。經(jīng)過聚類計(jì)算后過程略我們假設(shè)得到了3個(gè)聚類中心即每個(gè)“書架”的標(biāo)簽簇0中心 C0: [1.5, 2.0, 1.5, 2.5] (這個(gè)中心可能靠近 V1, V2, V5, V6, V9, V11)簇1中心 C1: [9.0, 8.5, 8.0, 7.5] (這個(gè)中心可能靠近 V3, V4, V7, V8, V10, V12)簇2中心 C2: [5.0, 5.0, 5.0, 5.0] (這個(gè)中心在中間但可能沒有向量離它最近)分配向量計(jì)算每個(gè)向量到三個(gè)中心的距離將其分配到最近的簇。簇0V1, V2, V5, V6, V9, V11簇1V3, V4, V7, V8, V10, V12簇2空步驟2建立倒排索引現(xiàn)在我們有了一個(gè)“圖書目錄”簇0包含V1, V2, V5, V6, V9, V11簇1包含V3, V4, V7, V8, V10, V123. 查詢過程IVF階段接收查詢向量 Q: [1.1, 2.1, 1.4, 2.8]粗篩 - 選擇候選簇計(jì)算Q到C0、C1、C2的距離例如歐氏距離。distance(Q, C0) sqrt((1.1-1.5)^2 (2.1-2.0)^2 (1.4-1.5)^2 (2.8-2.5)^2) ≈ 0.5很小distance(Q, C1) ≈ 很大distance(Q, C2) ≈ 很大我們設(shè)定nprobe 1即只搜索距離最近的一個(gè)簇。結(jié)果我們選擇簇0作為候選簇。搜索范圍瞬間從12個(gè)向量縮小到了6個(gè)向量V1, V2, V5, V6, V9, V11。IVF階段小結(jié)我們通過快速的“簇間比較”排除了完全不相關(guān)的簇1V3, V4, V7, V8, V10, V12避免了在這6個(gè)向量上浪費(fèi)計(jì)算資源。第三部分乘積量化PQ—— 簇內(nèi)精算這是最需要詳細(xì)解釋的部分?,F(xiàn)在我們只在簇0內(nèi)部對那6個(gè)向量進(jìn)行PQ量化。1. 核心思想回顧分割向量分段量化用編碼代替向量。2. 具體步驟演示步驟1分割向量我們的向量是4維。我們將其切分成2段(m 2)每段2維。例如向量 V1 [1.0, 2.0, 1.5, 3.0] 被切分為子向量1: [1.0, 2.0]子向量2: [1.5, 3.0]步驟2為每個(gè)子空間創(chuàng)建碼本我們?yōu)槊總€(gè)子空間獨(dú)立進(jìn)行聚類每個(gè)子空間聚成2類(k 2)。這意味著每個(gè)子碼本只有2個(gè)碼字。針對簇0的所有6個(gè)向量進(jìn)行操作第一個(gè)子空間所有向量的前兩維:數(shù)據(jù)點(diǎn): [1.0,2.0], [1.2,1.8], [2.0,1.0], [2.1,1.1], [1.5,2.5], [2.5,1.5]聚類后得到2個(gè)碼字中心點(diǎn):碼本1 - 碼字0: [1.5, 2.0] (代表[1.0,2.0], [1.2,1.8], [1.5,2.5] 這組的中心)碼本1 - 碼字1: [2.2, 1.2] (代表[2.0,1.0], [2.1,1.1], [2.5,1.5] 這組的中心)第二個(gè)子空間所有向量的后兩維:數(shù)據(jù)點(diǎn): [1.5,3.0], [1.6,2.9], [3.0,1.5], [3.1,1.4], [1.0,2.5], [2.5,1.0]聚類后得到2個(gè)碼字:碼本2 - 碼字0: [1.5, 2.8] (代表[1.5,3.0], [1.6,2.9], [1.0,2.5] 的中心)碼本2 - 碼字1: [2.8, 1.3] (代表[3.0,1.5], [3.1,1.4], [2.5,1.0] 的中心)步驟3編碼向量現(xiàn)在我們用碼本為簇0里的每個(gè)向量生成一個(gè)編碼一個(gè)由碼字索引組成的序列。V1 [1.0, 2.0, 1.5, 3.0]:子向量1 [1.0,2.0] - 離碼本1的碼字0 [1.5,2.0]更近 -索引0子向量2 [1.5,3.0] - 離碼本2的碼字0 [1.5,2.8]更近 -索引0V1的PQ編碼是 [0, 0]V2 [1.2, 1.8, 1.6, 2.9]:子向量1 [1.2,1.8] - 離碼字0 [1.5,2.0]更近 -索引0子向量2 [1.6,2.9] - 離碼字0 [1.5,2.8]更近 -索引0V2的PQ編碼是 [0, 0](注意V1和V2被編碼成了完全相同的形式因?yàn)樗鼈儽緛砭秃芟嗨?V5 [2.0, 1.0, 3.0, 1.5]:子向量1 [2.0,1.0] - 離碼字1 [2.2,1.2]更近 -索引1子向量2 [3.0,1.5] - 離碼字1 [2.8,1.3]更近 -索引1V5的PQ編碼是 [1, 1]... 以此類推編碼完所有向量。存儲(chǔ)收益原始一個(gè)向量是4個(gè)float 16字節(jié)。PQ編碼后是2個(gè)索引每個(gè)索引只需1字節(jié)因?yàn)橹挥?和1兩種可能 2字節(jié)。壓縮了8倍3. 查詢過程PQ階段- 非對稱距離計(jì)算這是最精妙的一步。我們現(xiàn)在要查詢Q [1.1, 2.1, 1.4, 2.8] 與簇0內(nèi)6個(gè)向量的距離。步驟1預(yù)處理查詢向量構(gòu)建距離表同樣分割Q: 子向量Q1 [1.1,2.1], 子向量Q2 [1.4,2.8]計(jì)算距離表我們預(yù)先計(jì)算Q的每一段與對應(yīng)碼本中所有碼字的距離。子表1 (針對第一段):d(Q1, 碼本1-碼字0 [1.5,2.0])sqrt((1.1-1.5)^2 (2.1-2.0)^2) ≈ sqrt(0.160.01) ≈ 0.41d(Q1, 碼本1-碼字1 [2.2,1.2])sqrt((1.1-2.2)^2 (2.1-1.2)^2) ≈ sqrt(1.210.81) ≈ 1.42子表2 (針對第二段):d(Q2, 碼本2-碼字0 [1.5,2.8])sqrt((1.4-1.5)^2 (2.8-2.8)^2) 0.1d(Q2, 碼本2-碼字1 [2.8,1.3])sqrt((1.4-2.8)^2 (2.8-1.3)^2) ≈ sqrt(1.962.25) ≈ 2.05現(xiàn)在我們有了一個(gè)神奇的距離表段1: [ 0.41, 1.42 ] 段2: [ 0.10, 2.05 ]步驟2查表計(jì)算近似距離現(xiàn)在計(jì)算Q和V1的距離。V1的PQ編碼是 [0, 0]。近似距離 子表1[0] 子表2[0] 0.41 0.10 0.51計(jì)算Q和V2的距離。V2的編碼也是 [0, 0] - 距離也是0.51計(jì)算Q和V5的距離。V5的編碼是 [1, 1]。近似距離 子表1[1] 子表2[1] 1.42 2.05 3.47步驟3排序并返回結(jié)果我們對簇0內(nèi)所有6個(gè)向量完成上述查表計(jì)算后得到距離列表取最小的3個(gè)V1/V2: ~0.51V9: (假設(shè)其編碼也是[0,0]或類似距離也會(huì)很小)...最終返回Top3結(jié)果V1, V2, V9。PQ階段小結(jié)我們通過預(yù)先計(jì)算好的距離表和簡單的查表加法替代了原始的浮點(diǎn)距離計(jì)算。雖然得到的是近似距離但排序結(jié)果與真實(shí)情況一致而計(jì)算速度卻快了幾個(gè)數(shù)量級。第四部分結(jié)果排序與總結(jié)IVF_PQ的整體工作流就像一場高效的搜捕行動(dòng)IVF確定搜索區(qū)域警長根據(jù)線報(bào)查詢向量在地圖上劃出最可能的幾個(gè)街區(qū)候選簇而不是全城搜捕。PQ快速盤查在目標(biāo)街區(qū)內(nèi)警察不是拿著一張?jiān)敿?xì)的照片去比對每個(gè)人計(jì)算原始向量距離而是拿著一個(gè)“特征清單”距離表快速核對身高段、發(fā)型段等編碼特征查表計(jì)算迅速鎖定嫌疑人最相似向量。關(guān)鍵參數(shù)與權(quán)衡nlist簇?cái)?shù)量越大每個(gè)簇越小IVF粗篩越精確但聚類和存儲(chǔ)索引開銷越大。nprobe搜索的簇?cái)?shù)越大精度越高速度越慢。是速度與精度之間最直接的調(diào)節(jié)旋鈕。m分段數(shù)越多量化越精細(xì)精度越高但距離表越大計(jì)算量略有增加。k每段碼本大小越大量化誤差越小精度越高但存儲(chǔ)每個(gè)索引所需的字節(jié)數(shù)越多l(xiāng)og2(k) bits。5、HNSWHNSW是數(shù)據(jù)世界的智能導(dǎo)航系統(tǒng)專門解決高維空間中的海量數(shù)據(jù)相似性搜索設(shè)計(jì)的。核心思想分層導(dǎo)航將HNSW想象成一個(gè)多層次的地圖頂層世界地圖只顯示大洲和主要的國家節(jié)點(diǎn)稀疏用于宏觀定位中層國家地圖顯示主要城市和高速公路節(jié)點(diǎn)密集增加底層市區(qū)詳圖顯示所有街道和建筑節(jié)點(diǎn)最密集用于精確定位在一個(gè)圖書館中請找出所有與“人工智能理論”相關(guān)書籍怎么實(shí)現(xiàn)HNSW類似于一個(gè)分層導(dǎo)航系統(tǒng)先在頂層的“總索引圖”上快速的定位到一個(gè)區(qū)域比如定位到“計(jì)算機(jī)科學(xué)”區(qū)然后到下一層“人工智能”分區(qū)再精確到“AI理論”書架最后在書架上仔細(xì)的比較整個(gè)過程需要幾分鐘二相似度度量在 Milvus 中相似度度量用于衡量向量之間的相似性。選擇一個(gè)好的距離度量方法可以顯著提高分類和聚類的性能。根據(jù)輸入數(shù)據(jù)的形式選擇特定的相似度度量方法可以獲得最優(yōu)的性能。對于浮點(diǎn)嵌入通常使用以下指標(biāo)歐幾里得距離L2內(nèi)積IP余弦相似度 (COSINE)1、歐式距離定義計(jì)算向量在歐幾里得空間中的直線距離即兩點(diǎn)間的幾何距離特點(diǎn)值越小越相似距離越近對向量的絕對大小敏感適用于需要衡量物理距離的場景比如圖像特征匹配2、內(nèi)積定義計(jì)算兩個(gè)向量的點(diǎn)積反應(yīng)他們的對齊程度特點(diǎn)值越大表示越相似對向量的模長敏感模長大的向量容易獲得更高的內(nèi)積可能需要對向量進(jìn)行歸一化場景推薦系統(tǒng)用戶-物品向量匹配語義相似性計(jì)算3、余弦相似度定義衡量向量方向的相似性忽略模長的影響特點(diǎn)值范圍在【-1,1】1表示完全相同方向-1表示相反方向場景自然語言處理文本相似度人臉識別等五、Milvus數(shù)據(jù)庫操作我們使用 Milvus Lite它是pymilvus中包含的一個(gè) python 庫可以嵌入到客戶端應(yīng)用程序中。Milvus 還支持在Docker和Kubernetes上部署適用于生產(chǎn)用例。開始之前請確保本地環(huán)境中有 Python 3.8 可用。安裝pymilvus其中包含 python 客戶端庫和 Milvus Litepip install pymilvus一設(shè)置向量數(shù)據(jù)庫要?jiǎng)?chuàng)建本地的 Milvus 向量數(shù)據(jù)庫只需實(shí)例化一個(gè)MilvusClient指定一個(gè)存儲(chǔ)所有數(shù)據(jù)的文件名如 milvus_demo.db。# 1 數(shù)據(jù)庫的操作 def operate_db(): # 如果uri為數(shù)據(jù)庫名稱路徑代表本地操作數(shù)據(jù)庫 client MilvusClient(urimilvus_demo.db) # 如果uri為鏈接地址代表Milvus屬于單機(jī)服務(wù)需要開啟Milvus后臺服務(wù)操作 # client MilvusClient(urihttp://localhost:19530) # # 創(chuàng)建名稱為milvus_demo的數(shù)據(jù)庫 # # databases client.list_databases() # if milvus_demo not in databases: # client.create_database(db_namemilvus_demo) # else: # client.using_database(db_namemilvus_demo) return client二Collections操作在 Milvus 中我們需要一個(gè)Collections 來存儲(chǔ)向量及其相關(guān)元數(shù)據(jù)。你可以把它想象成傳統(tǒng) SQL 數(shù)據(jù)庫中的表格。創(chuàng)建 Collections 時(shí)可以定義 Schema 和索引參數(shù)來配置向量規(guī)格如維度、索引類型和遠(yuǎn)距離度量。此外還有一些復(fù)雜的概念來優(yōu)化索引以提高向量搜索性能。# 2 collection集合的操作 def operate_table(): # 定義schema ## 注意在定義集合 Schema 時(shí)enable_dynamic_fieldTrue 使得您可以插入未定義的字段。一般動(dòng)態(tài)字段以 JSON 格式存儲(chǔ)通常命名為 $meta。在插入數(shù)據(jù)時(shí)所有未定義的字段及其值將被保存為鍵值對。 ## 在定義集合 Schema 時(shí)auto_idTrue 可以對主鍵自動(dòng)增長id。 schema client.create_schema(auto_idFalse, enable_dynamic_fieldTrue) # # schema添加字段id, vector schema.add_field(field_nameid, datatypeDataType.INT64, is_primaryTrue) schema.add_field(field_namevector, datatypeDataType.FLOAT_VECTOR, dim5) schema.add_field(field_namescalar1, datatypeDataType.VARCHAR, max_length256, description標(biāo)量字段) ? # # 創(chuàng)建集合 client.create_collection(collection_namedemo_v1, schemaschema) # # 設(shè)置索引 index_params client.prepare_index_params() # # 在向量字段vector上面添加一個(gè)索引 # index_type, # 留空以使用自動(dòng)索引 # 對于向量字段常見的默認(rèn)索引類型包括IVF_FLAT或HNSW等具體取決于數(shù)據(jù)的特性和查詢需求。 # 對于標(biāo)量字段常見的默認(rèn)索引可能是INVERTED等。 index_params.add_index(field_namevector, metric_typeCOSINE, index_type, index_namevector_index) client.create_index(collection_namedemo_v1, index_paramsindex_params) # # 查看索引信息 res client.list_indexes(collection_namedemo_v1) print(f索引信息--》{res}) ? res client.describe_index(collection_namedemo_v1, index_namevector_index) print(f指定索引詳細(xì)信息--{res}) ? # 查看索引狀態(tài) # client.load_collection(collection_namedemo_v1) # print(client.get_load_state(collection_namedemo_v1)) # 如果不需要索引可以刪除相關(guān)索引 # client.release_collection(collection_namedemo_v1) # client.drop_index(collection_namedemo_v1, index_namevector_index) ? # 檢索標(biāo)量字段 index_params1 client.prepare_index_params() index_params1.add_index(field_namescalar1, index_type, index_namedefault_index) client.create_index(collection_namedemo_v1, index_paramsindex_params1) # # 查看索引信息 res client.list_indexes(collection_namedemo_v1) print(f索引信息--》{res}) # res client.describe_index(collection_namedemo_v1, index_namevector_index) print(f指定索引詳細(xì)信息--{res})三Entity實(shí)體數(shù)據(jù)操作在 Milvus 中實(shí)體指的是Collections中共享相同Schema的數(shù)據(jù)記錄行中每個(gè)字段的數(shù)據(jù)構(gòu)成一個(gè)實(shí)體。因此同一 Collections 中的實(shí)體具有相同的屬性如字段名稱、數(shù)據(jù)類型和其他約束1、數(shù)據(jù)的增、刪、改def operate_entity(): # # todo:1. 創(chuàng)建集合collection # 這種方式: collection 只包括兩個(gè)字段. id 作為主鍵 vector 作為向量字段以及自動(dòng)設(shè)置 auto_id、enable_dynamic_field 為 True # auto_id 啟用此設(shè)置可確保主鍵自動(dòng)遞增。在數(shù)據(jù)插入期間無需手動(dòng)提供主鍵。 # enable_dynamic_field 啟用后要插入的數(shù)據(jù)中除 id 和 vector 之外的所有字段都將被視為動(dòng)態(tài)字段。 # # 這些附加字段作為鍵值對保存在名為 $meta 的特殊字段中。此功能允許在數(shù)據(jù)插入期間包含額外的字段。 # client.create_collection(collection_namedemo_v2, dimension5, metric_typeIP) # # # todo:2. 插入數(shù)據(jù)也叫實(shí)體 data [ {id: 0, vector: [0.3580376395471989, -0.6023495712049978, 0.18414012509913835, -0.26286205330961354, 0.9029438446296592], color: pink_8682}, {id: 1, vector: [0.19886812562848388, 0.06023560599112088, 0.6976963061752597, 0.2614474506242501, 0.838729485096104], color: red_7025}, {id: 2, vector: [0.43742130801983836, -0.5597502546264526, 0.6457887650909682, 0.7894058910881185, 0.20785793220625592], color: orange_6781}, {id: 3, vector: [0.3172005263489739, 0.9719044792798428, -0.36981146090600725, -0.4860894583077995, 0.95791889146345], color: pink_9298}, {id: 4, vector: [0.4452349528804562, -0.8757026943054742, 0.8220779437047674, 0.46406290649483184, 0.30337481143159106], color: red_4794}, {id: 5, vector: [0.985825131989184, -0.8144651566660419, 0.6299267002202009, 0.1206906911183383, -0.1446277761879955], color: yellow_4222}, {id: 6, vector: [0.8371977790571115, -0.015764369584852833, -0.31062937026679327, -0.562666951622192, -0.8984947637863987], color: red_9392}, {id: 7, vector: [-0.33445148015177995, -0.2567135004164067, 0.8987539745369246, 0.9402995886420709, 0.5378064918413052], color: grey_8510}, {id: 8, vector: [0.39524717779832685, 0.4000257286739164, -0.5890507376891594, -0.8650502298996872, -0.6140360785406336], color: white_9381}, {id: 9, vector: [0.5718280481994695, 0.24070317428066512, -0.3737913482606834, -0.06726932177492717, -0.6980531615588608], color: purple_4976} ] res client.insert(collection_namedemo_v2, datadata) # print(res) ? ## todo:2.1 將數(shù)據(jù)插入到特定分區(qū)可以在插入請求中指定分區(qū)名稱如下所示 data [ {id: 10, vector: [-0.5570353903748935, -0.8997887893201304, -0.7123782431855732, -0.6298990746450119, 0.6699215060604258], color: red_1202}, {id: 11, vector: [0.6319019033373907, 0.6821488267878275, 0.8552303045704168, 0.36929791364943054, -0.14152860714878068], color: blue_4150}, {id: 12, vector: [0.9483947484855766, -0.32294203351925344, 0.9759290319978025, 0.8262982148666174, -0.8351194181285713], color: orange_4590}, {id: 13, vector: [-0.5449109892498731, 0.043511240563786524, -0.25105249484790804, -0.012030655265886425, -0.0010987671273892108], color: pink_9619}, {id: 14, vector: [0.6603339372951424, -0.10866551787442225, -0.9435597754324891, 0.8230244263466688, -0.7986720938400362], color: orange_4863}, {id: 15, vector: [-0.8825129181091456, -0.9204557711667729, -0.935350065513425, 0.5484069690287079, 0.24448151140671204], color: orange_7984}, {id: 16, vector: [0.6285586391568163, 0.5389064528263487, -0.3163366239905099, 0.22036279378888013, 0.15077052220816167], color: blue_9010}, {id: 17, vector: [-0.20151825016059233, -0.905239387635804, 0.6749305353372479, -0.7324272081377843, -0.33007998971889263], color: blue_4521}, {id: 18, vector: [0.2432286610792349, 0.01785636564206139, -0.651356982731391, -0.35848148851027895, -0.7387383128324057], color: orange_2529}, {id: 19, vector: [0.055512329053363674, 0.7100266349039421, 0.4956956543575197, 0.24541352586717702, 0.4209030729923515], color: red_9437} ] ? # ## todo:3. 創(chuàng)建分區(qū) client.create_partition(collection_namedemo_v2, partition_namepartitionA) # # # # # todo: 3.1 分區(qū)中插入數(shù)據(jù) res client.insert(collection_namedemo_v2, datadata, partition_namepartitionA) # print(res) ## todo:4. 更新插入數(shù)據(jù) # 在 Milvus 中upsert 操作執(zhí)行數(shù)據(jù)級操作根據(jù)集合中是否已存在主鍵來插入或更新實(shí)體。具體來說 # 如果集合中已存在該實(shí)體的主鍵則現(xiàn)有實(shí)體將被覆蓋。 # 如果集合中不存在主鍵則將插入一個(gè)新實(shí)體。 data [ {id: 0, vector: [-0.619954382375778, 0.4479436794798608, -0.17493894838751745, -0.4248030059917294, -0.8648452746018911], color: black_9898}, {id: 1, vector: [0.4762662251462588, -0.6942502138717026, -0.4490002642657902, -0.628696575798281, 0.9660395877041965], color: red_7319}, {id: 2, vector: [-0.8864122635045097, 0.9260170474445351, 0.801326976181461, 0.6383943392381306, 0.7563037341572827],color: white_6465}, {id: 3, vector: [0.14594326235891586, -0.3775407299900644, -0.3765479013078812, 0.20612075380355122, 0.4902678929632145], color: orange_7580}, {id: 4, vector: [0.4548498669607359, -0.887610217681605, 0.5655081329910452, 0.19220509387904117, 0.016513983433433577], color: red_3314}, {id: 5, vector: [0.11755001847051827, -0.7295149788999611, 0.2608115847524266, -0.1719167007897875, 0.7417611743754855], color: black_9955}, {id: 6, vector: [0.9363032158314308, 0.030699901477745373, 0.8365910312319647, 0.7823840208444011, 0.2625222076909237], color: yellow_2461}, {id: 7, vector: [0.0754823906014721, -0.6390658668265143, 0.5610517334334937, -0.8986261118798251, 0.9372056764266794], color: white_5015}, {id: 8, vector: [-0.3038434006935904, 0.1279149203380523, 0.503958664270957, -0.2622661156746988, 0.7407627307791929], color: purple_6414}, {id: 9, vector: [-0.7125086947677588, -0.8050968321012257, -0.32608864121785786, 0.3255654958645424, 0.26227968923834233], color: brown_7231} ] ? res client.upsert(collection_namedemo_v2, datadata) # print(res) # 注意如果分區(qū)中不存在更新數(shù)據(jù)的id就不會(huì)受影響但是會(huì)影響集合里已經(jīng)存在的相同id的實(shí)體 # res client.upsert(collection_namedemo_v2, datadata, partition_namepartitionA) # todo:5. 刪除實(shí)體數(shù)據(jù) # 按照過濾器刪除如果不指定分區(qū)默認(rèn)情況下會(huì)在整個(gè)集合中進(jìn)行刪除 res client.delete(collection_namedemo_v2, filterid in [12, 5, 6]) print(res) # 按照id進(jìn)行刪除指定分區(qū)刪除數(shù)據(jù) # res client.delete(collection_namedemo_v2, ids[1, 2, 3, 4], partition_namepartitionA) print(res)2、數(shù)據(jù)的查詢1簡單查詢# entity實(shí)體數(shù)據(jù)的操作查詢 def query_operation(): # # todo: 1. 單向量搜索 res client.search(collection_namedemo_v2, data[[0.19886812562848388, 0.06023560599112088, 0.6976963061752597, 0.2614474506242501, 0.838729485096104]], limit2, search_params{metric_type: IP}, output_fields[id, vector]) # search_params是在查詢時(shí)執(zhí)行距離計(jì)算方式如果定義索引的時(shí)候已經(jīng)制定了方式可以不寫 print(res) # todo: 2. 批量向量搜索 res client.search(collection_namedemo_v2, data[[0.19886812562848388, 0.06023560599112088, 0.6976963061752597, 0.2614474506242501, 0.838729485096104], [0.3172005263489739, 0.9719044792798428, -0.36981146090600725, -0.4860894583077995, 0.95791889146345]], limit2, search_params{metric_type: IP}, output_fields[id, vector]) # search_params是在查詢時(shí)執(zhí)行距離計(jì)算方式如果定義索引的時(shí)候已經(jīng)制定了方式可以不寫 print(res) # todo: 3. 分區(qū)搜索 # 要進(jìn)行分區(qū)搜索只需在搜索請求的 partition_names 中包含目標(biāo)分區(qū)的名稱即可。這指定search操作僅考慮指定分區(qū)內(nèi)的向量。 res client.search( collection_namedemo_v2, data[[0.02174828545444263, 0.058611125483182924, 0.6168633415965343, -0.7944160935612321, 0.5554828317581426]], limit5, search_params{metric_type: IP, params: {}}, partition_names[partitionA] # 這里指定搜索的分區(qū) ) print(res) # todo: 4.使用輸出字段進(jìn)行搜索 # 使用輸出字段進(jìn)行搜索允許您指定搜索結(jié)果中應(yīng)包含匹配向量的哪些屬性或字段。 res client.search( collection_namedemo_v2, data[[0.3580376395471989, -0.6023495712049978, 0.18414012509913835, -0.26286205330961354, 0.9029438446296592]], limit5, search_params{metric_type: IP, params: {}}, output_fields[vector, color] # 返回定義的字段 ) print(res) # todo: 5.過濾搜索 # 過濾器搜索篩選搜索將標(biāo)量篩選器應(yīng)用于矢量搜索允許我們根據(jù)特定條件優(yōu)化搜索結(jié)果。 # 例如要根據(jù)字符串模式優(yōu)化搜索結(jié)果可以使用 like 運(yùn)算符。此運(yùn)算符通過考慮前綴、中綴和后綴來啟用字符串匹配 # 篩選顏色以紅色為前綴的結(jié)果 res client.search( collection_namedemo_v2, data[[0.3580376395471989, -0.6023495712049978, 0.18414012509913835, -0.26286205330961354, 0.9029438446296592]], limit5, search_params{metric_type: IP, params: {}}, output_fields[color], filtercolor like red% ) print(res) # todo: 6.范圍搜索 # 范圍搜索允許查找距查詢向量指定距離范圍內(nèi)的向量。 # 范圍搜索:radius定義搜索空間的外邊界。只有距查詢向量在此距離內(nèi)的向量才被視為潛在匹配。 # range_filter雖然radius設(shè)置搜索的外部限制但可以選擇使用range_filter來定義內(nèi)部邊界創(chuàng)建一個(gè)距離范圍在該范圍內(nèi)向量必須落下才被視為匹配。 search_params { metric_type: IP, params: { radius: 0.8, # 搜索圓的半徑 range_filter: 1 # 范圍過濾器用于過濾出不在搜索圓內(nèi)的向量。 } } ? res client.search( collection_namedemo_v2, data[[0.3580376395471989, -0.6023495712049978, 0.18414012509913835, -0.26286205330961354, 0.9029438446296592]], limit3, # 返回的搜索結(jié)果最大數(shù)量 search_paramssearch_params, output_fields[color], ) # # print(res) result json.dumps(res, indent4) print(result)2復(fù)雜查詢混合檢索要對兩組 ANN 搜索結(jié)果進(jìn)行合并和重新排序有必要選擇適當(dāng)?shù)闹匦屡判虿呗?。支持兩種重排策略加權(quán)排名策略WeightedRanker和重排序策略RRFRanker。在選擇重排策略時(shí)需要考慮的一個(gè)問題是在向量場中是否需要強(qiáng)調(diào)一個(gè)或多個(gè)基本 ANN 搜索。加權(quán)排名如果您要求結(jié)果強(qiáng)調(diào)特定的向量場建議使用該策略。通過 WeightedRanker您可以為某些向量場分配更高的權(quán)重從而更加強(qiáng)調(diào)這些向量場。例如在多模態(tài)搜索中圖片的文字描述可能比圖片的顏色更重要。使用 WeightedRanker 策略時(shí)需要在WeightedRanker函數(shù)中輸入權(quán)重值?;旌纤阉髦械幕?ANN 搜索次數(shù)與需要輸入的值的次數(shù)相對應(yīng)。輸入值的范圍應(yīng)為 [0,1]數(shù)值越接近 1 表示重要性越高。from pymilvus import WeightedRanker rerank WeightedRanker(0.8, 0.3)RRFRanker倒數(shù)排序融合在沒有特定重點(diǎn)的情況下建議采用這種策略。RRF 可以有效平衡每個(gè)向量場的重要性。RRFRanker的核心思想是根據(jù)每個(gè)結(jié)果在其檢索列表中的排名位置來計(jì)算分?jǐn)?shù)。具體而言算法使用以下公式為每個(gè)結(jié)果分配分?jǐn)?shù)d表示文檔。N表示不同檢索路徑的數(shù)量。ranki(d)表示文檔d在第i個(gè)檢索器中的排名位置從0開始計(jì)數(shù)。k是一個(gè)平滑參數(shù)用于控制隨著排名增加分?jǐn)?shù)的降低速度。默認(rèn)值通常設(shè)置為60。使用 RRFRanker 策略時(shí)需要將參數(shù)值k輸入 RRFRanker。k的默認(rèn)值為 60。該參數(shù)有助于確定如何組合來自不同 ANN 搜索的排名目的是平衡和混合所有搜索的重要性from pymilvus import RRFRanker ? ranker RRFRanker(100)代碼實(shí)現(xiàn)def complex_query(): # # 定義schema ? schema client.create_schema(enable_dynamic_fieldFalse) schema.add_field(field_namefilm_id, datatypeDataType.INT64, is_primaryTrue) schema.add_field(field_namefilmVector, datatypeDataType.FLOAT_VECTOR, dim5) # 向量字段 schema.add_field(field_nameposterVector, datatypeDataType.FLOAT_VECTOR, dim5) # 向量字段 # # # 定義索引 index_params client.prepare_index_params() index_params.add_index(field_namefilmVector, index_typeIVF_FLAT, metric_typeL2, params{nlist: 128}) index_params.add_index(field_nameposterVector, index_type, metric_typeCOSINE) ? # 創(chuàng)建集合 client.create_collection(collection_namedemo_v3, schemaschema, index_paramsindex_params) ? # 向量庫中插入實(shí)體 entities [] for _ in range(1000): # 構(gòu)造實(shí)體 film_id random.randint(1, 10000) film_vector [random.random() for _ in range(5)] poster_vector [random.random() for _ in range(5)] entity {film_id: film_id, filmVector: film_vector, posterVector: poster_vector} entities.append(entity) ? client.insert(collection_namedemo_v3, dataentities) ? # 多向量查詢注意和批量向量查詢不同 # 多向量搜索使用 hybrid_search() API 在一次調(diào)用中執(zhí)行多個(gè) ANN 搜索請求。每個(gè) AnnSearchRequest 代表特定矢量場上的單個(gè)搜索請求。 # 示例創(chuàng)建兩個(gè) AnnSearchRequest 實(shí)例以對兩個(gè)向量字段執(zhí)行單獨(dú)的相似性搜索。 # 創(chuàng)建多搜索請求 filmVector query_filmVector [[0.8896863042430693, 0.370613100114602, 0.23779315077113428, 0.38227915951132996, 0.5997064603128835]] dense_search_params {data: query_filmVector, anns_field: filmVector,# 該參數(shù)值必須與集合模式中使用的值相同。 param: {metric_type: L2, nprobe: 10},# nprobe代表訪問簇的數(shù)量 limit: 2} request_1 AnnSearchRequest(**dense_search_params) ? # 創(chuàng)建多搜索請求 posterVector query_posterVector [[0.02550758562349764, 0.006085637357292062, 0.5325251250159071, 0.7676432650114147, 0.5521074424751443]] sparse_search_params {data: query_posterVector, anns_field: posterVector, # 該參數(shù)值必須與集合模式中使用的值相同。 param: {metric_type: COSINE}, limit: 2 } request_2 AnnSearchRequest(**sparse_search_params) ? reqs [request_1, request_2] ranker RRFRanker(100) ? res client.hybrid_search( collection_namedemo_v3, reqsreqs, rankerranker, limit2 ) for hits in res: print(TopK results:) for hit in hits: print(hit)四加載現(xiàn)有數(shù)據(jù)由于 Milvus Lite 的所有數(shù)據(jù)都存儲(chǔ)在本地文件中因此即使在程序終止后你也可以通過創(chuàng)建一個(gè)帶有現(xiàn)有文件的MilvusClient將所有數(shù)據(jù)加載到內(nèi)存中。例如這將恢復(fù) milvus_demo.db 文件中的 Collections并繼續(xù)向其中寫入數(shù)據(jù)。from pymilvus import MilvusClient ? client MilvusClient(milvus_demo.db)五刪除Collections如果想刪除某個(gè) Collections 中的所有數(shù)據(jù)可以通過以下方法丟棄該 Collections# Drop collection client.drop_collection(collection_namedemo_collection)
版權(quán)聲明: 本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請聯(lián)系我們進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

客戶做網(wǎng)站一定報(bào)價(jià)怎么辦貝殼房源網(wǎng)

客戶做網(wǎng)站一定報(bào)價(jià)怎么辦,貝殼房源網(wǎng),做網(wǎng)站的動(dòng)態(tài)圖片,崇左網(wǎng)頁設(shè)計(jì)文檔自動(dòng)化革命#xff1a;Document-Generator打造開源項(xiàng)目專業(yè)文檔 【免費(fèi)下載鏈接】obs-vst Use VST

2026/01/22 21:16:02

檢察機(jī)關(guān)加強(qiáng)網(wǎng)站建設(shè)網(wǎng)站建設(shè)制作做網(wǎng)站優(yōu)化推廣公司

檢察機(jī)關(guān)加強(qiáng)網(wǎng)站建設(shè),網(wǎng)站建設(shè)制作做網(wǎng)站優(yōu)化推廣公司,wordpress網(wǎng)站白屏,視頻網(wǎng)站公共關(guān)系怎么做在數(shù)字化轉(zhuǎn)型浪潮中#xff0c;虛擬仿真技術(shù)已成為工業(yè)制造、智慧城市、教育培訓(xùn)、醫(yī)療仿真等多個(gè)領(lǐng)

2026/01/23 07:44:01

個(gè)人網(wǎng)站備案不通過飛浪網(wǎng)站建設(shè)

個(gè)人網(wǎng)站備案不通過,飛浪網(wǎng)站建設(shè),遼寧網(wǎng)站建站系統(tǒng)平臺,中小型網(wǎng)站建設(shè)與管理總結(jié)系統(tǒng)自動(dòng)化監(jiān)控與快照腳本指南 1. 通知方式與自動(dòng)化執(zhí)行 在系統(tǒng)監(jiān)控與管理中,有時(shí)你可能需要將通知方式更改為其他方法

2026/01/23 05:48:01

外貿(mào)式響應(yīng)式網(wǎng)站十種營銷方式

外貿(mào)式響應(yīng)式網(wǎng)站,十種營銷方式,網(wǎng)頁美工設(shè)計(jì)店鋪頁首制作過程,重慶哪里有做網(wǎng)絡(luò)推廣9.4 實(shí)戰(zhàn):使用自己的數(shù)據(jù)集做 Stable Diffusion 的 LoRA 模型微調(diào) 引言 在上一節(jié)中,我們

2026/01/23 01:46:01