Milvus 視角看主流嵌入式模型(Embeddings)

嵌入是一種機器學習概念,用于將數據映射到高維空間,其中語義相似的數據被緊密排列在一起。嵌入模型通常是 BERT 或其他 Transformer 系列的深度神經網絡,它能夠有效地用一系列數字(稱為向量)來表示文本、圖像和其他數據類型的語義。這些模型的一個關鍵特性是,高維空間中向量之間的數學距離可以指示原始文本或圖像語義的相似性。這一特性解鎖了許多信息檢索應用,例如 Google 和 Bing 等網絡搜索引擎、電商網站上的產品搜索和推薦,以及最近流行的生成式人工智能中的檢索增強生成 (RAG) 范式。

嵌入主要有兩種類別,每種類別都會產生不同類型的向量:

  • 密集嵌入:大多數嵌入模型將信息表示為數百到數千維的浮點向量。由于大多數維度都具有非零值,因此輸出被稱為“密集”向量。例如,流行的開源嵌入模型 BAAI/bge-base-en-v1.5 輸出 768 個浮點數的向量(768 維浮點向量)。

  • 稀疏嵌入:相比之下,稀疏嵌入的輸出向量大多數維度為零,即“稀疏”向量。這些向量通常具有更高的維度(數萬甚至更高),這取決于標記詞匯量的大小。稀疏向量可以通過深度神經網絡或文本語料庫的統計分析生成。由于稀疏嵌入具有可解釋性且在領域外具有更佳的泛化能力,它越來越多地被開發人員用作密集嵌入的補充。

Milvus 是一款專為矢量數據管理、存儲和檢索而設計的矢量數據庫。通過集成主流的嵌入和重排序模型,您可以輕松地將原始文本轉換為可搜索的向量,或使用強大的模型對結果進行重排序,從而為 RAG 獲得更準確的結果。這種集成簡化了文本轉換,無需額外的嵌入或重排序組件,從而簡化了 RAG 的開發和驗證。

要實際創建嵌入,請參閱使用 PyMilvus 的模型生成文本嵌入。

Embedding FunctionTypeAPI or Open-sourced
openaiDenseAPI
sentence-transformerDenseOpen-sourced
SpladeSparseOpen-sourced
bge-m3HybridOpen-sourced
voyageaiDenseAPI
jinaDenseAPI
cohereDenseAPI
InstructorDenseOpen-sourced
Mistral AIDenseAPI
NomicDenseAPI
mGTEHybridOpen-sourced
Model2VecHybridOpen-sourced
GeminiHybridPrivate

示例 1:使用默認嵌入函數生成密集向量

要在 Milvus 中使用嵌入函數,首先安裝 PyMilvus 客戶端庫以及model包含所有用于嵌入生成的實用程序的子包。

pip install "pymilvus[model]"

model子包支持各種嵌入模型,從OpenAI、Sentence Transformers、BGE M3到SPLADE預訓練模型。為簡單起見,本示例使用了DefaultEmbeddingFunctionMiniLM-L6-v2句子 Transformer 模型,該模型大小約為 70MB,首次使用時需要下載:

from pymilvus import model# This will download "all-MiniLM-L6-v2", a light weight model.
ef = model.DefaultEmbeddingFunction()# Data from which embeddings are to be generated 
docs = ["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.",
]embeddings = ef.encode_documents(docs)# Print embeddings
print("Embeddings:", embeddings)
# Print dimension and shape of embeddings
print("Dim:", ef.dim, embeddings[0].shape)

預期輸出類似于以下內容:

Embeddings: [array([-3.09392996e-02, -1.80662833e-02,  1.34775648e-02,  2.77156215e-02,-4.86349640e-03, -3.12581174e-02, -3.55921760e-02,  5.76934684e-03,2.80773244e-03,  1.35783911e-01,  3.59678417e-02,  6.17732145e-02,
...-4.61330153e-02, -4.85207550e-02,  3.13997865e-02,  7.82178566e-02,-4.75336798e-02,  5.21207601e-02,  9.04406682e-02, -5.36676683e-02],dtype=float32)]
Dim: 384 (384,)

示例 2:使用 BGE M3 模型在一次調用中生成密集和稀疏向量

