Démarrez rapidement avec ElasticSearch DSL avec ChatGPT
En tant que joueur SQL, après être entré en contact avec ElasticSearch, j'ai été troublé par les étranges méthodes d'écriture de son DSL, par exemple dans quels scénarios bool devrait filtrer doit être imbriqué, quand une requête bool est nécessaire et quand peut-on il soit éliminé. Lors du dépannage de problèmes, il est inévitable d'écrire DSL à la main et de recevoir souvent des erreurs ES.
Afin de résoudre ce problème, j'ai essayé de laisser ChatGPT traduire pour moi, et l'effet a été plutôt bon. Regardons cela selon le scénario.
Scénario 1 : Liste de requêtes floues
Dans la page de liste du système backend côté B, nous pouvons généralement voir de nombreuses boîtes de filtres. Les chefs de produit placent souvent la fonction de correspondance floue par ID et nom dans une boîte de filtre appelée « meilleure expérience utilisateur ». S'il est écrit en SQL, c'est très simple :
select * from user where client_id = 123 anduser_id like '%张三%' or user_name like '%张三%';
S'il est stocké dans MySQL, l'ajout de l'index client_id peut réduire considérablement la quantité de données filtrées, et les performances ne seront pas trop mauvaises.
Si la quantité de données est très importante, utilisez ES. On peut demander à ChatGPT comme ceci :
Commencez la question :
ES index name "user", il y a trois champs
- user_id string
- user_name string
- client_id in t
Je souhaite interroger les enregistrements avec les conditions suivantes : client_id = 123 et (user_name = 'Zhang San' ou user_id = 'Zhang San'). Comment dois-je écrire DSL ?
Début de réponse :
Pour interroger les enregistrements de l'index "user" qui remplissent les conditions suivantes : client_id = 123 et (user_name = 'Zhang San' ou user_id = 'Zhang San'), vous pouvez utilisez une requête booléenne combinée avec le terme Requête pour y parvenir. Voici un exemple de requête DSL correspondante :
GET /user/_search{"query": {"bool": {"filter": [{"term": {"client_id": 123}},{"bool": {"should": [{"term": {"user_name": "张三"}},{"term": {"user_id": "张三"}}]}}]}}}
Dans cette requête, nous utilisons une requête booléenne pour garantir que les critères spécifiés sont utilisés pour filtrer les documents.
Dans la clause de filtrage, nous avons deux conditions : l'une est pour la condition que la valeur du champ "client_id" soit 123, en utilisant le terme requête. La deuxième condition est une requête booléenne imbriquée qui contient une clause Should. La clause Should contient deux requêtes de termes : une pour le champ "user_name" et l'autre pour le champ "user_id", qui vérifient toutes deux si la valeur est "Zhang San". En utilisant la clause Should, nous indiquons que l’une des conditions doit correspondre.
Cette requête DSL renverra les enregistrements de documents dont l'ID client est 123 et le nom d'utilisateur est "Zhang San" ou l'ID utilisateur est "Zhang San".
Fin de la réponse :
ChatGPT a non seulement donné la réponse, mais a également donné une explication. On peut juste apporter quelques modifications à l'index dans l'entreprise.
Scénario 2 : Filtrage basé sur les résultats d'agrégation ayant
Sur la base du tableau utilisateur ci-dessus, nous ajoutons un champ ticket_id pour représenter les bons de travail traités. Nous voulons connaître les utilisateurs qui ont traité plus de 100 bons de travail. SQL peut être écrit comme ceci :
select user_id, max(user_name) as user_name,count(ticket_id) as ticket_cnt from user where client_id = 123having count(ticket_id) > 100;
Demandez à ChatGPT :
Commencez à demander :
Nom d'index ES "user", contenant les champs suivants :
- user_id string
- user_ nom string
- client_id int
- ticket_id
Agrégation selon user_id, interrogez l'user_id de count(ticket_id) > 100, et le nom d'utilisateur correspondant à l'user_id La réponse commence : "user_id". champ L'agrégation et l'interrogation de "user_id" qui remplit la condition count(ticket_id) > 100, et le "user_name" correspondant peuvent être implémentées à l'aide des termes agrégation et bucket_selector pipeline agrégation dans la requête d'agrégation. Voici l'exemple de requête DSL correspondant :
GET /user/_search{"size": 0,"aggs": {"users": {"terms": {"field": "user_id","size": 10,"min_doc_count": 101// 设置最小文档数,只返回 count(ticket_id) > 100 的聚合结果},"aggs": {"user_name": {"terms": {"field": "user_name","size": 1}},"ticket_count": {"value_count": {"field": "ticket_id"}},"bucket_filter": {"bucket_selector": {"buckets_path": {"count": "ticket_count"},"script": "params.count > 100"// 仅保留 count(ticket_id) > 100 的聚合桶}}}}}}
在这个查询中,我们使用了 terms 聚合对 "user_id" 字段进行分组,并在聚合结果中嵌套了 user_name 字段的 terms 聚合和 ticket_id 字段的 value_count 聚合。
在 terms 聚合中,我们设置了 min_doc_count 参数为 101,以仅返回满足 count(ticket_id) > 100 的聚合桶。这样可以过滤掉不满足条件的聚合结果。
最终,我们使用 bucket_selector 管道聚合来进行桶过滤,仅保留满足条件 params.count > 100 的聚合桶。这样,最终的聚合结果中将只包含满足条件的 "user_id" 和对应的 "user_name"。
请注意,根据您的具体需求,您可能需要根据实际情况调整聚合查询中的参数和设置,如设置合适的 size 值来控制返回的聚合桶数量等。
回复结束。
场景三: 聚合以后取topK
向ChatGPT提问:
提问开始:
ES index 名字 "user",包含以下字段:
- user_id string
- user_name string
- client_id int
- ticket_id
我要查询处理ticket数量top10 的 user_id 以及对应的user_name
回复开始:
要查询处理 ticket 数量排名前 10 的 "user_id",以及对应的 "user_name",可以使用 terms 聚合和 top_hits 子聚合来实现。以下是相应的 DSL 查询示例:
GET /user/_search{"size": 0,"aggs": {"top_users": {"terms": {"field": "user_id","size": 10,"order": {"ticket_count": "desc"}},"aggs": {"user_name": {"terms": {"field": "user_name","size": 1}},"ticket_count": {"value_count": {"field": "ticket_id"}},"top_user_hits": {"top_hits": {"size": 1}}}}}}
在这个查询中,我们使用了 terms 聚合对 "user_id" 字段进行分组,并按照 "ticket_count" 字段的降序对分组结果进行排序。
在 terms 聚合中,我们设置了 size 参数为 10,以仅返回前 10 个处理 ticket 数量最多的 "user_id"。
在每个聚合桶中,我们还嵌套了 user_name 字段的 terms 聚合和 ticket_id 字段的 value_count 聚合,分别用于获取对应的 "user_name" 和计算 ticket 数量。
此外,我们使用了 top_hits 子聚合来获取每个聚合桶中的匹配文档的详细信息。在这里,我们设置了 size 参数为 1,以仅获取每个聚合桶中的一条文档信息。
最终,聚合查询的结果将包含处理 ticket 数量排名前 10 的 "user_id",对应的 "user_name",以及每个用户最新的一条文档信息。
请注意,根据实际情况,您可能需要根据具体需求调整聚合查询中的参数和设置,如设置合适的 size 值来控制返回的聚合桶数量,以及添加其他的聚合或过滤条件等。
回复结束。
本着快速出活/快速解决问题的心态,ChatGPT确实提升了工作效率。不过在解决需求之后,还是要补补课,了解下ElasticSearch的用法和工作机制。因为ChatGPT是语言模型,一旦逻辑复杂起来,ChatGPT就开始瞎说了。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Les modèles de langage raisonnent sur le texte, qui se présente généralement sous la forme de chaînes, mais l'entrée du modèle ne peut être que des nombres, le texte doit donc être converti sous forme numérique. La tokenisation est une tâche fondamentale du traitement du langage naturel. Elle peut diviser une séquence de texte continue (telle que des phrases, des paragraphes, etc.) en une séquence de caractères (telle que des mots, des phrases, des caractères, des signes de ponctuation, etc.) en fonction de besoins spécifiques. Les unités qu'il contient sont appelées un jeton ou un mot. Selon le processus spécifique illustré dans la figure ci-dessous, les phrases de texte sont d'abord divisées en unités, puis les éléments individuels sont numérisés (mappés en vecteurs), puis ces vecteurs sont entrés dans le modèle pour le codage, et enfin sortis vers des tâches en aval pour obtenir en outre le résultat final. La segmentation du texte peut être divisée en Toke en fonction de la granularité de la segmentation du texte.

Compilation|Produit par Xingxuan|51CTO Technology Stack (ID WeChat : blog51cto) Au cours des deux dernières années, j'ai été davantage impliqué dans des projets d'IA générative utilisant de grands modèles de langage (LLM) plutôt que des systèmes traditionnels. Le cloud computing sans serveur commence à me manquer. Leurs applications vont de l’amélioration de l’IA conversationnelle à la fourniture de solutions d’analyse complexes pour diverses industries, ainsi que de nombreuses autres fonctionnalités. De nombreuses entreprises déploient ces modèles sur des plates-formes cloud, car les fournisseurs de cloud public fournissent déjà un écosystème prêt à l'emploi et constituent la voie de moindre résistance. Cependant, cela n’est pas bon marché. Le cloud offre également d'autres avantages tels que l'évolutivité, l'efficacité et des capacités informatiques avancées (GPU disponibles sur demande). Il existe certains aspects peu connus du déploiement de LLM sur les plateformes de cloud public

L'ensemble de données ScienceAI Question Answering (QA) joue un rôle essentiel dans la promotion de la recherche sur le traitement du langage naturel (NLP). Des ensembles de données d'assurance qualité de haute qualité peuvent non seulement être utilisés pour affiner les modèles, mais également évaluer efficacement les capacités des grands modèles linguistiques (LLM), en particulier la capacité à comprendre et à raisonner sur les connaissances scientifiques. Bien qu’il existe actuellement de nombreux ensembles de données scientifiques d’assurance qualité couvrant la médecine, la chimie, la biologie et d’autres domaines, ces ensembles de données présentent encore certaines lacunes. Premièrement, le formulaire de données est relativement simple, et la plupart sont des questions à choix multiples. Elles sont faciles à évaluer, mais limitent la plage de sélection des réponses du modèle et ne peuvent pas tester pleinement la capacité du modèle à répondre aux questions scientifiques. En revanche, les questions et réponses ouvertes

En 2018, Google a publié BERT. Une fois publié, il a vaincu les résultats de pointe (Sota) de 11 tâches PNL d'un seul coup, devenant ainsi une nouvelle étape dans le monde de la PNL. dans la figure ci-dessous, à gauche se trouve le préréglage du modèle BERT, à droite le processus de réglage fin pour des tâches spécifiques. Parmi eux, l'étape de réglage fin est destinée au réglage fin lorsqu'il est ensuite utilisé dans certaines tâches en aval, telles que la classification de texte, le balisage de parties de discours, les systèmes de questions et réponses, etc. BERT peut être affiné sur différents tâches sans ajuster la structure. Grâce à la conception des tâches d'un « modèle de langage pré-entraîné + réglage fin des tâches en aval », il apporte de puissants effets de modèle. Depuis lors, le « modèle linguistique de pré-formation + réglage fin des tâches en aval » est devenu la formation dominante dans le domaine de la PNL.

À mesure que les modèles de langage évoluent à une échelle sans précédent, un réglage précis des tâches en aval devient prohibitif. Afin de résoudre ce problème, les chercheurs ont commencé à s’intéresser à la méthode PEFT et à l’adopter. L'idée principale de la méthode PEFT est de limiter la portée du réglage fin à un petit ensemble de paramètres afin de réduire les coûts de calcul tout en atteignant des performances de pointe sur les tâches de compréhension du langage naturel. De cette manière, les chercheurs peuvent économiser des ressources informatiques tout en maintenant des performances élevées, ouvrant ainsi la voie à de nouveaux points chauds de recherche dans le domaine du traitement du langage naturel. RoSA est une nouvelle technique PEFT qui, grâce à des expériences sur un ensemble de références, s'est avérée surpasser les précédentes méthodes adaptatives de bas rang (LoRA) et de réglage fin clairsemé pur utilisant le même budget de paramètres. Cet article approfondira

Selon les informations du 25 février, Meta a annoncé vendredi, heure locale, qu'elle lancerait un nouveau modèle de langage à grande échelle basé sur l'intelligence artificielle (IA) pour la communauté des chercheurs, rejoignant ainsi Microsoft, Google et d'autres sociétés stimulées par ChatGPT pour rejoindre l'intelligence artificielle. .Concurrence intelligente. LLaMA de Meta est l'abréviation de « Large Language Model MetaAI » (LargeLanguageModelMetaAI), qui est disponible sous une licence non commerciale pour les chercheurs et les entités du gouvernement, de la communauté et du monde universitaire. La société mettra le code sous-jacent à la disposition des utilisateurs, afin qu'ils puissent modifier eux-mêmes le modèle et l'utiliser pour des cas d'utilisation liés à la recherche. Meta a déclaré que les exigences du modèle en matière de puissance de calcul

Les progrès du traitement du langage naturel ces dernières années proviennent en grande partie de modèles de langage à grande échelle. Chaque nouveau modèle publié pousse la quantité de paramètres et de données d'entraînement vers de nouveaux sommets, et en même temps, les classements de référence existants seront abattus ! Par exemple, en avril de cette année, Google a publié le modèle de langage PaLM (Pathways Language Model) composé de 540 milliards de paramètres, qui a surpassé avec succès les humains dans une série de tests de langage et de raisonnement, en particulier ses excellentes performances dans des scénarios d'apprentissage sur petits échantillons. PaLM est considéré comme la direction de développement du modèle de langage de nouvelle génération. De la même manière, les modèles de langage visuel font des merveilles et les performances peuvent être améliorées en augmentant la taille du modèle. Bien sûr, s'il ne s'agit que d'un modèle de langage visuel multitâche

Traducteur | Révisé par Li Rui | Sun Shujuan Le projet de recherche BigScience a récemment publié un grand modèle de langage BLOOM. À première vue, cela ressemble à une autre tentative de copie du GPT-3 d'OpenAI. Mais ce qui distingue BLOOM des autres modèles de langage naturel (LLM) à grande échelle, ce sont ses efforts pour rechercher, développer, former et publier des modèles d'apprentissage automatique. Ces dernières années, les grandes entreprises technologiques ont caché des modèles de langage naturel (LLM) à grande échelle comme de stricts secrets commerciaux, et l'équipe BigScience a placé la transparence et l'ouverture au centre de BLOOM dès le début du projet. Le résultat est un modèle linguistique à grande échelle qui peut être étudié et étudié et mis à la disposition de tous. B
