多模態(tài)語義檢索 | 基于 MetaSpore 快速部署 HuggingFace 預(yù)訓(xùn)練模型

首先,附上 Github 鏈接MetaSpore:https://github.com/meta-soul/MetaSpore,可搜索公眾號(hào)元靈數(shù)智,在底部菜單了解我們 - 用戶交流獲取官方技術(shù)交流群二維碼,進(jìn)群與業(yè)內(nèi)大佬進(jìn)行技術(shù)交流。

隨著深度學(xué)習(xí)技術(shù)在計(jì)算機(jī)視覺、自然語言處理、語音理解等領(lǐng)域不斷取得創(chuàng)新性突破,越來越多的非結(jié)構(gòu)化數(shù)據(jù)被機(jī)器進(jìn)行感知、理解和加工。這些進(jìn)展主要得益于深度學(xué)習(xí)的強(qiáng)大表征學(xué)習(xí)能力,通過在海量數(shù)據(jù)上對深度模型進(jìn)行預(yù)訓(xùn)練,使得模型捕捉到數(shù)據(jù)內(nèi)在模式,進(jìn)而對大量下游任務(wù)帶來幫助。隨著工業(yè)界和學(xué)術(shù)界投入越來越多精力在預(yù)訓(xùn)練技術(shù)研究上,陸續(xù)出現(xiàn)了 HuggingFace 和 Timm 這樣的預(yù)訓(xùn)練模型分發(fā)倉庫,預(yù)訓(xùn)練大模型紅利正在被開源社區(qū)以前所未有的速度在釋放著。

近年來機(jī)器建模和理解的數(shù)據(jù)形態(tài)逐漸從單模態(tài)向多模態(tài)演進(jìn),不同模態(tài)之間的語義鴻溝正在消弭,使得跨模態(tài)檢索落地成為可能。以 OpenAI 的開源工作 CLIP 為例,在 4 億圖文數(shù)據(jù)集上對圖文雙塔模型進(jìn)行預(yù)訓(xùn)練,將圖像和文本之間的語義銜接了起來,學(xué)術(shù)界已經(jīng)有不少研究人員在基于這項(xiàng)技術(shù)解決圖文生成、檢索等多模態(tài)問題?;氐焦I(yè)界來看,雖然前沿技術(shù)打通了多模態(tài)數(shù)據(jù)之間的語義鴻溝,但依然存在繁復(fù)的模型調(diào)優(yōu)、離線數(shù)據(jù)處理、高性能的線上推理架構(gòu)設(shè)計(jì)、異構(gòu)計(jì)算以及在線算法應(yīng)用落地等多個(gè)流程和挑戰(zhàn),這些都阻礙了前沿多模態(tài)檢索技術(shù)的落地和普惠。

北京數(shù)元靈科技針對以上技術(shù)痛點(diǎn),對模型訓(xùn)練優(yōu)化、線上推理、算法實(shí)驗(yàn)等多個(gè)環(huán)節(jié)進(jìn)行抽象統(tǒng)一,形成一套可以快速應(yīng)用離線預(yù)訓(xùn)練模型到線上的解決方案。本文將向大家介紹,如何基于 MetaSpore 技術(shù)生態(tài)來使用 HuggingFace 社區(qū)預(yù)訓(xùn)練模型進(jìn)行線上推理和算法實(shí)驗(yàn),讓預(yù)訓(xùn)練模型紅利更充分釋放到工業(yè)界、普惠到中小企業(yè)的具體業(yè)務(wù)中,并且我們會(huì)給出以文搜文以文搜圖兩個(gè)多模態(tài)檢索演示樣例供大家參考。

1.多模態(tài)語義檢索

本文介紹的多模態(tài)檢索演示樣例架構(gòu)如下:
多模態(tài)檢索演示架構(gòu).png

我們的多模態(tài)檢索系統(tǒng)同時(shí)支撐以文搜文和以文搜圖應(yīng)用場景,含有離線處理、模型推理以及在線服務(wù)等核心模塊:

1.離線處理,含有以文搜文和以文搜圖不同應(yīng)用場景的離線數(shù)據(jù)處理流程,包括模型調(diào)優(yōu)、模型導(dǎo)出、數(shù)據(jù)索引建庫、數(shù)據(jù)推送等。

