2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Auteur : d'ElasticJeff Vestal, Jack Conradson
Dans la version 8.14, Elastic a introduit une nouvelle fonctionnalité de recherche appelée « récupérateurs » dans Elasticsearch. Poursuivez votre lecture pour en savoir plus sur leur simplicité et leur efficacité, ainsi que sur la manière dont ils peuvent améliorer vos opérations de recherche.
Les récupérateurs sont une nouvelle couche d'abstraction ajoutée à l'API de recherche dans Elasticsearch. Ils offrent la possibilité de configurer des pipelines de récupération en plusieurs étapes dans un seul appel d'API _search. Cette architecture simplifie la logique de recherche dans votre application en éliminant le besoin de plusieurs appels d'API Elasticsearch pour les requêtes de recherche complexes. Cela réduit également le besoin de logique côté client, qui nécessite souvent de combiner les résultats de plusieurs requêtes.
Trois types de récupérateurs sont inclus dans la version initiale. Chaque récupérateur est conçu dans un but spécifique et, lorsqu'ils sont combinés, ils peuvent effectuer des recherches complexes.
Les types disponibles incluent :
Pour les requêtes traditionnelles, la requête fait partie d’un appel d’API de recherche global. Les récupérateurs diffèrent en ce sens qu'ils sont conçus comme des entités indépendantes qui peuvent être utilisées individuellement ou facilement combinées. Cette approche modulaire offre une plus grande flexibilité lors de la conception de stratégies de recherche.
Les récupérateurs sont conçus dans le cadre d'un « arbre de récupération », une structure hiérarchique qui définit les opérations de recherche en clarifiant leur ordre et leur logique. Cette structure rend les recherches complexes plus faciles à gérer, plus faciles à comprendre pour les développeurs et permet d'ajouter facilement de nouvelles fonctionnalités à l'avenir.
Les récupérateurs prennent en charge la composabilité, vous permettant de créer des pipelines et d'intégrer différentes stratégies de récupération. Cela permet de tester facilement différentes combinaisons de récupération. Ils offrent également plus de contrôle sur la manière dont les documents sont notés et filtrés. Par exemple, vous pouvez spécifier un seuil de score minimum, appliquer des filtres complexes sans affecter le score et utiliser des paramètres tels que terminate_after pour optimiser les performances.
Maintient la compatibilité descendante avec les éléments de requête existants, en les convertissant automatiquement en récupérateurs appropriés.
Examinons quelques exemples d'utilisation de récupérateurs. Nous utilisons l'exemple d'ensemble de données IMDB.
Vous pouvez exécuter le inclus cahier jupyter, importez les données IMDB dans votre projet de recherche sans serveur et exécutez vous-même les exemples suivants !
Les paramètres de haut niveau sont :
- GET /imdb_movies/_search?pretty
- {
- "retriever": {
- "standard": {
- "query": {
- "term": {
- "overview": "clueless"
- }
- }
- }
- },
- "size": 3,
- "fields": [
- "names",
- "overview"
- ],
- "_source": false
- }
- 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
- }
- 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
- }
- 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
- }
Le retriever présente certaines limitations dont les utilisateurs doivent être conscients. Par exemple, l’utilisation d’un outil de récupération composé permet d’interroger uniquement les éléments. Cela impose une séparation plus claire des préoccupations et évite la complexité liée à une imbrication excessive ou à une configuration indépendante. De plus, les récupérateurs enfants ne doivent pas utiliser d'éléments qui limitent un récupérateur composite à faire partie d'une arborescence de récupérateurs.
Ces restrictions améliorent les performances et la composabilité même lors de l'utilisation de stratégies de récupération complexes.
Le récupérateur est initialement publié en tant qu'aperçu technologique, son API est donc susceptible d'être modifiée.
Les chercheurs représentent une avancée importante dans la fonctionnalité de recherche et la convivialité d’Elasticsearch. Ils peuvent être enchaînés de manière pipeline, chaque récupérateur appliquant sa logique et transmettant les résultats à l'élément suivant de la chaîne. Les récupérateurs peuvent améliorer considérablement l'expérience de recherche en permettant des opérations de recherche plus structurées, flexibles et efficaces.
Les ressources suivantes fournissent plus de détails sur les récupérateurs.
Essayez vous-même le code ci-dessus !Tu peux courircahier jupyter qui accompagne, importez les données IMDB dans le projet Elastic Serverless Search !
Prêt à l'essayer vous-même ?commencerEssai gratuit。
Vous souhaitez obtenir la certification Elastic ?A découvrir la prochaine foisFormation d'ingénieur ElasticsearchQuand commencer !