全部產品
Search
文件中心

Elasticsearch:阿里雲ES機器學習

更新時間:Jan 22, 2025

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使用統計模型來檢測資料中的離群點和不尋常模式。

建立推理機器學習任務

基於Data frame 的迴歸與分類

允許對結構化資料進行分類和迴歸分析,屬於有監督學習,適合於那些已經明確了問題定義和相應資料標籤的情境。

自然語言處理(NLP)任務

可以與其他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版本相容性以官方為準