2.模型推理,離線模型訓(xùn)練完畢之后,我們基于 MetaSpore Serving 框架,部署我們的 NLP、CV 大模型,MetaSpore Serving 可以幫助我們方便地進(jìn)行在線推理、彈性調(diào)度、負(fù)載均衡,以及在異構(gòu)環(huán)境中進(jìn)行資源調(diào)度。

3.在線服務(wù),我們基于 MetaSpore 在線算法應(yīng)用框架,打造了一套完整可重用的在線檢索服務(wù),包括:前端檢索 UI、多模態(tài)數(shù)據(jù)預(yù)處理、向量召回和排序算法、AB 實(shí)驗(yàn)框架等,同時(shí)支撐以文搜文和以文搜圖場景,并可低成本遷移到其它應(yīng)用場景。

一般來說,對于類似的多模態(tài)檢索問題,HuggingFace 開源社區(qū)已經(jīng)提供了很多優(yōu)秀的基線模型,工業(yè)界的實(shí)際優(yōu)化往往也是以此為起點(diǎn)。我們在以文搜文和以文搜圖的線上服務(wù)中同樣使用了 HuggingFace 社區(qū)的預(yù)訓(xùn)練模型,其中以文搜文基于我們調(diào)優(yōu)的問答領(lǐng)域語義相似模型,以文搜圖基于開箱即用的社區(qū)預(yù)訓(xùn)練模型。

這些社區(qū)開源預(yù)訓(xùn)練模型會(huì)被導(dǎo)出為通用 ONNX 格式,并載入 MetaSpore Serving 進(jìn)行在線推理,下文會(huì)對模型的導(dǎo)出上線、數(shù)據(jù)的檢索建庫以及在線檢索算法服務(wù)等內(nèi)容展開詳細(xì)的介紹。其中模型推理的部分,是標(biāo)準(zhǔn)化的 SAAS 服務(wù),和業(yè)務(wù)的耦合性較低,感興趣的讀者可以參考我們之前的公眾號(hào)文章:揭秘!新一代一站式機(jī)器學(xué)習(xí)平臺(tái)MetaSpore的設(shè)計(jì)理念。

1.1 離線處理

離線處理主要涉及到上線模型的導(dǎo)出和載入以及文檔庫的索引建庫和推送,大家可以按照下文逐步指引來完成以文搜文和以文搜圖檢索的離線處理工作,通過這兩個(gè)樣例大家也可以了解離線預(yù)訓(xùn)練模型是怎樣實(shí)現(xiàn)在 MetaSpore Serving 上推理的。

1.1.1 以文搜文

傳統(tǒng)的文本檢索系統(tǒng)基于 BM25 之類的字面匹配算法實(shí)現(xiàn),由于用戶表達(dá) query 查詢詞多種多樣,往往會(huì)遇到查詢詞跟文檔之間語義鴻溝的問題,比如用戶把 “iPhone” 錯(cuò)拼為 “Ihone”、查詢詞極為長尾 “1~3月齡男嬰秋季小尺碼包包褲”等,傳統(tǒng)文本檢索系統(tǒng)會(huì)利用拼寫糾錯(cuò)、同義詞擴(kuò)展、查詢詞改寫等手段來緩解語義鴻溝問題,但未能從根本上解決這個(gè)問題。檢索系統(tǒng)只有充分理解了用戶查詢詞和文檔的語義,才能夠在語義層面滿足用戶的檢索訴求,近年來隨著預(yù)訓(xùn)練和表征學(xué)習(xí)技術(shù)不斷進(jìn)步,一些商業(yè)搜索引擎不斷將基于表征學(xué)習(xí)的語義向量檢索方法融入到檢索生態(tài)中。

語義檢索模型

本文介紹的以文搜文是一套完全基于語義向量檢索的應(yīng)用,我們以百科問答數(shù)據(jù)為基礎(chǔ),構(gòu)建了一套問答語義檢索系統(tǒng)。我們采用了 Sentence-BERT 模型作為語義向量表示模型,該模型通過監(jiān)督或無監(jiān)督方式來對雙塔 BERT 進(jìn)行微調(diào),使得模型更適配檢索任務(wù),模型結(jié)構(gòu)如下:

