警告:此功能處于技術預覽階段,可能會在未來的版本中更改或刪除。 Elastic 將盡最大努力修復任何問題,但技術預覽中的功能不受官方 GA 功能的支持 SLA 約束。
Elastic Learned Sparse EncodeR - 或 ELSER - 是由 Elastic 訓練的檢索模型,使你能夠執(zhí)行語義搜索以檢索更相關的搜索結果。 此搜索類型為您提供基于上下文含義和用戶意圖的搜索結果,而不是精確的關鍵字匹配。
ELSER 是一種域外(out-of-domain)模型,這意味著它不需要對你自己的數(shù)據(jù)進行微調,因此可以開箱即用地適應各種用例。
ELSER 將索引和搜索的段落擴展為術語集合,這些術語被學習為在不同的訓練數(shù)據(jù)集中經常共同出現(xiàn)。 模型將文本擴展成的術語不是搜索術語的同義詞; 他們是博學的協(xié)會。 這些擴展的術語被加權,因為其中一些比其他的更重要。 然后 Elasticsearch rank-feature 字段類型用于在索引時存儲術語和權重,并在以后進行搜索。
以下安裝是在 Elastic Stack 8.8 下完成的。
要求
要使用 ELSER,你必須具有相應的語義搜索(semantic search)訂閱級別或激活試用期。
安裝
如果你還沒有安裝好自己的 Elasticsearch 及 Kibana,請參閱如下的鏈接來進行安裝:
-
如何在 Linux,MacOS 及 Windows 上進行安裝 Elasticsearch
-
Kibana:如何在 Linux,MacOS 及 Windows 上安裝 Elastic 棧中的 Kibana
在安裝的時候,請注意選擇 Elastic Stack 8.x 的指南來進行安裝。我們需要安裝 Elastic Stack 8.8 及以上版本。
啟動白金試用
由于語義搜索是一個機器學習的范疇,是一個收費的功能。如果我們不啟動試用版本,那么在下載的時候,會出現(xiàn)如下的錯誤信息:
我們按照如下的方式來啟動白金試用:
這樣,我們試用授權已經啟動了。
下載并部署 ELSER?
我們有如下的三種方法來下載并部署 ELSER:
- Machine Learning => Trained Models
- Enterprise Search => Indices
- 通過 Dev Console
下面,我們來詳細介紹它的步驟。
通過機器學習的 Trained Model 頁面
上面顯示:
我們可以看到它正在下載當中。我們需要等待一點時間。
我們點擊 Play 按鈕來進行部署。
?
至此,我們已經成功地部署了 ELSER。
通過 Enterprise Search 中的 Indices 頁面
針對 Enterprise search 的安裝,請參考文章 “Enterprise:使用 Elastic Stack 8.2 中的 Elasticsearch API 來定位 App Search 中的文檔”。
你還可以直接從 Enterprise Search 應用下載 ELSER 并將其部署到推理管道。如果你的 Elasticsearch 還沒有任何的索引的話,你可以使用類似如下的命令來創(chuàng)建一個索引:
PUT twitter/_doc/1
{
"name": "Xiaoguo Liu from Elastic"
}
上述命令將生成一個叫做 twitter 的索引。
從上面我們可以看出來模型已經被成功地部署。我們可以在這個頁面進行配置它的部署。
使用 Dev Console 來進行部署
我們在 Dev Tools 中,通過運行以下 API 調用創(chuàng)建 ELSER 模型配置:
PUT _ml/trained_models/.elser_model_1
{
"input": {
"field_names": ["text_field"]
}
}
如果尚未下載模型,API 調用會自動啟動模型下載。
等過一會兒,我們可以看到如下的頁面:
我們可以在機器學習的 Trained Models 里進行查看。?
我們可以使用帶有 delpoyment ID 的開始訓練模型部署 API 來部署模型:
POST _ml/trained_models/.elser_model_1/deployment/_start?deployment_id=for_search
我們可以在機器學習的頁面查看它的狀態(tài)。上面顯示已經是 started 狀態(tài)。你可以使用不同的部署 ID 多次部署模型。?
以下示例為 ID 為 my_model_for_ingest 的 .elser_model_1 訓練模型啟動新部署。 部署 ID 可用于推理 API 調用或推理處理器。
POST _ml/trained_models/.elser_model_1/deployment/_start?deployment_id=my_model_for_ingest
可以使用不同的 ID 再次部署經過 my_model 訓練的模型:
POST _ml/trained_models/.elser_model_1/deployment/_start?deployment_id=my_model_for_search
部署完成后,ELSER 就可以在攝取管道或 text_expansion 查詢中使用以執(zhí)行語義搜索。
如何使用 ELSER 模型
我們可以使用如下的命令來進行測試:
POST /_ml/trained_models/.elser_model_1/_infer
{
"docs": {
"text_field": "how is the weather in jamaica"
}
}
從上面我們可以看出來它是一個 text_expansion 類型的模型:
在氣隙環(huán)境中部署 ELSER
如果你想在受限或封閉的網絡中部署 ELSER,你有兩種選擇:
- 創(chuàng)建你自己的帶有模型工件的 HTTP/HTTPS 端點,
- 將模型工件放入所有符合主節(jié)點條件的配置目錄內的目錄中。
你的系統(tǒng)中需要以下文件:
https://ml-models.elastic.co/elser_model_1.metadata.json
https://ml-models.elastic.co/elser_model_1.pt
https://ml-models.elastic.co/elser_model_1.vocab.json
使用 HTTP 服務器
提示:如果你使用現(xiàn)有的 HTTP 服務器,請注意模型下載器僅支持無密碼 HTTP 服務器。
你可以使用任何 HTTP 服務來部署 ELSER。 此示例使用官方 Nginx Docker 映像來設置新的 HTTP 下載服務。
1)從 https://ml-models.elastic.co/?下載模型工件文件。
2)將文件放入你選擇的子目錄中。
3)運行以下命令:
export ELASTIC_ML_MODELS="/path/to/models"
docker run --rm -d -p 8080:80 --name ml-models -v ${ELASTIC_ML_MODELS}:/usr/share/nginx/html nginx
不要忘記將 /path/to/models 更改為模型工件文件所在的子目錄的路徑。
這些命令使用 Nginx 服務器啟動本地 Docker 映像,其子目錄包含模型文件。 由于需要下載和構建Docker鏡像,第一次啟動可能需要較長的時間。 隨后的運行開始得更快。
4)通過在瀏覽器中訪問以下 URL 來驗證 Nginx 是否正常運行:
http://{IP_ADDRESS_OR_HOSTNAME}:8080/elser_model_1.metadata.json
如果 Nginx 正常運行,你會看到模型的元數(shù)據(jù)文件的內容。
5)通過將以下行添加到 config/elasticsearch.yml 文件,將你的 Elasticsearch 部署指向 HTTP 服務器上的模型工件:
xpack.ml.model_repository: http://{IP_ADDRESS_OR_HOSTNAME}:8080
如果你使用自己的 HTTP 或 HTTPS 服務器,請相應地更改地址。 指定協(xié)議很重要(“http://”或“https://”)。 確保所有符合主節(jié)點條件的節(jié)點都可以訪問你指定的服務器。
6)在所有符合主節(jié)點資格的節(jié)點上重復步驟 5。
7)一個接一個地重啟 master-eligible節(jié)點。
僅下載模型需要 HTTP 服務器。 下載完成后,你可以停止并刪除該服務。 你可以通過運行以下命令停止此示例中使用的 Docker 鏡像:
docker stop ml-models
使用基于文件的訪問
對于基于文件的訪問,請執(zhí)行以下步驟:
1)從 https://ml-models.elastic.co/ 下載模型工件文件。
2)將文件放入 Elasticsearch 部署的配置目錄內的模型子目錄中。
3)通過將以下行添加到 config/elasticsearch.yml 文件,將你的 Elasticsearch 部署指向模型目錄:文章來源:http://www.zghlxwxcb.cn/news/detail-494455.html
xpack.ml.model_repository: file://${path.home}/config/models/`
4)在所有符合主節(jié)點資格的節(jié)點上重復步驟 2 和步驟 3。
5)一個接一個地重啟 master-eligible 節(jié)點。文章來源地址http://www.zghlxwxcb.cn/news/detail-494455.html
到了這里,關于Elasticsearch:部署 ELSER - Elastic Learned Sparse EncoderR的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!