中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

互聯(lián)網(wǎng)推廣服務(wù)長沙seo 優(yōu)化選智投未來no1

互聯(lián)網(wǎng)推廣服務(wù),長沙seo 優(yōu)化選智投未來no1,wordpress做的好看,WordPress編輯器加載慢作者:Jeff Vestal 本指南重點介紹通過 HTTP 或 Python 使用 Elasticsearch API 設(shè)置 Elasticsearch 以進行近似 k 最近鄰 (kNN) 搜索。 對于主要使用 Kibana 或希望通過 UI 進行測試的用戶,請訪問使用 Elastic 爬蟲的語義搜索入門指南。你也可以參考文章…

作者:Jeff Vestal

本指南重點介紹通過 HTTP 或 Python 使用 Elasticsearch API 設(shè)置 Elasticsearch 以進行近似 k 最近鄰 (kNN) 搜索。

對于主要使用 Kibana 或希望通過 UI 進行測試的用戶,請訪問使用 Elastic 爬蟲的語義搜索入門指南。你也可以參考文章 “ChatGPT 和 Elasticsearch:OpenAI 遇見私有數(shù)據(jù)(二)”。

如果你想切入主題并在 Jupyter Notebook 中運行一些代碼,我們可以為你提供隨附的 notebook。

Elastic Learned Sparse Encoder

如果你使用的文本是英文文本,請考慮使用 Elastic Learned Sparse Encoder。

Elastic Learned Sparse EncodeR(或 ELSER)是由 Elastic 訓(xùn)練的 NLP 模型,使你能夠使用稀疏向量表示來執(zhí)行語義搜索。 語義搜索不是根據(jù)搜索詞進行字面匹配,而是根據(jù)搜索查詢的意圖和上下文含義來檢索結(jié)果。

否則,請繼續(xù)閱讀下文,了解有關(guān)使用近似 kNN 搜索進行語義向量搜索的信息。

高層架構(gòu)

在 Elastic 中實現(xiàn)向量搜索有四個關(guān)鍵組件:

  1. 嵌入模型:機器學(xué)習(xí)模型,將數(shù)據(jù)作為輸入并返回數(shù)據(jù)的數(shù)字表示(向量,也稱為 “嵌入(embedding)”)
  2. 推理端點:將機器學(xué)習(xí)模型應(yīng)用于文本數(shù)據(jù)的 Elastic Inference API 或 Elastic Inference 管道處理器。 當(dāng)你提取數(shù)據(jù)和對數(shù)據(jù)執(zhí)行查詢時,你都可以使用推理端點。 **注意:**對于非文本數(shù)據(jù)(例如圖像文件),請在你的 ML 模型中使用外部腳本,以便生成你將在 Elastic 中存儲和使用的嵌入。
  3. 搜索:Elastic 將嵌入與元數(shù)據(jù)一起存儲在其索引中,然后執(zhí)行(近似)k 最近鄰搜索以查找查詢與數(shù)據(jù)最接近的匹配項(在向量空間中,也稱為“嵌入空間”)
  4. 應(yīng)用程序邏輯:你的應(yīng)用程序在核心向量搜索之外所需的一切,例如與用戶通信或應(yīng)用你的業(yè)務(wù)邏輯。

集群注意事項

集群大小估計

內(nèi)存注意事項

為了提高性能,向量需要 “適合” 數(shù)據(jù)節(jié)點上的堆外 RAM。 從 Elasticsearch 版本 8.7+ 開始,向量所需的粗略估計為

NumVectors×4×(NumDimensions+12)

注意:該公式適用于 float 類型向量。

使用 20,000 個向量字段的快速示例(我們假設(shè)每個文檔有 1 個向量):

20,000,000×4×(768+12)≈115 GB of RAM off heap

注意:添加的每個副本都需要相同數(shù)量的額外 RAM(例如,對于上面的示例,1 個主副本和 1 個副本,我們估計需要 2 倍的 RAM,即 130GB)。