以文搜文問答檢索在這里使用的是 query-doc 對稱雙塔模型,也即線上 query 的向量表示和離線 doc 的向量表示共用一個(gè)向量表示模型,因此一定要保證離線 doc 建庫模型和在線 query 推理模型的一致性。這里使用了我們在開源語義相似數(shù)據(jù)集上調(diào)優(yōu)的文本表示模型 sbert-chinese-qmc-domain-v1,離線建庫時(shí)問答數(shù)據(jù)會(huì)被該模型表示為向量,在線檢索時(shí)也是用該模型來把用戶查詢 query 表示為向量,這樣保證了 query-doc 在同一個(gè)語義空間中,用戶語義檢索訴求可以用向量相似度量計(jì)算得到保證。

由于文本表示模型要在線上對 query 進(jìn)行向量編碼,因此我們需要導(dǎo)出該模型,以供在線服務(wù)使用。進(jìn)入問答數(shù)據(jù)的建庫代碼目錄,參照說明文檔將模型導(dǎo)出,在腳本中會(huì)利用 Pytorch 的 Tracing 機(jī)制來完成導(dǎo)出。模型將被導(dǎo)出到 ./export 目錄,導(dǎo)出內(nèi)容主要有線上推理使用的 ONNX 模型和預(yù)處理模型 Tokenizer 以及有關(guān)配置文件,導(dǎo)出模型會(huì)被下文介紹的線上服務(wù)體系載入到 MetaSpore Serving 中進(jìn)行模型推理(注:由于導(dǎo)出模型會(huì)被拷貝到云存儲(chǔ),需要在 env.sh 中配置相關(guān)變量)。

文本搜索建庫

以文搜文檢索基于百萬級(jí)百科問答數(shù)據(jù)集來構(gòu)建檢索庫,大家需要下載此數(shù)據(jù)并根據(jù)說明文檔完成建庫,問答數(shù)據(jù)會(huì)被離線模型編碼為向量,然后建庫數(shù)據(jù)將被推送到服務(wù)組件中。整個(gè)建庫過程說明如下:

1.預(yù)處理,把原始數(shù)據(jù)轉(zhuǎn)換為較為通用的 jsonline 格式以供建庫使用;
2.構(gòu)建索引,使用跟線上相同的模型 sbert-chinese-qmc-domain-v1 來索引文檔(每行一個(gè)文檔對象);
3.推送倒排和正排,把倒排(向量)和正排(文檔字段)數(shù)據(jù)分別推送到各個(gè)組件服務(wù)端。

建庫數(shù)據(jù)格式樣例如下所示。離線建庫完成后,各種數(shù)據(jù)被推送到對應(yīng)的服務(wù)組件中,比如 Milvus會(huì)存儲(chǔ)文檔的向量表示、 MongoDB會(huì)存儲(chǔ)文檔的摘要信息,這些服務(wù)組件會(huì)被在線檢索算法服務(wù)所調(diào)用來獲取相關(guān)數(shù)據(jù)。

# 預(yù)處理
{"id": "0", "question": "人站在地球上為什么沒有頭朝下的感覺 ", "answer": "地球上重力作用一直是指向球心的,因此<br/>只要頭遠(yuǎn)離球心,人們就回感到頭朝上。", "category": ["教育/科學(xué)", "理工學(xué)科", "地球科學(xué)"]}

# Milvus
{"id": 0, "image_emb": [-0.058228425681591034, -0.006109456066042185, -0.005825215484946966,...,-0.04344896227121353, 0.004351312294602394]}

# MongoDB
{"question" : "人站在地球上為什么沒有頭朝下的感覺 ", "answer" : "地球上重力作用一直是指向球心的,因此<br/>只要頭遠(yuǎn)離球心,人們就回感到頭朝上。", "category": ["教育/科學(xué)", "理工學(xué)科", "地球科學(xué)"], "queryid" : "0" }

1.1.2 以文搜圖

