與多語言E5-Large和Jina嵌入雙子座的比較
Gemini Embedding:谷歌Gemini AI框架下的多語言文本嵌入模型
對於印地語等印度語系的自然語言處理(NLP) 任務(如機器翻譯、問答和信息檢索)而言,詞嵌入至關重要。這些嵌入捕捉單詞的語義屬性,從而實現更準確、更注重語境的NLP 應用。鑑於印地語使用者眾多且印度語係數字內容日益增長,高質量的嵌入對於提高這些語言的NLP 性能至關重要。定制化的嵌入可以特別解決印度語系的獨特語言特徵和資源限制問題。新發布的Gemini Embedding 模型代表了多語言文本嵌入的重大進步,它利用谷歌強大的Gemini AI 框架,在100 多種語言中實現了最先進的性能。
Gemini Embedding 模型擅長分類、檢索和語義搜索等任務,提供更高的效率和準確性。通過支持更大的輸入規模和更高維度的輸出,Gemini Embedding 提供更豐富的文本表示,使其能夠廣泛應用於各種應用。
學習目標
- 了解Gemini 嵌入及其與Gemini LLM 的集成。
- 使用Gemini 嵌入檢索印地語文檔的實踐教程。
- 與Jina AI 嵌入和Multilingual-e5-large 的比較分析。
- 對多語言文本檢索能力和應用的見解。
*本文作為***數據科學博客馬拉松的一部分發表。 ***
目錄
- 什麼是Gemini 嵌入?
- Gemini 嵌入的關鍵特性
- Gemini 嵌入的模型架構
- 與其他多語言嵌入模型的比較
- 使用Gemini 嵌入進行檢索,並與Jina AI 嵌入和Multilingual-e5-large 進行比較
- 步驟1. 安裝必要的庫
- 步驟2. 加載數據
- 步驟3. 對數據進行分塊
- 步驟4. 將數據存儲在向量數據庫中
- 步驟5. 查詢數據庫
- 步驟6. 與Jina AI 嵌入進行比較
- 嵌入檢索輸出的比較
- 解釋
- 結論
- 常見問題
什麼是Gemini 嵌入?
2025 年3 月,谷歌發布了一個新的實驗性Gemini Embedding 文本模型(gemini-embedding-exp-03-07),可在Gemini API 中使用。
該高級嵌入模型源於Gemini 模型,據稱繼承了Gemini 對語言和細微語境細微差別的深刻理解,使其能夠廣泛應用於各種應用。它在MTEB 多語言排行榜上佔據榜首。
Gemini Embedding 將文本表示為密集向量,其中語義相似的文本輸入映射到向量空間中彼此靠近的向量。目前,它支持100 多種語言,其嵌入可用於各種任務,例如檢索和分類。
Gemini 嵌入的關鍵特性
- 強大的多語言能力: 該模型在100 多種語言中展現出卓越的性能,不僅在英語等高資源語言中表現出色,而且在阿薩姆語和馬其頓語等低資源語言中也表現出色。
- 處理多達8000 個輸入標記: 這種強大的能力使模型能夠無縫處理冗長的文檔或複雜的查詢,而不會截斷,從而以超越許多現有嵌入模型的方式保持上下文和含義。
- 3K 維的輸出維度: 該模型生成的嵌入維度高達3072,並支持768 和1536 等子維度,以便進行特定於任務的優化。
- 令人印象深刻的性能: Gemini Embedding 在海量文本嵌入基準測試(MTEB) 中排名第一,平均任務得分為68.32,大大超過了其最接近的競爭對手。
Gemini 嵌入的模型架構
Gemini Embedding 的核心是基於Transformer 架構,並從Gemini LLM 初始化。這個基礎為模型提供了對語言結構和語義的深刻理解。該模型使用雙向注意力機制來處理輸入序列,使其在生成嵌入時能夠考慮單詞或短語的完整上下文。
- 輸入序列T 由M(一個具有雙向注意力的Transformer,從Gemini 初始化)處理,產生一個標記嵌入序列。
- 為了生成一個表示輸入中所有信息的單個嵌入,應用池化函數。
- 最後,應用線性投影將嵌入縮放至目標維度,從而產生最終輸出嵌入。
損失函數: Gemini Embedding 模型使用帶批內負例的噪聲對比估計(NCE) 損失進行訓練。確切的損失會根據訓練階段略有不同。一般來說,一個訓練示例包括一個查詢、一個正目標和(可選)一個難負目標。
訓練策略
- 預微調: 在此階段,模型在一個包含查詢-目標對的大型多樣化數據集上進行訓練。這種曝光調整大型語言模型的參數以進行編碼任務,為其適應性奠定基礎。
- 微調: 在第二階段,模型使用包含查詢-正例-難負例三元組的特定於任務的數據集進行微調。此過程使用較小的批量大小和精心策劃的數據集來提高目標任務的性能。
另請閱讀:Gemini Embedding:來自Gemini 的通用嵌入
與其他多語言嵌入模型的比較
我們將印地語文檔的檢索與新發布的最新Gemini 嵌入進行比較,然後將其與Jina AI 嵌入和Multilingual-e5-large 嵌入進行比較。如下表所示,就最大標記數而言,Gemini 嵌入和Jina AI 嵌入很高,使模型能夠處理長文檔或複雜的查詢。此外,如下表所示,Gemini 嵌入具有更高的嵌入維度,可以捕捉單詞之間更細緻和更細微的語義關係,使模型能夠表示複雜的語言模式和含義的細微差別。
參數數量 | 嵌入維度 | 最大標記 | 語言數量 | 套娃嵌入 | |
gemini-embedding-exp-03-07 | 未知 | 3072 | 8192 | 100 | 支持將嵌入截斷為各種尺寸,例如2048、1024、512、256 和128 維度, |
jinaai/jina-embeddings-v3 | 5.72 億 | 1024 | 8194 | 100 | 支持靈活的嵌入大小(32、64、128、256、512、768、1024),允許截斷嵌入以適應您的應用程序 |
multilingual-e5-large-instruct | 5.6 億 | 1024 | 514 | 94 | NA |
使用Gemini 嵌入進行檢索,並與Jina AI 嵌入和Multilingual-e5-large 進行比較
在以下實踐教程中,我們將印地語文檔的檢索與新發布的最新Gemini 嵌入進行比較,然後將其與Jina AI 嵌入和Multilingual-e5-large 嵌入進行比較。
步驟1. 安裝必要的庫
<code>!pip install langchain-community !pip install chromadb</code>
步驟2. 加載數據
我們使用來自網站的印地語數據來評估Gemini 嵌入在印地語語言檢索方面的性能。
<code>from langchain_community.document_loaders import WebBaseLoader loader = WebBaseLoader("https://ckbirlahospitals.com/rbh/blog/pregnancy-early-symptoms-in-hindi") data = loader.load()</code>
步驟3. 對數據進行分塊
下面的代碼使用RecursiveCharacterTextSplitter 將大型文本文檔拆分成500 個字符的小塊,沒有重疊。然後,它將此拆分應用於datavariable 並將結果存儲在all_splits 中。由於Gemini Embedding API 的速率限制,我們只使用10 個拆分。
<code>from langchain_text_splitters import RecursiveCharacterTextSplitter text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=0) all_splits = text_splitter.split_documents(data) all_splits = all_splits[:10]</code>
步驟4. 將數據存儲在向量數據庫中
我們首先創建一個名為“GeminiEmbeddingFunction”的類,它有助於查詢Gemini Embedding API 並返回輸入查詢的嵌入值。然後,我們創建一個名為“create_chroma_db”的函數,用於在ChromaDB 中創建一個集合,該集合將存儲數據以及嵌入。
<code>import chromadb from chromadb import Documents, EmbeddingFunction, Embeddings class GeminiEmbeddingFunction(EmbeddingFunction): def __call__(self, input: Documents) -> Embeddings: title = "Custom query" return client.models.embed_content( model="gemini-embedding-exp-03-07", contents=input).embeddings[0].values def create_chroma_db(documents, name): chroma_client = chromadb.Client() db = chroma_client.create_collection(name=name, embedding_function=GeminiEmbeddingFunction()) for i, d in enumerate(documents): db.add( documents=d.page_content, ids=str(i) ) return db db = create_chroma_db(all_splits, "datab")</code>
步驟5. 查詢數據庫
<code>def get_relevant_passage(query, db): passage = db.query(query_texts=[query], n_results=1)['documents'][0][0] return passage passage = get_relevant_passage("आपको प्रेगनेंसी टेस्ट कब करवाना चाहिए?", db) print(passage)</code>
步驟6. 與Jina AI 嵌入進行比較
下面的代碼使用Hugging Face transformer 模型定義了一個自定義嵌入函數,以及一種處理文本輸入以生成嵌入的方法。
- 來自transformers 的AutoTokenizer 和AutoModel 用於加載預訓練模型(jinaai/jina-embeddings-v3),並從chromadb 導入EmbeddingFunction 用於創建自定義嵌入。
- average_pool 函數:此函數通過對模型的隱藏狀態執行池化操作來聚合它們,在考慮注意力掩碼(忽略填充標記)的同時對序列長度取平均值。
- CustomHuggingFace 類:它對文本進行標記化,將其饋送到模型中,並使用average_pool 函數計算嵌入。結果作為嵌入列表返回。
<code>from transformers import AutoTokenizer, AutoModel from chromadb import EmbeddingFunction tokenizer = AutoTokenizer.from_pretrained('jinaai/jina-embeddings-v3') model = AutoModel.from_pretrained('jinaai/jina-embeddings-v3') # the model returns many hidden states per document so we must aggregate them def average_pool(last_hidden_states, attention_mask): last_hidden = last_hidden_states.masked_fill(~attention_mask[...,None].bool(), 0.0) return last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[...,None] class CustomHuggingFace(EmbeddingFunction): def __call__(self, texts): queries = [f'query: {text}' for text in texts] batch_dict = tokenizer(texts, max_length=512, padding=True, truncation=True, return_tensors='pt') outputs = model(**batch_dict) embeddings = average_pool(outputs.last_hidden_state, batch_dict['attention_mask']) return embeddings.tolist()</code>
查詢
<code>def get_relevant_passage(query, db): passage = db.query(query_texts=[query], n_results=1)['documents'][0][0] return passage passage = get_relevant_passage("आपको प्रेगनेंसी टेस्ट कब करवाना चाहिए?", db) print(passage)</code>
對於選擇Multilingual-e5-large 嵌入,我們只需將標記器和模型替換為“intfloat/multilingual-e5-large-instruct”。
嵌入檢索輸出的比較
問題編號 | 查詢 | Gemini 嵌入 | jinaai/jina-embeddings-v3 | intfloat/multilingual-e5-large-instruct |
1 | आपको प्रेगनेंसी टेस्ट कब करवाना चाहिए? | 如果您想詳細了解懷孕的早期症狀,那麼這篇博文非常適合您。您應該何時進行懷孕測試? –錯誤 | 如果您想詳細了解懷孕的早期症狀,那麼這篇博文非常適合您。您應該何時進行懷孕測試? –錯誤 | 如果您想詳細了解懷孕的早期症狀,那麼這篇博文非常適合您。您應該何時進行懷孕測試? –錯誤 |
2 | Pregnancy के kuch symptoms क्या होते हैं? | 懷孕的早期症狀是什麼?在懷孕期間,女性體內會發生許多荷爾蒙變化。懷孕的早期症狀包括噁心、嘔吐、頻繁排尿和疲勞等,我們將在本博文中討論這些症狀。 –正確 | 懷孕的跡象:早期症狀的完整信息!主頁快速諮詢患者登錄聯繫我們:08062136530 緊急電話:07340054470 打開主菜單服務患者和訪客國際患者關於我們預約回電WhatsApp 了解懷孕的早期症狀。婦產科|作者:CP Dadhich 博士| 發布日期:2025 年2 月6 日目錄您應該何時進行懷孕測試?懷孕的早期症狀是什麼?懷孕的早期症狀懷孕的–錯誤 | 懷孕的早期症狀是什麼?在懷孕期間,女性體內會發生許多荷爾蒙變化。懷孕的早期症狀包括噁心、嘔吐、頻繁排尿和疲勞等,我們將在本博文中討論這些症狀。 –正確 |
3 | गर्भावस्था के दौरान एंटीबायोटिक दवा लेने से कब बचना चाहिए? | 在懷孕的最初幾天,卵子與精子受精,導致出血和腹痛等症狀。在此期間,為了健康懷孕,建議女性避免服用抗生素,因為這可能會對母親和嬰兒造成危險。懷孕的早期症狀並非總是月經推遲或嘔吐。此外,還可能出現其他症狀,需要特別注意,例如–正確 | 在懷孕的最初幾天,卵子與精子受精,導致出血和腹痛等症狀。在此期間,為了健康懷孕,建議女性避免服用抗生素,因為這可能會對母親和嬰兒造成危險。懷孕的早期症狀並非總是月經推遲或嘔吐。此外,還可能出現其他症狀,需要特別注意,例如–正確 | 每個女性都應該了解的內容。對於任何與懷孕相關的疑問,我們建議您聯繫我們的婦科醫生,消除所有並發症。 –錯誤 |
4 | कब गर्भावस्था में एंटीबायोटिक दवा लेने से बचाया जाए? | 在懷孕的最初幾天,卵子與精子受精,導致出血和腹痛等症狀。在此期間,為了健康懷孕,建議女性避免服用抗生素,因為這可能會對母親和嬰兒造成危險。懷孕的早期症狀並非總是月經推遲或嘔吐。此外,還可能出現其他症狀,需要特別注意,例如–正確 | 在懷孕的最初幾天,卵子與精子受精,導致出血和腹痛等症狀。在此期間,為了健康懷孕,建議女性避免服用抗生素,因為這可能會對母親和嬰兒造成危險。懷孕的早期症狀並非總是月經推遲或嘔吐。此外,還可能出現其他症狀,需要特別注意,例如–正確 | 每個女性都應該了解的內容。對於任何與懷孕相關的疑問,我們建議您聯繫我們的婦科醫生,消除所有並發症。 –錯誤 |
5 | गर्भधारण का सबसे पहला सामान्य लक्षण क्या है? | 月經推遲:這是懷孕的最早和最常見的症狀。僅根據此症狀來確認懷孕並不完全正確。但是,如果月經推遲一周或更長時間,建議進行懷孕測試。乳房變化:懷孕期間,乳房會腫脹、變嫩或顏色發生變化。主要是在乳頭(乳暈)的大小和顏色上發生變化。 –正確 | 考慮到這一點,如何確認懷孕?懷孕第一個月如何護理?如何進行懷孕檢查?懷孕期間應該如何坐?懷孕期間應該發生性行為嗎?懷孕期間應該吃什麼水果?懷孕期間應該喝多少水?成為母親的快樂是世界上最大的快樂。懷孕期間,女性的身體和心理都會發生許多變化。您將這些變化稱為懷孕的早期症狀,–錯誤 | 懷孕的早期症狀是什麼?在懷孕期間,女性體內會發生許多荷爾蒙變化。懷孕的早期症狀包括噁心、嘔吐、頻繁排尿和疲勞等,我們將在本博文中討論這些症狀。 –正確 |
6 | गर्भधारण के पहले संकेत क्या होते हैं? | 懷孕的跡象:早期症狀的完整信息!主頁快速諮詢患者登錄聯繫我們:08062136530 緊急電話:07340054470 打開主菜單服務患者和訪客國際患者關於我們預約回電WhatsApp 了解懷孕的早期症狀。婦產科|作者:CP Dadhich 博士| 發布日期:2025 年2 月6 日目錄您應該何時進行懷孕測試?懷孕的早期症狀是什麼?懷孕的早期症狀懷孕的–錯誤 | 考慮到這一點,如何確認懷孕?懷孕第一個月如何護理?如何進行懷孕檢查?懷孕期間應該如何坐?懷孕期間應該發生性行為嗎?懷孕期間應該吃什麼水果?懷孕期間應該喝多少水?成為母親的快樂是世界上最大的快樂。懷孕期間,女性的身體和心理都會發生許多變化。您將這些變化稱為懷孕的早期症狀,–錯誤 | 懷孕的早期症狀是什麼?在懷孕期間,女性體內會發生許多荷爾蒙變化。懷孕的早期症狀包括噁心、嘔吐、頻繁排尿和疲勞等,我們將在本博文中討論這些症狀。 –正確 |
7 | गर्भावस्था की पुष्टि के लिए कौन से हार्मोन का पता लगाना होता है? | 進行懷孕測試的最佳時間是在月經推遲至少7 天后。您可以使用家用懷孕測試工具在家中檢測hCG 水平。在懷孕期間,這種激素的水平會顯著升高。您需要注意的一點是,過早進行測試也可能導致錯誤的結果,因此,如果您的月經推遲並且測試結果為陰性,建議您至少再等3 天,然後再次進行測試。 –正確 | 這樣做也有正確的方法,您也可以在測試工具說明書上看到。為了獲得準確的結果,您應該使用早晨的第一泡尿,因為這時可以測量hCG 激素的正確水平。此外,如果您經歷了懷孕的早期症狀,並且測試結果為陰性,請立即去看醫生進行血液測試。在任何情況下,如有任何疑問,都必須諮詢醫生。 –正確 | 懷孕的早期症狀是什麼?在懷孕期間,女性體內會發生許多荷爾蒙變化。懷孕的早期症狀包括噁心、嘔吐、頻繁排尿和疲勞等,我們將在本博文中討論這些症狀。 –錯誤 |
解釋
從上述印地語輸出中可以看出,使用Gemini 嵌入,我們從7 個查詢中得到了5 個正確的輸出,而使用Jina AI 嵌入和Multilingual-e5-large,我們只得到了3 個正確的響應。
這表明,正如MTEB 基準測試所反映的那樣,Gemini 嵌入可以很好地執行,並且比其他嵌入模型更好地處理印地語等多語言。
結論
總之,Gemini 嵌入代表了多語言NLP 的重大進步,特別是對於印地語等印度語系語言。憑藉其強大的多語言能力、對大型輸入尺寸的支持以及在MTEB 等基準測試中的卓越性能,Gemini 在檢索、分類和語義搜索等任務中表現出色。通過實踐比較可以看出,Gemini 的性能優於其他模型,提供更高的準確性和效率,使其成為促進多種語言NLP 的寶貴工具。
主要收穫
- 印地語系語言詞嵌入的重要性: 高質量的嵌入增強了翻譯、問答和檢索等NLP 任務,解決了語言挑戰和資源差距問題。
- Gemini Embedding 模型: 谷歌的Gemini 嵌入利用其AI 框架進行多語言文本處理,涵蓋100 多種語言,包括低資源語言。
- 關鍵特性: 支持8000 個標記和3072 維嵌入,能夠高效處理長文檔和復雜查詢。
- 令人印象深刻的性能: 在MTEB 多語言排行榜上排名第一,平均任務得分為68.32,展示了其在多語言NLP 中的強大功能。
本文中顯示的媒體並非Analytics Vidhya 所有,作者可自行決定使用。
常見問題
Q1. 什麼是Gemini Embedding 模型?答:Gemini Embedding 模型基於谷歌的Gemini AI,為包括印地語在內的100 多種語言提供頂級多語言文本嵌入。
Q2. 與其他模型相比,Gemini Embedding 的獨特之處是什麼?答:Gemini Embedding 在多語言支持方面表現出色,可以處理8000 個標記,並輸出3072 維,確保在分類、檢索和語義搜索方面的效率。
Q3. Gemini Embedding 在多語言任務中的表現如何?答:Gemini Embedding 在英語等高資源語言和阿薩姆語、馬其頓語等低資源語言中的表現都很好。它在MTEB 多語言排行榜上排名第一,展示了其強大的多語言能力。
Q4. Gemini Embedding 模型的架構是什麼?答:該模型從Gemini LLM 初始化,使用具有雙向注意力的Transformer 架構來生成高質量的文本嵌入,捕捉上下文和含義。
Q5. Gemini Embedding 模型是如何訓練的?答:Gemini Embedding 使用帶批內負例的噪聲對比估計(NCE) 損失進行訓練。它經歷了兩個訓練階段:在一個大型數據集上進行預微調,並在特定於任務的數據集上進行微調,以提高NLP 性能。
以上是與多語言E5-Large和Jina嵌入雙子座的比較的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