性能測試

由于每個用戶的數(shù)據(jù)都不同,估計 RAM 需求的最佳方法是通過測試。 我們建議從單個節(jié)點、單個主分片、無副本開始,然后進行測試,以找出在性能下降之前有多少向量 “適合” 節(jié)點。

實現(xiàn)這一目標(biāo)的一種方法是使用 Elastic 的基準(zhǔn)測試工具 Rally。

如果所有向量都相當(dāng)小(例如,64GB 節(jié)點上的 3GB),你可以簡單地加載向量并一次性開始測試。

使用上面的估計公式,將向量數(shù)量的 75% 加載到單個節(jié)點中,運行挑戰(zhàn),并評估響應(yīng)時間指標(biāo)。 逐漸增加向量計數(shù),重新運行測試,直到性能下降到可接受的水平以下。 響應(yīng)時間可接受的最大計數(shù)通??梢员徽J(rèn)為是單個節(jié)點的向量數(shù)量。 從那里你可以橫向擴展節(jié)點和副本。

Jupyter Notebook Code

下面的所有代碼都可以在 python Jupyter Notebook 中找到 該代碼可以完全從瀏覽器中運行,使用 Google Colab,以便使用隨附的 notebook 進行快速設(shè)置和測試

集群配置

每個字段單個向量與每個字段多個向量

向量布局的標(biāo)準(zhǔn)方法是每個字段一個向量。 這就是我們下面將遵循的方法。 但是,從 8.11 開始,Elasticsearch 支持嵌套向量,允許每個字段使用多個向量。 有關(guān)設(shè)置該方法的信息,請查看 Elasticsearch Labs 博客 “通過攝取管道對大型文檔進行分塊加上嵌套向量等于簡單的段落搜索”。

加載嵌入模型

嵌入模型在機器學(xué)習(xí)節(jié)點上運行。 確保你部署了一個或多個 ML 節(jié)點。

要將嵌入模型加載到 Elasticsearch 中,你需要使用 Eland。 Eland 是一個 Python Elasticsearch 客戶端,用于使用熟悉的 Pandas 兼容 API 探索和分析 Elasticsearch 中的數(shù)據(jù)。

  • 你可以使用 Docker 從 Hugging Face 快速加載模型。
  • 嗎還可以在 Colab 中使用 jupyter 筆記本快速加載模型(后續(xù)“部署NLP模型”)
  • 對于無法直接連接到 Hugging Face 的環(huán)境,請按照文檔在氣隙環(huán)境中使用 Eland 加載嵌入模型中概述的步驟操作

攝取管道設(shè)置

有多種方法可以生成新文檔的嵌入。 最簡單的方法是創(chuàng)建攝取管道并配置針對索引的數(shù)據(jù),以自動使用管道通過推理處理器調(diào)用模型。

在下面的示例中,我們將創(chuàng)建一個帶有一個處理器(推理處理器)的管道。 該處理器將:

  • 將我們要為其創(chuàng)建嵌入的字段 my_text 映射到嵌入模型在本例中期望的名稱 text_field
  • 通過 model_id 配置要使用的模型。 這是 Elasticsearch 中模型的名稱
  • 監(jiān)控可能出現(xiàn)錯誤時進行處理。
PUT _ingest/pipeline/vector_embedding_demo
{"processors": [{"inference": {"field_map": {"my_text": "text_field"},"model_id": "sentence-transformers__all-distilroberta-v1","target_field": "ml.inference.my_vector","on_failure": [{"append": {"field": "_source._ingest.inference_errors","value": [{"message": "Processor 'inference' in pipeline 'ml-inference-title-vector' failed with message '{{ _ingest.on_failure_message }}'","pipeline": "ml-inference-title-vector","timestamp": "{{{ _ingest.timestamp }}}"}]}}]}},{"set": {"field": "my_vector","if": "ctx?.ml?.inference != null && ctx.ml.inference['my_vector'] != null","copy_from": "ml.inference.my_vector.predicted_value","description": "Copy the predicted_value to 'my_vector'"}},{"remove": {"field": "ml.inference.my_vector","ignore_missing": true}}]
}