文本和圖像對于人類來說很容易把它們的語義關(guān)聯(lián)起來,但對機(jī)器來說卻較為困難。首先從數(shù)據(jù)形式上來看,文本是基于字和詞的離散 ID 型一維數(shù)據(jù),而圖像則是連續(xù)型的二維或三維數(shù)據(jù);還有文本是人類主觀的創(chuàng)作,其表達(dá)能力極為豐富,含有各種轉(zhuǎn)折、隱喻等表述方式,而圖像則是對客觀世界的機(jī)器表示;總之,要將文本和圖像數(shù)據(jù)之間的語義鴻溝打通遠(yuǎn)比上述以文搜文要難很多。傳統(tǒng)以文搜圖檢索技術(shù),一般會(huì)依賴圖片的外部文本描述數(shù)據(jù)或者近鄰檢索技術(shù),通過圖像關(guān)聯(lián)文本進(jìn)行檢索本質(zhì)上就是將問題退化為了以文搜文,但這樣也會(huì)面臨諸多問題,比如圖片關(guān)聯(lián)文本如何獲取、以文搜文本身準(zhǔn)確度是否足夠高等等。近年深度模型逐漸從單模態(tài)向多模態(tài)演進(jìn),以 OpenAI 的開源工作 CLIP為例,通過互聯(lián)網(wǎng)上海量的圖文數(shù)據(jù)對模型進(jìn)行訓(xùn)練,將文本和圖像數(shù)據(jù)映射到同一個(gè)語義空間中,使得基于語義向量的以文搜圖技術(shù)落地成為可能。

CLIP圖文模型

本文介紹的以文搜圖基于語義向量檢索來實(shí)現(xiàn),以 CLIP 預(yù)訓(xùn)練模型作為雙塔檢索架構(gòu),由于 CLIP 模型已經(jīng)在海量圖文數(shù)據(jù)上對雙塔的文本和圖像側(cè)模型進(jìn)行了語義對齊訓(xùn)練,使其特別適合以文搜圖場景,模型結(jié)構(gòu)如下:

由于圖片和文本數(shù)據(jù)形態(tài)不同,以文搜圖檢索使用了 query-doc 非對稱雙塔模型,離線建庫時(shí)需要用到雙塔的圖像側(cè)模型,線上檢索時(shí)需要用到雙塔的文本側(cè)模型,最終在線檢索時(shí)文本側(cè)模型編碼 query 后會(huì)對圖像側(cè)模型的建庫數(shù)據(jù)進(jìn)行查找,而圖文之間的語義相關(guān)性則由 CLIP 預(yù)訓(xùn)練模型得到保證(通過在海量圖文數(shù)據(jù)上預(yù)訓(xùn)練,模型能夠?qū)D文對在向量空間中不斷拉近)。
這里我們需要把文本側(cè)模型導(dǎo)出以供線上 MetaSpore Serving 推理。由于我們檢索場景是基于中文的,所以選用了支持中文理解的 CLIP 模型。模型導(dǎo)出的具體操作參見文末說明文檔,跟以文搜文類似,導(dǎo)出內(nèi)容主要有線上推理使用的 ONNX 模型和預(yù)處理模型 Tokenizer,MetaSpore Serving 可以通過導(dǎo)出內(nèi)容來載入模型推理。

圖像搜索建庫

以文搜圖檢索使用了 Unsplash Lite 圖庫數(shù)據(jù),需要前往下載該數(shù)據(jù)并根據(jù)說明文檔指引完成建庫操作。整個(gè)建庫過程說明如下:

1.預(yù)處理,指定圖片目錄,然后生成一個(gè)較為通用的 jsonline 文件供建庫使用;
2.構(gòu)建索引,使用 openai/clip-vit-base-patch32 預(yù)訓(xùn)練模型對圖庫進(jìn)行索引,輸出索引數(shù)據(jù)每行一個(gè)文檔對象;
3.推送倒排和正排,把倒排(向量)和正排(文檔字段)數(shù)據(jù)分別推送到各個(gè)組件服務(wù)端。
同以文搜文類似,離線建庫完成后,相關(guān)數(shù)據(jù)會(huì)被推送到服務(wù)組件,這些服務(wù)組件會(huì)被在線檢索算法服務(wù)所調(diào)用來獲取相關(guān)數(shù)據(jù)。

1.2 在線服務(wù)

整套在線服務(wù)體系架構(gòu)圖如下:

多模態(tài)檢索線上服務(wù)體系,同時(shí)支撐以文搜文、以文搜圖等應(yīng)用場景,整套線上服務(wù)由以下幾部分構(gòu)成:

