Elasticsearch(簡稱ES)機器學習是一種利用機器學習技術對ES資料進行分析和預測的工具和架構。NLP在ES中的應用,使得ES具備了情感分析、實體識別、文本分類和QA問答等機器學習能力,可以提升ES搜尋體驗能力和降低ES使用難度。本文介紹機器學習的應用、text embedding在ES中的應用和ES Eland。
背景資訊
ES是基於Lucene的搜尋引擎,提供了全文檢索搜尋功能和許多其他的擴充功能,其中包括機器學習ML(Machine Learning),機器學習ML主要用於對時間序列資料的異常檢測(Anomaly Detection)、預測性分析和其他相關分析上。隨著ES 8.x版本不斷豐富ML特性,例如與BERT等更多技術結合、支援NLP任務等,機器學習提供了基於情感分析、實體識別、文本分類和以及問答系統QA(Question and Answering)等情境的應用,NLP在ES中的應用可以提升ES搜尋體驗能力及降低使用難度。
ES ML應用
類型 | 解釋 | 實戰文檔 |
主要用於識別時間序列資料中的異常行為,屬於無監督學習,如記錄檔、金融交易等。ES使用統計模型來檢測資料中的離群點和不尋常模式。 | ||
允許對結構化資料進行分類和迴歸分析,屬於有監督學習,適合於那些已經明確了問題定義和相應資料標籤的情境。 | ||
可以與其他NLP和機器學習工具整合,以支援例如文本分類、實體識別等任務。支援使用以BERT模型結構和WordPiece分詞演算法的Transformer模型。 說明 不同的ES版本在架構支援上存在差異,請以社區版本為準,一般情況下,任何按照支援架構訓練的模型都可以通過Eland在ES中部署,以模型及介面相容性測試為準。 |
text embedding在ES中的應用
檢索是ES的核心功能之一,全文檢索搜尋和分析均依賴底層的檢索能力,能夠快速精確的從海量資料中搜尋出所需資訊。ES提供了多種內建的文本分析器和分詞器,如標準分詞器、N-gram分詞器、拼音分詞器等,主要基於文本的字面形式進行分析和索引,缺乏語義理解,上下文感知,歧義消除等能力。為了克服這些限制,可以將ES與text embedding模型相結合,這些模型能夠基於上下文提供更豐富的語義表示,並能更好地處理詞義歧義問題,提高搜尋和分析的品質,實現更深層次的語義理解和上下文感知能力。
阿里雲ES 7.11及以上版本支援將第三方text embedding模型上傳到ES,與ES Ingest結合使用,在建立索引之前基於模型能力實現文本資訊向量轉換。當然,也可藉助外部的服務(如阿里雲百鍊)在ES叢集外完成文本向量資料的轉換,再寫入ES,這種方式可降低ES叢集預先處理壓力,降低ES資源佔用,提高寫入和查詢的穩定性,不同模型在不同的基準測試和任務上的效能表現不同,請結合情境選擇,下面是基於兩種轉向量方式的情境實戰:
工具 | 實戰文檔 |
阿里雲百鍊 | |
Eland |
ES Eland介紹
Eland是一個ES的Python用戶端,提供了一個整合解決方案,支援將Hugging Face Transformer庫中的預訓練模型轉換為TorchScript表示形式(可以在沒有Python解譯器的環境中運行模型),處理模型分塊過程及將模型匯入到ES中。
Eland功能上傳模型功能屬於ES白金版及企業版能力,阿里雲ES預設支援白金版許可,您可以直接通過Eland完成模型的上傳。Eland匯入模型支援離線和線上兩種方式,目前社區主推匯入來自Hugging Face的模型。
ES 7.11及以上版本叢集開始支援Eland,ES與Eland版本相容性以官方為準。