索引映射/模板設(shè)置

嵌入(向量)存儲在 Elasticsearch 中的密集向量字段類型中。 接下來,我們將在索引文檔和生成嵌入之前配置索引模板。

下面的 API 調(diào)用將創(chuàng)建一個索引模板來匹配具有 my_vector_index-* 模式的任何索引

它會:

  1. 如文檔中所述,為 my_vector 配置密集向量。
  2. 建議從 _source 中排除向量字段
  3. 我們還將在本示例中包含一個文本字段 my_text,它將作為生成嵌入的源。
PUT /_index_template/my_vector_index
{"index_patterns": ["my_vector_index-*"],"priority": 1,"template": {"settings": {"number_of_shards": 1,"number_of_replicas": 1,"index.default_pipeline": "vector_embedding_demo"},"mappings": {"properties": {"my_vector": {"type": "dense_vector","dims": 768,"index": true,"similarity": "dot_product"},"my_text": {"type": "text"}},"_source": {"excludes": ["my_vector"]}}}
}

索引數(shù)據(jù)

有多種方法可以將數(shù)據(jù)索引到 Elasticsearch 中。 下面的示例顯示了要索引到示例索引中的一組快速測試文檔。 當(dāng)推理處理器對嵌入模型進行內(nèi)部 API 調(diào)用時,嵌入將由攝取管道在攝取中生成。

POST my_vector_index-01/_bulk?refresh=true
{"index": {}}
{"my_text": "Hey, careful, man, there's a beverage here!", "my_metadata": "The Dude"}
{"index": {}}
{"my_text": "I’m The Dude. So, that’s what you call me. You know, that or, uh, His Dudeness, or, uh, Duder, or El Duderino, if you’re not into the whole brevity thing", "my_metadata": "The Dude"}
{"index": {}}
{"my_text": "You don't go out looking for a job dressed like that? On a weekday?", "my_metadata": "The Big Lebowski"}
{"index": {}}
{"my_text": "What do you mean brought it bowling, Dude? ", "my_metadata": "Walter Sobchak"}
{"index": {}}
{"my_text": "Donny was a good bowler, and a good man. He was one of us. He was a man who loved the outdoors... and bowling, and as a surfer he explored the beaches of Southern California, from La Jolla to Leo Carrillo and... up to... Pismo", "my_metadata": "Walter Sobchak"}

查詢數(shù)據(jù)

Approximate k-nearest neighbor

GET my_vector_index-01/_search
{"knn": [{"field": "my_vector","k": 1,"num_candidates": 5,"query_vector_builder": {"text_embedding": {"model_id": "sentence-transformers__all-distilroberta-v1","model_text": "Watchout I have a drink"}}}]
}

具有倒數(shù)排名融合技術(shù)預(yù)覽的混合搜索(kNN + BM25)

GET my_vector_index-01/_search
{"size": 2,"query": {"match": {"my_text": "bowling"}},"knn":{"field": "my_vector","k": 3,"num_candidates": 5,"query_vector_builder": {"text_embedding": {"model_id": "sentence-transformers__all-distilroberta-v1","model_text": "He enjoyed the game"}}},"rank": {"rrf": {}}
}

Filtering

GET my_vector_index-01/_search
{"knn": {"field": "my_vector","k": 1,"num_candidates": 5,"query_vector_builder": {"text_embedding": {"model_id": "sentence-transformers__all-distilroberta-v1","model_text": "Did you bring the dog?"}},"filter": {"term": {"my_metadata": "The Dude"}}}
}

返回選擇字段的聚合

