游戲交易網(wǎng)站怎么做石獅seo
作者:來自 Elastic?Jeff Vestal, Jack Conradson
在 8.14 中,Elastic 在 Elasticsearch 中引入了一項名為 “retrievers - 檢索器” 的新搜索功能。繼續(xù)閱讀以了解它們的簡單性和效率,以及它們?nèi)绾卧鰪娔愕乃阉鞑僮鳌?/p>
檢索器是 Elasticsearch 中搜索 API 中添加的新抽象層。它們提供了在單個 _search API 調(diào)用中配置多階段檢索管道的便利。此架構(gòu)通過消除對復(fù)雜搜索查詢的多個 Elasticsearch API 調(diào)用的需求,簡化了應(yīng)用程序中的搜索邏輯。它還減少了對客戶端邏輯的需求,而客戶端邏輯通常需要組合來自多個查詢的結(jié)果。
檢索器的初始類型
初始版本中包含三種類型的檢索器。每種檢索器都針對特定目的而設(shè)計,組合起來后,它們可實現(xiàn)復(fù)雜的搜索操作。
可用的類型包括:
- standard- 返回傳統(tǒng)查詢中的頂級文檔。這些類型通過支持現(xiàn)有的查詢 DSL 請求語法實現(xiàn)向后兼容,讓你可以按照自己的節(jié)奏遷移到檢索器框架。
- kNN - 返回 kNN 搜索中的頂級文檔。
- RRF - 使用倒數(shù)融合算法將多個第一階段檢索器組合并排名為單個結(jié)果集,無需或只需極少的用戶調(diào)整。RRF 檢索器是一種復(fù)合檢索器,其過濾元素會傳播到其子檢索器。
檢索器有何不同?它們?yōu)楹斡杏?#xff1f;
對于傳統(tǒng)查詢,查詢是整體搜索 API 調(diào)用的一部分。檢索器的不同之處在于,它們被設(shè)計為獨立實體,可以單獨使用或輕松組合使用。這種模塊化方法在設(shè)計搜索策略時提供了更大的靈活性。
檢索器被設(shè)計為 “retriever tree - 檢索器樹” 的一部分,這是一種層次結(jié)構(gòu),通過闡明搜索操作的順序和邏輯來定義搜索操作。這種結(jié)構(gòu)使復(fù)雜的搜索更易于管理,更易于開發(fā)人員理解,并允許在將來輕松添加新功能。
檢索器支持可組合性,允許你構(gòu)建管道并集成不同的檢索策略。這允許輕松測試不同的檢索組合。它們還提供對文檔評分和篩選方式的更多控制。例如,你可以指定最低分?jǐn)?shù)閾值,應(yīng)用復(fù)雜的過濾器而不影響評分,并使用諸如 terminate_after 之類的參數(shù)進(jìn)行性能優(yōu)化。
與傳統(tǒng)查詢元素保持向后兼容性,自動將它們轉(zhuǎn)換為適當(dāng)?shù)臋z索器。
檢索器使用示例
讓我們看一些使用檢索器的示例。我們使用 IMDB 示例數(shù)據(jù)集。
你可以運行隨附的 jupyter 筆記本,將 IMDB 數(shù)據(jù)導(dǎo)入無服務(wù)器搜索項目,并自行運行以下示例!
高層次設(shè)置是:
- overview - 電影的簡短摘要
- names - 電影的名稱
- overview_dense - 從 e5-small 模型生成的 dense_vector
- overview_sparse - 使用 Elastic 的 ELSER 模型的稀疏向量。
- 僅使用 fields 并設(shè)置 _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 -?將所有事物結(jié)合起來!
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
}
檢索器的當(dāng)前限制
檢索器帶有某些限制,用戶應(yīng)注意。例如,使用復(fù)合檢索器時只允許查詢元素(element)。這強制更清晰地分離關(guān)注點,并防止過度嵌套或獨立配置帶來的復(fù)雜性。此外,子檢索器不得使用限制將復(fù)合檢索器作為檢索器樹一部分的元素。
即使使用復(fù)雜的檢索策略,這些限制也能提高性能和可組合性。
檢索器最初作為技術(shù)預(yù)覽版發(fā)布,因此其 API 可能會發(fā)生變化
結(jié)論
檢索器代表了 Elasticsearch 檢索功能和用戶友好性向前邁出的重要一步。它們可以以管道方式鏈接起來,每個檢索器應(yīng)用其邏輯并將結(jié)果傳遞給鏈中的下一個項目。通過允許更結(jié)構(gòu)化、更靈活和更高效的搜索操作,檢索器可以顯著增強搜索體驗。
以下資源提供了有關(guān)檢索器的更多詳細(xì)信息。
- 使用檢索器在 Elasticsearch 中進(jìn)行語義重新排名
- 檢索器 API 文檔
- 檢索器 - 搜索你的數(shù)據(jù)文檔
親自嘗試上述代碼!你可以運行隨附的 jupyter 筆記本,將 IMDB 數(shù)據(jù)導(dǎo)入 Elastic Serverless Search 項目!
準(zhǔn)備好自己嘗試一下了嗎?開始免費試用。
想要獲得 Elastic 認(rèn)證嗎?了解下一次 Elasticsearch 工程師培訓(xùn)何時開始!
原文:Elasticsearch retrievers - How to use search retrievers in Elasticsearch — Elastic Search Labs