🚀 免費嘗試 Zilliz Cloud,完全托管的 Milvus,體驗速度提升 10 倍!立即嘗試

milvus-logo
LFAI
  • Home
  • Blog
  • 圖像與文字的多模態語意搜尋

圖像與文字的多模態語意搜尋

  • Engineering
February 03, 2025
Stefan Webb

身為人類,我們透過感官來詮釋世界。我們聽到聲音、看見影像、視訊和文字,而且往往是層層相疊。我們透過這些多重模式以及它們之間的關係來理解世界。人工智慧若要真正媲美或超越人類的能力,就必須發展出這種同時透過多種鏡頭來理解世界的能力。

在這篇文章以及隨附的影片(上圖)和筆記型電腦中,我們將展示最近在可同時處理文字和影像的模型上所取得的突破。我們將透過建立一個語意搜尋應用程式來證明這一點,這個應用程式不只是簡單的關鍵字匹配,它還能理解使用者所要求的內容與他們正在搜尋的視覺內容之間的關係。

讓這個專案特別令人興奮的是,它完全是使用開源工具建立的:Milvus向量資料庫、HuggingFace的機器學習程式庫,以及亞馬遜客戶評論資料集。想想看,就在十年前,建立這樣的東西需要大量的專屬資源。如今,這些功能強大的元件都可以免費取得,任何有好奇心的人都可以用創新的方式將它們結合起來。

我們的多模式搜尋應用程式屬於retrieve-and-rerank類型如果您熟悉retrieval-augmented-generation(RAG),它與RAG非常相似,只是最終輸出是一個由大型語言視覺模型 (LLVM) 重新排序的圖像清單。使用者的搜尋查詢包含文字和影像,而目標是一組索引在向量資料庫中的影像。此架構有三個步驟 -索引檢索重新排序(類似於 「產生」),我們依次加以總結。

建立索引

我們的搜尋應用程式必須有要搜尋的東西。在我們的案例中,我們使用「Amazon Reviews 2023」資料集的一個小子集,這個資料集包含所有類型產品的 Amazon 客戶評論的文字和圖片。您可以想像我們正在建置的這種語意搜尋,對於電子商務網站來說是非常有用的補充。我們使用 900 張圖片,捨棄文字,不過請注意,只要有正確的資料庫和推論部署,這個筆記型電腦就可以擴充到生產規模。

我們管道中的第一個「魔法」是嵌入模型的選擇。我們使用最近開發的多模態模型Visualized BGE,它可以將文字和圖像共同或分別嵌入到同一個空間中的單一模型中,在這個模型中,相近的點在語義上是相似的。最近也開發了其他這類模型,例如MagicLens

上圖說明:[獅子側身的圖像] 加上文字「這隻獅子的正面圖」的嵌入,與不含文字的[獅子正面的圖像]的嵌入很接近。相同的模型用於文字加圖像的輸入和只有圖像的輸入(以及只有文字的輸入)。如此一來,模型就能了解使用者在查詢文字與查詢圖片之間關係時的意圖。

我們嵌入了 900 張沒有對應文字的產品圖片,並使用Milvus 將嵌入資料儲存在向量資料庫中。

擷取

現在資料庫已經建立,我們可以提供使用者查詢。想像一下,有一位使用者帶著這樣的查詢過來:「有這個的手機保護套 」加上 [一張豹子的圖像]。也就是說,他們正在搜尋有豹紋圖案的手機保護套。

請注意,使用者查詢的文字說的是 "this「,而不是 」a Leopard's skin"。我們的嵌入模型必須能將「this」與它所指的東西聯繫起來,考慮到之前迭代的模型無法處理這種開放式的指令,這是一個令人印象深刻的壯舉。MagicLens 論文提供了更多的範例。

我們將查詢的文字和圖片共同嵌入,並對向量資料庫進行相似性搜尋,返回前 9 個命中的結果。結果與查詢的豹子圖片一起顯示在上圖中。看起來,最頂尖的點擊結果並不是與查詢最相關的。第七個結果似乎是最相關的 - 它是一個有豹皮圖案的手機保護套。

世代

我們的搜尋似乎失敗了,因為第一個結果不是最相關的。不過,我們可以使用重新排序步驟來解決這個問題。您可能對檢索項目的重新排序很熟悉,因為這是許多 RAG 管道中的重要步驟。我們使用Phi-3 Vision作為重排模型。

我們首先要求 LLVM 產生查詢圖片的標題。LLVM 會輸出

「這張圖片顯示了一隻豹子的臉部特寫,焦點集中在它的斑點皮毛和綠色眼睛上」。

接著我們送入這個標題、一張有九個結果和查詢圖片的圖片,並建構一個文字提示,要求模型對結果重新排序,以清單的形式給出答案,並提供選擇最匹配結果的理由。

輸出結果如上圖所示 - 現在最相關的項目是最匹配的項目 - 而給予的理由是

「最適合的項目是以豹子為主題的項目,它符合使用者對類似主題的手機保護套的查詢指示」。

我們的 LLVM re-reranker 能夠在圖片和文字之間進行理解,並改善搜尋結果的相關性。一個有趣的假象是,重新排序器只提供了八個結果,而且還掉了一個,這就突顯出對於守則和結構化輸出的需求。

總結

在這篇文章以及隨附的影片筆記型電腦中,我們建構了一個跨文字和圖像的多模態語意搜尋應用程式。嵌入模型能夠將文字和圖像共同或單獨嵌入同一空間,而基礎模型則能夠輸入文字和圖像,同時產生文字回應。重要的是,嵌入模型能夠將用戶開放式指令的意圖與查詢圖像聯繫起來,並以此方式指定用戶希望結果如何與輸入圖像聯繫起來。

這只是不久將來的趨勢。我們將會看到多模態搜尋、多模態理解與推理等多種不同模態的應用:圖像、視訊、音訊、分子、社群網路、表格資料、時間序列,潛力無窮。

而這些系統的核心是一個向量資料庫,容納了系統的外部「記憶」。Milvus 是這方面的絕佳選擇。它開放原始碼、功能齊全 (請參閱這篇文章關於 Milvus 2.5 的全文檢索),並能以網路規模的流量和低於 100 毫秒的延遲,有效地擴充至數十億向量。如需瞭解更多資訊,請參閱Milvus 文件、加入我們的Discord社群,並希望能在下一次的非結構化資料聚會中與您見面。在那之前

資源

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

繼續閱讀