GET my_vector_index-01/_search
{"knn": {"field": "my_vector","k": 2,"num_candidates": 5,"query_vector_builder": {"text_embedding": {"model_id": "sentence-transformers__all-distilroberta-v1","model_text": "did you bring it?"}}},"aggs": {"metadata": {"terms": {"field": "my_metadata"}}},"fields": ["my_text","my_metadata"],"_source": false
}

kNN 調(diào)整選項

調(diào)整近似 kNN 搜索文檔中介紹了調(diào)整選項的概述

搜索的計算成本:向量數(shù)量的對數(shù),前提是它們通過 HNSW 進行索引。 dot_product 相似度的維數(shù)略好于線性。

調(diào)整近似 kNN 以提高速度或準(zhǔn)確性文檔

距離度量的選擇

  • 只要有可能,我們建議在將向量搜索部署到生產(chǎn)環(huán)境時使用 dot_product 而不是余弦相似度。 使用點積可以避免每次相似性計算時都必須計算向量幅度(因為向量已提前歸一化為全部幅度為 1)。 這意味著它可以將搜索和索引速度提高約 2-3 倍。
  • 也就是說,consine 在文本應(yīng)用程序中很受歡迎:查詢的長度通常比攝取的文檔短得多,因此與原始文檔的距離對相似性的測量沒有有意義的貢獻。 請記住,余弦每個元組需要 6 次運算,而點積每個維度只需要兩次(將每個元素相乘,然后求和)。 因此,我們建議僅將余弦用于測試/探索,并在投入生產(chǎn)時切換到點積(通過歸一化,點積畢竟會計算余弦)。
  • 在所有其他用例中首先嘗試 dot_product - 因為它的執(zhí)行速度比 L2 規(guī)范(標(biāo)準(zhǔn)歐幾里得)快得多。

Ingest

Indexing considerations Docs

索引新數(shù)據(jù)

除非你生成自己的嵌入,否則你必須在攝取新數(shù)據(jù)時生成嵌入。 對于文本,這是通過帶有調(diào)用托管嵌入模型的推理處理器的攝取管道來完成的。 請注意,這需要白金許可證。
添加更多數(shù)據(jù)也會增加 RAM - 因為你需要將所有向量保留在堆外(而傳統(tǒng)搜索則需要在磁盤上)

精確 kNN 搜索

又名強力(brute force)或腳本分?jǐn)?shù)

精確 kNN 搜索文檔

不要假設(shè)你需要 ANN,因為某些用例無需 ANN 也能正常工作。 根據(jù)經(jīng)驗,如果你實際排名的文檔數(shù)量(即應(yīng)用過濾器后)低于 10k,那么使用強力選項可能會更好。

在本地環(huán)境中運行 jupyter notebook

在很多情況下,我們在本地電腦里來運行上面的練習(xí)。我們可以按照如下的步驟來進行:

安裝 Elasticsearch 及 Kibana

如果你還沒有安裝好自己的 Elasticsearch 及 Kibana,請參考如下的文章來進行安裝:

  • 如何在 Linux,MacOS 及 Windows 上進行安裝 Elasticsearch

  • Kibana:如何在 Linux,MacOS 及 Windows 上安裝 Elastic 棧中的 Kibana

特別注意的是:我們將以最新的 Elastic Stack 8.6.1 來進行展示。請參考 Elastic Stack 8.x 的文章進行安裝。

啟動白金版試用功能

由于上傳模型是一個白金版的功能,我們需要啟動試用功能。更多關(guān)于訂閱的信息,請參考網(wǎng)址:訂閱 | Elastic Stack 產(chǎn)品和支持 | Elastic。

這樣我們就成功地啟動了白金版試用功能。?

上傳模型

我們使用如下的命令來安裝 eland:

pip3 install eland
pip3 install -q elasticsearch eland[pytorch]

然后,我們使用如下的命令來上傳所需要的模型:

