Elasticsearch:介紹 retrievers - 搜索一切事物

作者:來自 Elastic?Jeff Vestal, Jack Conradson

在 8.14 中,Elastic 在 Elasticsearch 中引入了一項名為 “retrievers - 檢索器” 的新搜索功能。繼續閱讀以了解它們的簡單性和效率,以及它們如何增強你的搜索操作。

檢索器是 Elasticsearch 中搜索 API 中添加的新抽象層。它們提供了在單個 _search API 調用中配置多階段檢索管道的便利。此架構通過消除對復雜搜索查詢的多個 Elasticsearch API 調用的需求,簡化了應用程序中的搜索邏輯。它還減少了對客戶端邏輯的需求,而客戶端邏輯通常需要組合來自多個查詢的結果。

檢索器的初始類型

初始版本中包含三種類型的檢索器。每種檢索器都針對特定目的而設計,組合起來后,它們可實現復雜的搜索操作。

可用的類型包括:

  • standard- 返回傳統查詢中的頂級文檔。這些類型通過支持現有的查詢 DSL 請求語法實現向后兼容,讓你可以按照自己的節奏遷移到檢索器框架。
  • kNN - 返回 kNN 搜索中的頂級文檔。
  • RRF - 使用倒數融合算法將多個第一階段檢索器組合并排名為單個結果集,無需或只需極少的用戶調整。RRF 檢索器是一種復合檢索器,其過濾元素會傳播到其子檢索器。

檢索器有何不同?它們為何有用?

對于傳統查詢,查詢是整體搜索 API 調用的一部分。檢索器的不同之處在于,它們被設計為獨立實體,可以單獨使用或輕松組合使用。這種模塊化方法在設計搜索策略時提供了更大的靈活性。

檢索器被設計為 “retriever tree - 檢索器樹” 的一部分,這是一種層次結構,通過闡明搜索操作的順序和邏輯來定義搜索操作。這種結構使復雜的搜索更易于管理,更易于開發人員理解,并允許在將來輕松添加新功能。

檢索器支持可組合性,允許你構建管道并集成不同的檢索策略。這允許輕松測試不同的檢索組合。它們還提供對文檔評分和篩選方式的更多控制。例如,你可以指定最低分數閾值,應用復雜的過濾器而不影響評分,并使用諸如 terminate_after 之類的參數進行性能優化。

與傳統查詢元素保持向后兼容性,自動將它們轉換為適當的檢索器。

檢索器使用示例

讓我們看一些使用檢索器的示例。我們使用 IMDB 示例數據集。

你可以運行隨附的 jupyter 筆記本,將 IMDB 數據導入無服務器搜索項目,并自行運行以下示例!

高層次設置是:

  • overview - 電影的簡短摘要
  • names - 電影的名稱
  • overview_dense - 從 e5-small 模型生成的 dense_vector
  • overview_sparse - 使用 Elastic 的 ELSER 模型的稀疏向量。
  • 僅使用 fields 并設置 _source:false 返回 names 和 overview 的文本版本

Standard - 搜索所有文本!

GET /imdb_movies/_search?pretty
{"retriever": {"standard": {"query": {"term": {"overview": "clueless"}}}},"size": 3,"fields": ["names","overview"],"_source": false
}

kNN - 搜索所有密集向量!

GET /imdb_movies/_search?pretty
{"retriever": {"knn": {"field": "overview_dense","query_vector_builder": {"text_embedding": {"model_id": ".multilingual-e5-small_linux-x86_64","model_text": "clueless slackers"}},"k": 5,"num_candidates": 5}},"size": 3,"fields": ["names","overview"],"_source": false
}

text_expansion - 搜索所有稀疏向量!

GET /imdb_movies/_search?pretty
{"retriever": {"standard": {"query": {"text_expansion": {"overview_sparse": {"model_id": ".elser_model_2_linux-x86_64","model_text": "clueless slackers"}}}}},"size": 3,"fields": ["names","overview"],"_source": false
}

rrf -?將所有事物結合起來!

GET /imdb_movies/_search?pretty
{"retriever": {"rrf": {"retrievers": [{"standard": {"query": {"term": {"overview": "clueless slackers"}}}},{"knn": {"field": "overview_dense","query_vector_builder": {"text_embedding": {"model_id": ".multilingual-e5-small_linux-x86_64","model_text": "clueless slackers"}},"k": 5,"num_candidates": 5}},{"standard": {"query": {"text_expansion": {"overview_sparse": {"model_id": ".elser_model_2_linux-x86_64","model_text": "clueless slackers"}}}}}],"rank_window_size": 5,"rank_constant": 1}},"size": 3,"fields": ["names","overview"],"_source": false
}