1.Query 預(yù)處理服務(wù):對預(yù)訓(xùn)練模型的預(yù)處理邏輯(含文本/圖像等)封裝,以 gRPC 接口提供服務(wù);

2.檢索算法服務(wù):含有 AB 實(shí)驗(yàn)切流配置、MetaSpore Serving 調(diào)用、向量召回、排序、文檔摘要等整個(gè)算法處理鏈路;

3.用戶入口服務(wù):提供檢索 Web UI 界面,便于用戶對檢索服務(wù)進(jìn)行調(diào)試、問題追查。

從用戶請求視角看,以上幾個(gè)服務(wù)從后往前依次形成調(diào)用依賴關(guān)系,所以要把多模態(tài)樣例搭建起來,就需要從前往后依次把各個(gè)服務(wù)先跑起來。當(dāng)然做這些之前,要記得先把離線的模型導(dǎo)出、上線和建庫先搞定哈!接下來我們會(huì)依此介紹在線服務(wù)體系中的各部分服務(wù),按照下文引導(dǎo)一步一步把整個(gè)服務(wù)體系搭建起來,更多細(xì)節(jié)參見文末說明文檔。

1.2.1 Query 預(yù)處理服務(wù)

我們知道深度學(xué)習(xí)模型一般都是基于張量(Tensor)的運(yùn)算,不過 NLP/CV 模型往往有一個(gè)前置預(yù)處理部分,這部分的功能就在于把原始的文本和圖片數(shù)據(jù)轉(zhuǎn)換為深度學(xué)習(xí)模型可接受的張量形式。比如 NLP 類模型往往有一個(gè)前置的 Tokenizer 用來把字符串類型的文本數(shù)據(jù)轉(zhuǎn)變?yōu)殡x散型的張量數(shù)據(jù),還有 CV 類模型也有類似的處理邏輯會(huì)通過前置預(yù)處理來完成對輸入圖片的裁剪、縮放、變換等處理。一方面考慮到這部分預(yù)處理邏輯跟深度模型的張量推理是解耦的,另一方面深度模型的推理有基于 ONNX 獨(dú)立的技術(shù)體系,所以我們把預(yù)處理這部分邏輯拆解了出來。

在這里我們重點(diǎn)針對 HuggingFace NLP/CV 模型的預(yù)處理邏輯進(jìn)行了拆解,目前 NLP 預(yù)處理 Tokenizer 已經(jīng)整合進(jìn)入了 Query 預(yù)處理服務(wù)。我們以較為通用的約定進(jìn)行拆解,用戶只需要提供預(yù)處理邏輯文件實(shí)現(xiàn)載入和預(yù)測接口,并導(dǎo)出必要的數(shù)據(jù)和配置文件,就可以被載入到預(yù)處理服務(wù)中。后續(xù) CV 預(yù)處理邏輯也將以這種方式被集成進(jìn)來。

目前預(yù)處理服務(wù)對外提供 gRPC 接口調(diào)用,被檢索算法服務(wù)中的 Query 預(yù)處理(QP)模塊依賴,用戶請求到達(dá)檢索算法服務(wù)后會(huì)轉(zhuǎn)發(fā)到該服務(wù)完成數(shù)據(jù)預(yù)處理,然后再繼續(xù)后面的處理。關(guān)于預(yù)處理服務(wù)如何啟動(dòng)、離線導(dǎo)出到云存儲(chǔ)的預(yù)處理模型如何進(jìn)入服務(wù)以及如何調(diào)試服務(wù)等細(xì)節(jié)可以參考說明文檔。

為了進(jìn)一步提升模型推理的效率和穩(wěn)定性,我們正在 MetaSpore Serving 中實(shí)現(xiàn) Python 預(yù)處理子模塊,可以通過用戶指定的 preprocessor.py 提供 gRPC 服務(wù),完成 NLP 中的 Tokenizer 或者 CV 相關(guān)的預(yù)處理,將請求轉(zhuǎn)成深度模型可處理的 Tensor,然后由 MetaSpore Serving 后續(xù)子模塊進(jìn)行模型推理。

這里給出我們在 GitHub 上的代碼實(shí)現(xiàn):https://github.com/meta-soul/MetaSpore/compare/add_python_preprocessor