eland_import_hub_model --url https://elastic:o6G_pvRL=8P*7on+o6XH@localhost:9200 \--hub-model-id sentence-transformers/all-distilroberta-v1 \--task-type text_embedding \--ca-certs /Users/liuxg/elastic/elasticsearch-8.11.0/config/certs/http_ca.crt \--start

在上面,我們需要根據(jù)自己的安裝:

  • 修改上面的 elastic 超級用戶的密碼
  • 修改上面的證書路徑

完成上面的命令后,我們可以在 Kibana 中看到:

運行 Notebook

我們把 Elasticsearch 的證書拷貝到當(dāng)前的項目根目錄下:

cp ~/elastic/elasticsearch-8.11.0/config/certs/http_ca.crt .

我們使用 jupyter notebook 來創(chuàng)建一個叫做?vector_search_implementation_guide_api.ipynb 的 notebook。你可以發(fā)現(xiàn)整個 notebook。

原文:Vector Search (kNN) Implementation Guide - API Edition — Elastic Search Labs

http://www.risenshineclean.com/news/55266.html

相關(guān)文章:

  • 最新疫情防控方案家庭優(yōu)化大師免費下載
  • 建設(shè)網(wǎng)站公開教學(xué)視頻下載網(wǎng)絡(luò)網(wǎng)站推廣
  • 做測試的網(wǎng)站有哪些免費網(wǎng)絡(luò)推廣平臺
  • 一品威客做的網(wǎng)站好用嗎網(wǎng)站快速優(yōu)化排名軟件
  • 做個網(wǎng)站要多少錢福州seo網(wǎng)站排名
  • 網(wǎng)頁設(shè)計模板套用步驟seo網(wǎng)絡(luò)搜索引擎優(yōu)化
  • 網(wǎng)站常用模塊百度在線問答
  • 公司建網(wǎng)站做app要多少錢精準(zhǔn)網(wǎng)絡(luò)推廣
  • 專業(yè)電容層析成像代做網(wǎng)站排名檢測
  • 網(wǎng)頁制作與網(wǎng)站開發(fā)模板今日頭條新聞大事件
  • wordpress和bootstrap廣東seo網(wǎng)站優(yōu)化公司
  • 哪里做網(wǎng)站做得好免費網(wǎng)站收錄網(wǎng)站推廣
  • html5營銷網(wǎng)站建設(shè)app推廣注冊接單平臺
  • 中山網(wǎng)站建設(shè)找阿 n 2品牌整合營銷傳播
  • 幼兒園制度網(wǎng)站建設(shè)方案網(wǎng)頁設(shè)計圖片
  • 網(wǎng)站在線客服鏈接如何做一個網(wǎng)站
  • 怎么做刷會員的網(wǎng)站關(guān)鍵詞優(yōu)化快速
  • 企業(yè)營銷網(wǎng)站開發(fā)建設(shè)專家山東濰坊疫情最新消息
  • wordpress圖片無法顯示百度seo新算法
  • 鄭州網(wǎng)站制作推廣站長seo
  • 如何做網(wǎng)站結(jié)構(gòu)優(yōu)化微信推廣廣告在哪里做
  • 全flash網(wǎng)站欣賞百度搜索引擎優(yōu)化指南最新版
  • 做網(wǎng)站需要買什么電商平臺開發(fā)需要多少錢
  • 企業(yè)網(wǎng)站seo搜索引擎關(guān)鍵詞優(yōu)化技巧
  • 網(wǎng)站改名 備案佛山網(wǎng)站建設(shè)方案服務(wù)
  • 定制級高端網(wǎng)站建設(shè)seo搜索引擎實訓(xùn)心得體會
  • b站24小時免費直播下載迅雷bt磁力鏈 最好用的搜索引擎
  • 企業(yè)網(wǎng)站優(yōu)化方法包括sem推廣計劃
  • 呂梁做網(wǎng)站互聯(lián)網(wǎng)公司排名100強
  • 沈陽品牌網(wǎng)站建設(shè)推廣方案設(shè)計