搜尋
首頁科技週邊人工智慧向量流:生鏽的記憶效率索引

介紹

正在引入嵌入中的矢量流,該功能旨在優化大規模文檔嵌入。使用RUST的並發啟用異步分解和嵌入可以減少記憶使用情況並加快過程的速度。今天,我將展示如何將其與編織矢量數據庫集成在一起,以進行無縫的圖像嵌入和搜索。

在我的上一篇文章中,用嵌入方式將嵌入式管道增壓起來,我討論了嵌入背後的想法,以及它如何使從多種模式中創建嵌入式。在本文中,我想介紹一個名為矢量流的嵌入的新功能,並查看它如何與Weaviate Vector數據庫一起工作。

向量流:生鏽的記憶效率索引

概述

  • 嵌入式中的矢量流媒體通過異步分解與Rust的並發性優化了大規模文檔的嵌入。
  • 它通過並聯處理塊來解決傳統嵌入方法中的記憶和效率問題。
  • 與Weaviate集成可以使無縫的嵌入和搜索矢量數據庫中。
  • 實現向量流涉及創建數據庫適配器,啟動嵌入模型和嵌入數據。
  • 這種方法為大規模文檔嵌入提供了更高效,可擴展和靈活的解決方案。

目錄

  • 問題是什麼?
  • 我們解決問題的解決方案
  • 示例用嵌入的用例
    • 步驟1:創建適配器
    • 步驟2:創建嵌入模型
    • 步驟3:嵌入目錄
    • 步驟4:查詢矢量數據庫
    • 步驟5:查詢矢量數據庫
    • 輸出
  • 常見問題

問題是什麼?

首先,檢查創建嵌入的當前問題,尤其是在大規模文檔中。當前的嵌入框架在兩個步驟的過程中運行:切塊和嵌入。首先,從所有文件中提取文本,並創建塊/節點。然後,將這些塊饋送到具有特定批量大小的嵌入模型中,以處理嵌入。在完成此操作的同時,塊和嵌入式保留在系統內存上。

當文件和嵌入尺寸很小時,這不是問題。但是,當有很多文件時,這將成為一個問題,並且您正在使用大型模型,更糟糕的是多矢量嵌入。因此,要處理此操作,需要一個高RAM才能處理嵌入。另外,如果同步完成,則在創建塊的同時浪費了很多時間,因為塊並不是計算較重的操作。隨著塊的製作,將它們傳遞到嵌入模型將是有效的。

我們解決問題的解決方案

解決方案是創建一個異步分塊和嵌入任務。我們可以使用Rust的並發模式和線程安全有效地產生螺紋來處理此任務。這是使用RUST的MPSC(多生產者單個消費者)模塊完成的,該模塊通過線程之間傳遞消息。因此,這會創建一塊用緩衝區傳遞到嵌入線的塊流。緩衝區完成後,它將塊嵌入塊並將嵌入式發送回主線程,然後將它們發送到矢量數據庫。這樣可以確保任何一次操作都不會浪費時間,也不會浪費瓶頸。此外,系統僅存儲塊和嵌入緩衝區中的塊,一旦將它們移至矢量數據庫,它們就會從內存中擦除它們。

向量流:生鏽的記憶效率索引

示例用嵌入的用例

現在,讓我們看看此功能中的功能:

使用嵌入,將向量從文件目錄傳輸到矢量數據庫是一個簡單的三步過程。

  1. 為矢量數據庫創建一個適配器:這是圍繞數據庫函數的包裝器,它允許您創建索引,將元數據從embedanything的格式轉換為數據庫所需的格式,以及插入嵌入式的函數。突出數據庫的適配器已經創建並在此處存在。
  1. 啟動您選擇的嵌入模型:您可以從不同的本地模型甚至雲模型中進行選擇。還可以通過設置塊大小和緩衝區大小來確定配置,以一次將多少嵌入。理想情況下,這應該盡可能高,但是系統RAM會限制這一點。
  1. 從嵌入式呼叫嵌入功能:只需傳遞嵌入目錄路徑,嵌入模型,適配器和配置即可。

在此示例中,我們將嵌入圖像目錄並將其發送到向量數據庫。

步驟1:創建適配器

在嵌入內容中,適配器是在外部創建的,以免使圖書館沉重,並且可以選擇要使用的數據庫。這是一個簡單的編織適配器:

從embed_anything Import embeddata

從embed_anything.vectordb導入適配器

weaviateadapter類(適配器):

def __init __(self,api_key,url):

super().__ init __(api_key)

self.client = weaviate.connect_to_weaviate_cloud(

cluster_url = url,auth_credentials = wvc.init.auth.api_key(api_key)

)

如果self.client.is_ready():

打印(“編織已準備就緒”)

def create_index(self,index_name:str):

self.index_name = index_name

self.collection = self.client.collections.create(

index_name,vectorizer_config = wvc.config.configure.vectorizer.none()

)

返回self.Collection

def convert(self,嵌入:列表[embeddata]):

數據= []

用於嵌入嵌入:

屬性=嵌入。 metadata

屬性[“ text”] = embedding.text

data.append(

wvc.data.dataobject(properties =屬性,vector = embedding.embedding)

)

返回數據

def upsert(自我,嵌入):

data = self.convert(嵌入)

self.client.collections.get(self.index_name).data.insert_many(data)

def delete_index(self,index_name:str):

self.client.collections.delete(index_name)

###啟動客戶端和索引

url =“ your-weaviate-url”

api_key =“您的weaviate-api-key”

weaviate_adapter = weaviateadapter(api_key,url)

index_name =“ test_index”

如果weaviate_adapter.client.collections.list_all()中的index_name():