檢索器的當前限制

檢索器帶有某些限制,用戶應注意。例如,使用復合檢索器時只允許查詢元素(element)。這強制更清晰地分離關注點,并防止過度嵌套或獨立配置帶來的復雜性。此外,子檢索器不得使用限制將復合檢索器作為檢索器樹一部分的元素。

即使使用復雜的檢索策略,這些限制也能提高性能和可組合性。

檢索器最初作為技術預覽版發布,因此其 API 可能會發生變化

結論

檢索器代表了 Elasticsearch 檢索功能和用戶友好性向前邁出的重要一步。它們可以以管道方式鏈接起來,每個檢索器應用其邏輯并將結果傳遞給鏈中的下一個項目。通過允許更結構化、更靈活和更高效的搜索操作,檢索器可以顯著增強搜索體驗。

以下資源提供了有關檢索器的更多詳細信息。

  • 使用檢索器在 Elasticsearch 中進行語義重新排名
  • 檢索器 API 文檔
  • 檢索器 - 搜索你的數據文檔

親自嘗試上述代碼!你可以運行隨附的 jupyter 筆記本,將 IMDB 數據導入 Elastic Serverless Search 項目!

準備好自己嘗試一下了嗎?開始免費試用。
想要獲得 Elastic 認證嗎?了解下一次 Elasticsearch 工程師培訓何時開始!

原文:Elasticsearch retrievers - How to use search retrievers in Elasticsearch — Elastic Search Labs

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/45185.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45185.shtml
英文地址,請注明出處:http://en.pswp.cn/web/45185.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux:解決vim打開文件默認為replace模式

現象 Ubuntu打開 vim 默認為 replace 模式 原因 終端的編碼設置與目標機器的編碼設置不同。 解決方案 修改 vim 配置文件( /etc/vim/vimrc或者~/.vimrc),添加: set termencodingutf-8 set fileformatsunix set encodingprcP.S. vimrc 中注釋使用英…

知識圖譜與LLMs:實時圖分析(通過其關系的上下文理解數據點)

大型語言模型 (LLM) 極大地改變了普通人獲取數據的方式。不到一年前,訪問公司數據需要具備技術技能,包括熟練掌握各種儀表板工具,甚至深入研究數據庫查詢語言的復雜性。然而,隨著 ChatGPT 等 LLM 的興起,隨著所謂的檢索…

Ubuntu系統安裝mysql之后進行遠程連接

1.首先要配置數據庫允許進行遠程連接 1.1 打開MySQL配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf1.2 修改 bind-address 行 #按i進入插入模式 bind-address 0.0.0.0 #按 Esc 鍵退出插入模式。 #輸入:wq 然后按 Enter 保存并退…

React學習筆記02-----

一、React簡介 想實現頁面的局部刷新,而不是整個網頁的刷新。AJAXDOM可以實現局部刷新 1.特點 (1)虛擬DOM 開發者通過React來操作原生DOM,從而構建頁面。 React通過虛擬DOM來實現,可以解決DOM的兼容性問題&#x…

Window10下安裝WSL-Ubuntu20.04

1.開啟并更新WSL 1.1開啟WSL 首先先來看一下電腦是否能夠開啟WSL:待補充... 然后再來看一下如何開啟WSL:win->設置->應用->應用和功能->程序和功能,如下所示: 最后選擇啟用或關閉Windows功能,開啟兩個選項:1.Hyper-V…

工具推薦|語音輕松記筆記,AI幫你識別和潤色

# 你日常有沒有遇到這樣的場景? 偶爾有一些奇思妙想想要記錄下來,但沒有一個輕量的工具,往往會想著想著就把這個想法拋之腦后。特別是搞短視頻的,你也許希望把當時的想法錄下來,稍微剪輯下就能出一條不錯的口播視頻。…

springboot的JWT令牌

生成JWT令牌 依賴 <!--jwt令牌--> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.1</version> </dependency> <dependency> <groupId>javax.xml.bind<…

【LeetCode】最小棧

目錄 一、題目二、解法完整代碼 一、題目 設計一個支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常數時間內檢索到最小元素的棧。 實現 MinStack 類: MinStack() 初始化堆棧對象。 void push(int val) 將元素val推入堆棧。 void pop() 刪除堆棧頂部的元…

ACE之ACE_Handle_Set

簡介 ACE_Handle_Set是對select io復用中fd_set的封裝 結構 #mermaid-svg-dwnlrGqy52ds6ctC {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-dwnlrGqy52ds6ctC .error-icon{fill:#552222;}#mermaid-svg-dwnlrGqy52…

微信小程序開發基礎知識6----使用npm包