在本例中,我們使用BGE M3混合模型將文本嵌入到密集向量和稀疏向量中,并利用它們檢索相關文檔。總體步驟如下:

  1. 使用 BGE-M3 模型將文本嵌入為密集和稀疏向量;

  2. 建立一個 Milvus 集合來存儲稠密向量和稀疏向量;

  3. 將數據插入到Milvus;

  4. 搜索并檢查結果。

首先,我們需要安裝必要的依賴項。

from pymilvus.model.hybrid import BGEM3EmbeddingFunction
from pymilvus import (utility,FieldSchema, CollectionSchema, DataType,Collection, AnnSearchRequest, RRFRanker, connections,
)

使用 BGE M3 對文檔和查詢進行編碼以進行嵌入檢索。

# 1. prepare a small corpus to search
docs = ["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.",
]
query = "Who started AI research?"# BGE-M3 model can embed texts as dense and sparse vectors.
# It is included in the optional `model` module in pymilvus, to install it,
# simply run "pip install pymilvus[model]".bge_m3_ef = BGEM3EmbeddingFunction(use_fp16=False, device="cpu")docs_embeddings = bge_m3_ef(docs)
query_embeddings = bge_m3_ef([query])

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/83110.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/83110.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/83110.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【MySQL】牛客網sql語句簡單例題,sql入門

目錄 一、基礎查詢 1、查詢所有列 2、 查詢多列 二、簡單處理查詢結果 1、查詢結果去重 2、查詢結果限制返回列數 3、將查詢后的列重新命名 三、條件查詢之基礎排序 1、查找后排序 2、 查找后多列排序 3、查找后降序排列 四、條件查詢之基礎操作符 1、查找學校是北…

Linux云計算訓練營筆記day06(Windows DOS下的常用命令 及 HTML)

windows dos命令行 切換盤符 d: 查看文件夾下的內容 dir 創建文件夾 md/mkdir gongli 進入文件夾 cd gongli 往回退一層 cd .. 清屏 cls 歷史命令(用鍵盤的上下鍵) 創建一個空的文件 echo.>a.txt 寫入內容到文件中 echo hello world > b.txt 刪除文件 del a.txt 查…

如何開啟或關閉WordPress的自動更新功能

WordPress是一個開源軟件,您可以從他們的官方網站免費下載。但是,要啟動WordPress站點,您需要安裝一個主題,以幫助為您的內容創建特定布局。此外,您可能還需要安裝一些插件來添加其他功能。 當您必須管理所有這些東西…

SpringSecurity當中的CSRF防范詳解

CSRF防范 什么是CSER 以下是基于 CSRF 攻擊過程的 順序圖 及詳細解釋,結合多個技術文檔中的攻擊流程: CSRF 攻擊順序圖 #mermaid-svg-FqfMBQr8DsGRoY2C {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#m…

給 DBGridEh 增加勾選用的檢查框 CheckBox

需求 Delphi 的 DBGrid 通過 DataSource 綁定到一個 DataSet 顯示數據表里面的 N 多條記錄。如果我想給每條記錄加一個 CheckBox 讓用戶去勾選,該怎么做? 以下描述,使用的 DBGrid 是 DBGrieEh。 Delphi 自帶的 DBGrid 要加 CheckBox 比較麻…

WordPress 和 GPL – 您需要了解的一切

如果您使用 WordPress,GPL 對您來說應該很重要,您也應該了解它。查看有關 WordPress 和 GPL 的最全面指南。 您可能聽說過 GPL(通常被稱為 WordPress 的權利法案),但很可能并不完全了解它。這是有道理的–這是一個復雜…

力扣144題:二叉樹的前序遍歷(遞歸)

小學生一枚,自學信奧中,沒參加培訓機構,所以命名不規范、代碼不優美是在所難免的,歡迎指正。 標簽: 二叉樹、前序遍歷、遞歸 語言: C 題目: 給你二叉樹的根節點root,返回它節點值…

python:一個代理流量監控的媒體文件下載腳本

前言 一個mitmproxy代理服務應用,作用是監聽系統流量,并自動下載可能的video媒體文件到本地。 如果你沒有安裝mitmproxy或沒有做完準備工作,請參考我的這篇文章: python:mitmproxy代理服務搭建-CSDN博客 文件架構目錄…

SAP Business One(B1)打開自定義對象報錯【Failed to initialize document numbering:】

業務場景: 新版本的客戶端,打開已經注冊的自定義單據類型的表的時候,報錯【Failed to initialize document numbering:】。 但是注冊的自定義主數據類型的表,不會有問題。 解決方案: 打開【管理-系統初始化-常規設置…