1.2.2 檢索算法服務(wù)

檢索算法服務(wù)是整個(gè)在線服務(wù)體系中的核心,負(fù)責(zé)實(shí)驗(yàn)的分流,預(yù)處理、召回、排序等算法鏈組裝以及依賴組件服務(wù)的調(diào)用等。整個(gè)檢索算法服務(wù)基于 Java Spring 框架開發(fā),同時(shí)支持以文搜文和以文搜圖多模態(tài)檢索場景,由于內(nèi)部進(jìn)行了較好的抽象和模塊化設(shè)計(jì),靈活性較高,可以低成本的遷移到類似的應(yīng)用場景中。

接下來簡單地向大家介紹如何配置環(huán)境把檢索算法服務(wù)搭建起來,更多細(xì)節(jié)參見說明文檔:

1.安裝依賴組件,使用 maven 來安裝 online-serving 組件

2.檢索服務(wù)配置,拷貝模版配置文件并根據(jù)開發(fā)/生產(chǎn)環(huán)境對里面 MongoDB、Milvus 等配置進(jìn)行替換。

3.安裝配置 Consul,我們通過 Consul 來實(shí)時(shí)同步檢索服務(wù)的配置,包括實(shí)驗(yàn)的切流、召回參數(shù)、排序參數(shù)等都可以通過 Consul 實(shí)時(shí)配置。當(dāng)前以文搜文和以文搜圖應(yīng)用的配置參數(shù)見項(xiàng)目中的配置文件,其中預(yù)處理和召回階段的參數(shù) modelName 就是我們在離線處理中導(dǎo)出的相應(yīng)模型。

4.啟動(dòng)服務(wù),上述配置完成后可以通過入口腳本來啟動(dòng)檢索服務(wù)。

服務(wù)啟動(dòng)后就可以進(jìn)行測試?yán)?!舉例來說,對于 userId=10 的用戶,想要查詢 “如何補(bǔ)辦身份證”,訪問以文搜文檢索服務(wù):

curl -H "Content-Type: application/json" -X POST -d '{"query":"如何補(bǔ)辦身份證"}' http://localhost:8080/qa/user/10

將得到如下檢索結(jié)果:

{
  "queryModel" : {
    "query" : "如何補(bǔ)辦身份證"
  },
  "searchItemModels" : [ [ {
    "id" : "823067",
    "originalRetrievalScoreMap" : {
      "ann_matcher" : 0.9867960810661316
    },
    "finalRetrievalScore" : 3.9989876453053745,
    "originalRankingScoreMap" : {
      "dummy" : 3.9989876453053745
    },
    "finalRankingScore" : 3.9989876453053745,
    "score" : 3.9989876453053745,
    "summary" : {
      "question" : "怎樣補(bǔ)辦身份證 ",
      "answer" : "去戶口所在地的公安局辦理 <br/>",
      "category" : [ "生活", "美容/塑身", "化妝" ]
    }
  }, ...] ]
}
1.2.3 用戶入口服務(wù)

考慮到檢索算法服務(wù)是 API 接口形式,較難對問題定位追查,尤其對于以文搜圖場景能夠直觀的展現(xiàn)檢索結(jié)果便于檢索算法的迭代優(yōu)化。為此我們針對以文搜文和以文搜圖檢索場景提供了一個(gè)輕量的 Web UI 界面,為用戶提供了一個(gè)搜索輸入框和結(jié)果展示頁面。服務(wù)基于 Flask 開發(fā),可以方便的集成其它檢索應(yīng)用,該服務(wù)會(huì)調(diào)用檢索算法服務(wù)并把返回結(jié)果展示到頁面中。
服務(wù)安裝和啟動(dòng)也很方便,啟動(dòng)完成后,前往 http://127.0.0.1:8090 去查看搜索 UI 服務(wù)是否運(yùn)行正常,具體細(xì)節(jié)參考文末說明文檔。

多模態(tài)系統(tǒng)演示

當(dāng)按照上述指引完成離線處理和在線服務(wù)環(huán)境配置后,我們就可以啟動(dòng)多模態(tài)檢索服務(wù)啦!
可以點(diǎn)擊鏈接下滑至末尾查看視頻教程
多模態(tài)語義檢索 | 基于 MetaSpore 快速部署 HuggingFace 預(yù)訓(xùn)練模型 (qq.com)