weaviate_adapter.delete_index(index_name)

weaviate_adapter.create_index(“ test_index”)

步驟2:創建嵌入模型

在這裡,由於我們正在嵌入圖像,因此我們可以使用剪輯模型

導入embed_anything inocting wht ymodel

型號= embed_anything.embeddingmodel.from_pretretained_cloud(

embed_anything.thichmodel.clip,

模型_)

步驟3:嵌入目錄

data = embed_anything.embed_image_directory(

“ \ image_directory”,

嵌入式=模型,

適配器= weaviate_adapter,

config = embed_anything.imageembedconfig(buffer_size = 100),

)

步驟4:查詢矢量數據庫

query_vector = embed_anything.embed_query([“貓的圖像”],embeder =型號)[0] .embedding

步驟5:查詢矢量數據庫

響應= weaviate_adapter.collection.query.near_vector(

近_vector = query_vector,

限制= 2,

return_metadata = wvc.query.metadataquery(eslenty = true),

)

檢查響應;

輸出

使用剪輯模型,我們將整個目錄與貓,狗和猴子的圖片進行了矢量。使用簡單的查詢“貓的圖像”,我們能夠搜索所有文件中的貓圖像。

向量流:生鏽的記憶效率索引

在COLAB上查看筆記本中的代碼。

結論

我認為矢量流是使許多工程師能夠選擇更優化和無技術債務解決方案的功能之一。您可以使用輕巧的流媒體選項,而不是在雲上使用笨重的框架。

在此處查看GitHub存儲庫:嵌入倉庫。

常見問題

Q1。嵌入中的矢量流是什麼?

Ans。矢量流是一項功能,可通過使用Rust的並發來優化大規模文檔嵌入,以進行異步分解和嵌入,減少內存使用並加快過程。

Q2。矢量流解決了什麼問題?

Ans。它通過異步處理塊,減少瓶頸並優化資源使用來解決傳統嵌入方法中的高內存使用情況和效率低下。

Q3。向量流如何與編織合作?

Ans。它使用適配器將嵌入到編織矢量數據庫中連接,從而可以無縫嵌入和查詢數據。

Q4。使用向量流的步驟是什麼?

Ans。這是步驟:
1。創建一個數據庫適配器。
2。啟動嵌入模型。
3。嵌入目錄。
4。查詢矢量數據庫。

Q5。為什麼要在傳統方法上使用向量流?

Ans。與傳統的嵌入方法相比,它提供了更好的效率,記憶使用降低,可擴展性和靈活性。

以上是向量流:生鏽的記憶效率索引的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何使用Huggingface Smollm建立個人AI助手如何使用Huggingface Smollm建立個人AI助手Apr 18, 2025 am 11:52 AM

利用“設備” AI的力量:建立個人聊天機器人CLI 在最近的過去,個人AI助手的概念似乎是科幻小說。 想像一下科技愛好者亞歷克斯(Alex)夢見一個聰明的本地AI同伴 - 不依賴

通過斯坦福大學激動人心的新計劃,精神健康的AI專心分析通過斯坦福大學激動人心的新計劃,精神健康的AI專心分析Apr 18, 2025 am 11:49 AM

他們的首屆AI4MH發射於2025年4月15日舉行,著名的精神科醫生兼神經科學家湯姆·因斯爾(Tom Insel)博士曾擔任開幕式演講者。 Insel博士因其在心理健康研究和技術方面的傑出工作而聞名

2025年WNBA選秀課程進入聯盟成長並與在線騷擾作鬥爭2025年WNBA選秀課程進入聯盟成長並與在線騷擾作鬥爭Apr 18, 2025 am 11:44 AM

恩格伯特說:“我們要確保WNBA仍然是每個人,球員,粉絲和公司合作夥伴,感到安全,重視和授權的空間。” anno

Python內置數據結構的綜合指南 - 分析VidhyaPython內置數據結構的綜合指南 - 分析VidhyaApr 18, 2025 am 11:43 AM

介紹 Python擅長使用編程語言,尤其是在數據科學和生成AI中。 在處理大型數據集時,有效的數據操作(存儲,管理和訪問)至關重要。 我們以前涵蓋了數字和ST

與替代方案相比,Openai新型號的第一印象與替代方案相比,Openai新型號的第一印象Apr 18, 2025 am 11:41 AM

潛水之前,一個重要的警告:AI性能是非確定性的,並且特定於高度用法。簡而言之,您的里程可能會有所不同。不要將此文章(或任何其他)文章作為最後一句話 - 目的是在您自己的情況下測試這些模型

AI投資組合|如何為AI職業建立投資組合?AI投資組合|如何為AI職業建立投資組合?Apr 18, 2025 am 11:40 AM

建立杰出的AI/ML投資組合:初學者和專業人士指南 創建引人注目的投資組合對於確保在人工智能(AI)和機器學習(ML)中的角色至關重要。 本指南為建立投資組合提供了建議

代理AI對安全操作可能意味著什麼代理AI對安全操作可能意味著什麼Apr 18, 2025 am 11:36 AM

結果?倦怠,效率低下以及檢測和作用之間的差距擴大。這一切都不應該令任何從事網絡安全工作的人感到震驚。 不過,代理AI的承諾已成為一個潛在的轉折點。這個新課

Google與Openai:AI為學生打架Google與Openai:AI為學生打架Apr 18, 2025 am 11:31 AM

直接影響與長期夥伴關係? 兩週前,Openai提出了強大的短期優惠,在2025年5月底之前授予美國和加拿大大學生免費訪問Chatgpt Plus。此工具包括GPT-4O,A A A A A

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具