阿里云ES機(jī)器學(xué)習(xí)
Elasticsearch(簡(jiǎn)稱(chēng)ES)機(jī)器學(xué)習(xí)是一種利用機(jī)器學(xué)習(xí)技術(shù)對(duì)ES數(shù)據(jù)進(jìn)行分析和預(yù)測(cè)的工具和框架。NLP在ES中的應(yīng)用,使得ES具備了情感分析、實(shí)體識(shí)別、文本分類(lèi)和QA問(wèn)答等機(jī)器學(xué)習(xí)能力,可以提升ES搜索體驗(yàn)?zāi)芰徒档虴S使用難度。本文介紹機(jī)器學(xué)習(xí)的應(yīng)用、text embedding在ES中的應(yīng)用和ES Eland。
背景信息
ES是基于Lucene的搜索引擎,提供了全文搜索功能和許多其他的擴(kuò)展功能,其中包括機(jī)器學(xué)習(xí)ML(Machine Learning),機(jī)器學(xué)習(xí)ML主要用于對(duì)時(shí)間序列數(shù)據(jù)的異常檢測(cè)(Anomaly Detection)、預(yù)測(cè)性分析和其他相關(guān)分析上。隨著ES 8.x版本不斷豐富ML特性,例如與BERT等更多技術(shù)結(jié)合、支持NLP任務(wù)等,機(jī)器學(xué)習(xí)提供了基于情感分析、實(shí)體識(shí)別、文本分類(lèi)和以及問(wèn)答系統(tǒng)QA(Question and Answering)等場(chǎng)景的應(yīng)用,NLP在ES中的應(yīng)用可以提升ES搜索體驗(yàn)?zāi)芰敖档褪褂秒y度。
ES ML應(yīng)用
類(lèi)型 | 解釋 | 實(shí)戰(zhàn)文檔 |
主要用于識(shí)別時(shí)間序列數(shù)據(jù)中的異常行為,屬于無(wú)監(jiān)督學(xué)習(xí),如日志文件、金融交易等。ES使用統(tǒng)計(jì)模型來(lái)檢測(cè)數(shù)據(jù)中的離群點(diǎn)和不尋常模式。 | ||
允許對(duì)結(jié)構(gòu)化數(shù)據(jù)進(jìn)行分類(lèi)和回歸分析,屬于有監(jiān)督學(xué)習(xí),適合于那些已經(jīng)明確了問(wèn)題定義和相應(yīng)數(shù)據(jù)標(biāo)簽的場(chǎng)景。 | ||
可以與其他NLP和機(jī)器學(xué)習(xí)工具集成,以支持例如文本分類(lèi)、實(shí)體識(shí)別等任務(wù)。支持使用以BERT模型結(jié)構(gòu)和WordPiece分詞算法的Transformer模型。 說(shuō)明 不同的ES版本在框架支持上存在差異,請(qǐng)以社區(qū)版本為準(zhǔn),一般情況下,任何按照支持架構(gòu)訓(xùn)練的模型都可以通過(guò)Eland在ES中部署,以模型及接口兼容性測(cè)試為準(zhǔn)。 |
text embedding在ES中的應(yīng)用
檢索是ES的核心功能之一,全文搜索和分析均依賴底層的檢索能力,能夠快速精確的從海量數(shù)據(jù)中搜索出所需信息。ES提供了多種內(nèi)置的文本分析器和分詞器,如標(biāo)準(zhǔn)分詞器、N-gram分詞器、拼音分詞器等,主要基于文本的字面形式進(jìn)行分析和索引,缺乏語(yǔ)義理解,上下文感知,歧義消除等能力。為了克服這些限制,可以將ES與text embedding模型相結(jié)合,這些模型能夠基于上下文提供更豐富的語(yǔ)義表示,并能更好地處理詞義歧義問(wèn)題,提高搜索和分析的質(zhì)量,實(shí)現(xiàn)更深層次的語(yǔ)義理解和上下文感知能力。
阿里云ES 7.11及以上版本支持將第三方text embedding模型上傳到ES,與ES Ingest結(jié)合使用,在建立索引之前基于模型能力實(shí)現(xiàn)文本信息向量轉(zhuǎn)換。當(dāng)然,也可借助外部的服務(wù)(如阿里云百煉)在ES集群外完成文本向量數(shù)據(jù)的轉(zhuǎn)換,再寫(xiě)入ES,這種方式可降低ES集群預(yù)處理壓力,降低ES資源占用,提高寫(xiě)入和查詢的穩(wěn)定性,不同模型在不同的基準(zhǔn)測(cè)試和任務(wù)上的性能表現(xiàn)不同,請(qǐng)結(jié)合場(chǎng)景選擇,下面是基于兩種轉(zhuǎn)向量方式的場(chǎng)景實(shí)戰(zhàn):
工具 | 實(shí)戰(zhàn)文檔 |
阿里云百煉 | |
Eland |
ES Eland介紹
Eland是一個(gè)ES的Python客戶端,提供了一個(gè)集成解決方案,支持將Hugging Face Transformer庫(kù)中的預(yù)訓(xùn)練模型轉(zhuǎn)換為T(mén)orchScript表示形式(可以在沒(méi)有Python解釋器的環(huán)境中運(yùn)行模型),處理模型分塊過(guò)程及將模型導(dǎo)入到ES中。
Eland功能上傳模型功能屬于ES白金版及企業(yè)版能力,阿里云ES默認(rèn)支持白金版許可,您可以直接通過(guò)Eland完成模型的上傳。Eland導(dǎo)入模型支持離線和在線兩種方式,目前社區(qū)主推導(dǎo)入來(lái)自Hugging Face的模型,請(qǐng)參見(jiàn)通過(guò)Eland上傳第三方NLP模型。
ES 7.11及以上版本集群開(kāi)始支持Eland,ES與Eland版本兼容性以官方為準(zhǔn)。