2.1 以文搜文—百科問答

我們進(jìn)入到以文搜文應(yīng)用的入口,來探究一下問答語義檢索系統(tǒng),輸入 “給寶寶起名字”,檢索返回前 3 個(gè)結(jié)果都是關(guān)于給寶寶起名字相關(guān)的問答內(nèi)容:


再讓我們把檢索詞加強(qiáng)一下,添加一個(gè)性別屬性的約束,改為 “給男孩子寶寶起名字” 來查詢一下,檢索結(jié)果可以看到有男性寶寶起名字有關(guān)的內(nèi)容:

我們在繼續(xù)對檢索詞添加一個(gè)屬相約束,改為 “給男孩子寶寶起名字,屬?!?,可以看到返回第一條結(jié)果就是關(guān)于牛年男寶寶起名字的內(nèi)容:


在上述示例中,我們圍繞“給寶寶起名字”這個(gè)主題,不斷對檢索詞添加約束,檢索訴求越來越精確,語義檢索系統(tǒng)都能夠返回相關(guān)內(nèi)容。

2.2 以文搜圖—圖庫檢索

我們再進(jìn)入以文搜圖應(yīng)用的入口,先來輸入 “貓” ,可以看到返回結(jié)果前 3 位都是貓:

如果我們給“貓”加一個(gè)顏色約束,來檢索 “黑貓” 的話,可以看到確實(shí)返回結(jié)果是黑色的貓:

我們進(jìn)一步對檢索詞加強(qiáng)約束,改為 “黑貓?jiān)诖采稀?,返回結(jié)果中含有黑色貓爬在床上的圖片:

在上述示例中,我們對貓進(jìn)行了顏色以及場景修飾后,依然可以通過以文搜圖系統(tǒng)找到相關(guān)圖片。

結(jié)束語

前沿預(yù)訓(xùn)練技術(shù)打通不同模態(tài)之間的語義鴻溝,而 HuggingFace 社區(qū)又極大的降低開發(fā)人員使用預(yù)訓(xùn)練模型的成本,再結(jié)合我們提供的 MetaSpore 線上推理和線上微服務(wù)的技術(shù)生態(tài),預(yù)訓(xùn)練模型不再停留于離線的淺嘗輒止,而是可以真正實(shí)現(xiàn)從前沿技術(shù)到工業(yè)場景的端到端落地,充分釋放預(yù)訓(xùn)練大模型的紅利!未來我們會(huì)不斷完善優(yōu)化 MetaSpore 技術(shù)生態(tài):
1.更自動(dòng)化、更廣泛的接入 HuggingFace 社區(qū)生態(tài),近期我們會(huì)發(fā)布一套通用模型上線機(jī)制,使得 HuggingFace 生態(tài)接入更為方便,同時(shí)后續(xù)會(huì)把預(yù)處理服務(wù)集成到在線服務(wù)中;
2.多模態(tài)檢索離線算法優(yōu)化,針對多模態(tài)檢索場景,我們會(huì)持續(xù)迭代優(yōu)化離線算法組件,包含文本召回/排序模型,圖文召回/排序模型等,提升檢索算法的精度和效率。

本文中相關(guān)的代碼、參考文檔,請?jiān)L問鏈接:http://github.com/meta-soul/MetaSpore/blob/main/demo/multimodal/online/README-CN.md
部分圖片來源:
https://github.com/openai/CLIP/raw/main/CLIP.png
https://www.sbert.net/examples/training/sts/README.html

官方資料
GitHub:

LakeSou: https://github.com/meta-soul/LakeSoul

MetaSpore: https://github.com/meta-soul/MetaSpore

官網(wǎng):元靈數(shù)智-云原生一站式數(shù)據(jù)智能平臺(tái)-北京數(shù)元靈科技有限公司 (dmetasoul.com)

官方交流群:微信群:關(guān)注公眾號(hào),點(diǎn)擊“了解我們-用戶交流”

Slack:https://join.slack.com/t/dmetasoul-user/shared_invite/zt-1681xagg3-4YouyW0Y4wfhPnvji~OwFg

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容