本文回顧了AI最高的藝術生成器,討論了他們的功能,對創意項目的適用性和價值。它重點介紹了Midjourney是專業人士的最佳價值,並建議使用Dall-E 2進行高質量的可定製藝術。

Meta的Llama 3.2:多模式和移動AI的飛躍 Meta最近公佈了Llama 3.2,這是AI的重大進步,具有強大的視覺功能和針對移動設備優化的輕量級文本模型。 以成功為基礎

本文比較了諸如Chatgpt,Gemini和Claude之類的頂級AI聊天機器人,重點介紹了其獨特功能,自定義選項以及自然語言處理和可靠性的性能。

嘿,編碼忍者!您當天計劃哪些與編碼有關的任務?在您進一步研究此博客之前,我希望您考慮所有與編碼相關的困境,這是將其列出的。 完畢? - 讓&#8217

文章討論了Grammarly,Jasper,Copy.ai,Writesonic和Rytr等AI最高的寫作助手,重點介紹了其獨特的內容創建功能。它認為Jasper在SEO優化方面表現出色,而AI工具有助於保持音調的組成

Shopify首席執行官TobiLütke最近的備忘錄大膽地宣布AI對每位員工的基本期望是公司內部的重大文化轉變。 這不是短暫的趨勢。這是整合到P中的新操作範式

本週的AI景觀:進步,道德考慮和監管辯論的旋風。 OpenAI,Google,Meta和Microsoft等主要參與者已經釋放了一系列更新,從開創性的新車型到LE的關鍵轉變

本文評論了Google Cloud,Amazon Polly,Microsoft Azure,IBM Watson和Discript等高級AI語音生成器,重點介紹其功能,語音質量和滿足不同需求的適用性。