計算機網絡:WiFi路由器發射的電磁波在空氣中的狀態是什么樣的?

WiFi路由器發射的電磁波是高頻無線電波,屬于微波頻段(2.4GHz或5GHz),在空氣中以光速傳播(約310?米/秒),其傳播狀態和特性可通過以下維度詳細解析: 一、電磁波的物理特性 頻率與波長 2.4GHz頻段:波長約12.5厘米,穿透力較強但易受干擾(微波爐、藍牙等共用頻段)。5GH…

騰訊云-人臉核身+人臉識別教程

一。產品概述 慧眼人臉核身特惠活動 騰訊云慧眼人臉核身是一組對用戶身份信息真實性進行驗證審核的服務套件,提供人臉核身、身份信息核驗、銀行卡要素核驗和運營商類要素核驗等各類實名信息認證能力,以解決行業內大量對用戶身份信息真實性核實的需求&a…

tocmat 啟動怎么設置 jvm和gc

在生產環境中部署 Java Web 應用時,我們經常需要給 Tomcat 設置 JVM 參數和 GC 策略,以提高性能、穩定性和可觀察性。以下是完整教程: 一、Tomcat 設置 JVM 啟動參數的方式 1. 修改 startup 腳本(推薦) 以 Linux 系統…

zuoyyyeee

實驗拓撲圖 需求分析 1.分配接口ip 2.使用OSPF協議使三臺路由器可達 3.在路由器1,2 /4,5 使用直連接口直接配置EBGP ip配置: [R1]: bgp 100 rid 1.1.1.1 peer 12.0.0.2 as-number 200 network 1.1.1.1 32 [R2]: bgp 200 rid 2.2.2.2 p…

?Element UI 雙擊事件(@cell-dblclick 與 @row-dblclick)

?Element UI 雙擊事件(cell-dblclick 與 row-dblclick) 一、核心雙擊事件綁定? 表格單元格雙擊? ?事件綁定?: 通過 cell-dblclick 監聽單元格雙擊,接收四個參數(row, column, cell, event)。 ?示…

Python爬蟲實戰:研究decrypt()方法解密

1. 引言 1.1 研究背景與意義 在當今數字化時代,網絡數據蘊含著巨大的價值。然而,許多網站為了保護其數據安全和商業利益,會采用各種加密手段對傳輸的數據進行處理。這些加密措施給數據采集工作帶來了巨大挑戰。網絡爬蟲逆向解密技術應運而生,它通過分析和破解網站的加密機…

day014-服務管理

文章目錄 1. 提問的方式1.1 注意事項1.2 start法則-提問/面試 2. systemctl 系統服務管理2.1 開啟和自啟動服務sshd2.2 關閉和永久禁用防火墻2.3 查看服務的狀態2.4 重啟服務2.5 sshd重啟失敗案例 3. localectl 字符集管理3.1 臨時修改語言3.2 永久修改語言3.3 用腳本修改語言 …

【redis】CacheAside的數據不一致性問題

緩存的合理使用確提升了系統的吞吐量和穩定性,然而這是有代價的,這個代價便是緩存和數據庫的一致性帶來了挑戰。 新增數據時,數據直接寫入數據庫,緩存中不存在對應記錄。首次查詢請求會觸發緩存回填,即從數據庫讀取新…

DA14585墨水屏學習

一、do_min_word void do_min_work(void) {timer_used_min app_easy_timer(APP_PERIPHERAL_CTRL_TIMER_DELAY_MINUTES, do_min_work);current_unix_time time_offset;time_offset 60;// if (isconnected 1)// {// GPIO_SetActive(GPIO_LED_PORT, GPIO_LED_PIN);// …

微服務調試問題總結

本地環境調試。 啟動本地微服務,使用公共nacos配置。利用如apifox進行本地代碼調試解決調試問題。除必要的業務微服務依賴包需要下載到本地。使用mvn clean install -DskipTests進行安裝啟動前選擇好profile環境進行啟動,啟動前記得mvn clean清理項目。…

C#學習第22天:網絡編程

網絡編程的核心概念 1. 套接字(Sockets) 定義:套接字是網絡通信的基本單元,提供了在網絡中進行數據交換的端點。用途:用于TCP/UDP網絡通信,支持低級別的網絡數據傳輸。 2.協議 TCP(Transmiss…