一、小程序對npm的支持與限制 目前&#xff0c;小程序中已經支持使用 npm 安裝第三方包&#xff0c;從而來提高小程序的開發效率。但是&#xff0c;在小程序中使用npm 包有如下3個限制: ① 不支持依賴于 Node.js 內置庫的包 ② 不支持依賴于瀏覽器內置對象的包 ③ 不支持依賴于…

Java算法-力扣leetcode-209. 長度最小的子數組

209. 長度最小的子數組 給定一個含有 n ****個正整數的數組和一個正整數 target 。 找出該數組中滿足其總和大于等于 ****target ****的長度最小的 **** 子數組 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其長度 。 如果不存在符合條件的子數組&#xff0c;…

pico+unity預設配置

picosdk中有很多預設的配置、使用預設配置的方法有 1、創建 XR Origin、展開 XR Origin > Camera Offset&#xff0c;選中 LeftHand Controller。點擊 XR Controller (Action-Based) 面板右上角的 預設 按鈕 2、打開Assets\Samples\XR Interaction Toolkit\2.5.2\Starter A…

Linux--YUM倉庫部署及NFS共享存儲

目錄 一、YUM倉庫服務 1.1 YUM介紹 1.2 yum 常用的命令 1.3 YUM 源的提供方式 1.3.1 配置本地 yum 源倉庫 1.3.2 配置 ftp 源 1.3.3 配置http服務源 二、NFS 共享存儲 2.1 NFS基本概述 2.2 為什么使用 NFS 共享存儲 2.3 NFS 應用場景 2.4 NFS 實現原理 2.5 NFS文件…

配置提交節點

方法一&#xff1a;配置lsf.cluster.<clustername> 到$LSF_TOP/conf目錄&#xff0c;編輯lsf.cluster.<clustername>文件。將下面配置中的server列設置成0&#xff0c;此節點就會作為Login節點。此方法通過bhosts不可以查看到這個節點。 # cd $LSF_ENVDIR# vim l…

gitlab 搭建使用

1. 硬件要求 ##CPU 4 核心500用戶 8 核心1000用戶 ##內存 4 G內存500用戶 8 G內存1000用戶 2. 下載 鏈接 3. 安裝依賴 yum -y install curl openssh-server postfix wget 4. 安裝gitlab組件 yum -y localinstall gitlab-ce-15.9.3-ce.0.el7.x86_64.rpm 5. 修改配置文…

Qt Quick qml自定義控件:qml實現電池控件

qml入門進階專欄地址:https://blog.csdn.net/yao_hou/category_9951228.html?spm=1001.2014.3001.5482 本篇博客介紹如何使用qml來實現電池控件,效果圖如下: 下面給出實現代碼 Battery.qml /*電池組件*/import QtQuick 2.15 import QtQuick.Controls 2.15Rectangle {id: b…

實驗05 單元測試

知識點 單元測試的定義 單元測試&#xff08;Unit Testing&#xff09;是一種軟件開發的驗證過程&#xff0c;旨在隔離并檢測軟件組件&#xff08;通常是函數、方法或類&#xff09;的單個單元的功能是否按照預期執行。每個測試用例驗證特定的條件或功能&#xff0c;確保代碼的…

Apache Kylin: 大數據時代的分析引擎

在大數據時代&#xff0c;企業面臨著數據量激增的挑戰&#xff0c;傳統的數據分析方法已經無法滿足快速、高效的處理需求。Apache Kylin作為開源的分布式分析引擎&#xff0c;為超大規模數據集提供了快速的洞察能力。本文將介紹Kylin的基本概念、架構、特性以及如何部署和使用K…

音視頻開發—使用FFmpeg將YUV文件編碼成H264裸流文件 C語言實現

文章目錄 1.準備工作2.壓縮編碼工作流程3.詳細步驟1. 初始化日志和參數檢查2. 輸入/輸出文件的打開3. 查找和初始化編碼器4. 打開編碼器5. 幀內存的分配和初始化6. 設置轉換上下文&#xff08;SWS&#xff09;7. 讀取和轉換數據8. 編碼過程9. 資源清理 4.完整示例代碼 1.準備工…

熊海CMS漏洞練習平臺的一次xss、sql注入、越權黑盒思路分析

簡介 熊海CMS是由熊海開發的一款功能豐富的網站綜合管理系統&#xff0c;廣泛應用于個人博客、個人網站以及企業網站&#xff0c;本文章用于黑盒測試&#xff0c;如果需要「源碼審計」后臺回復【「CMS」】獲取即可&#xff0c;精心準備了40多個cms源碼漏洞平臺&#xff0c;供寶…