目次
シナリオ 1: リスト ファジー クエリ
シナリオ 2: 次のような集計結果に基づくフィルタリング
场景三: 聚合以后取topK
ホームページ テクノロジー周辺機器 AI ChatGPT を使用して ElasticSearch DSL をすぐに始めましょう

ChatGPT を使用して ElasticSearch DSL をすぐに始めましょう

Jun 13, 2023 pm 03:20 PM
言語モデル

借助ChatGPT快速上手ElasticSearch dsl

SQL プレーヤーとして、ElasticSearch に触れた後、その DSL の奇妙な記述方法に悩まされました。たとえば、bool はどのようなシナリオでフィルタする必要があるかなどです。ネストされていますが、bool はいつネストされるべきですか? クエリは必要であり、いつ実行できますか。問題のトラブルシューティングを行う場合、DSL を手動で記述することは避けられず、ES エラーが発生することがよくあります。

この問題を解決するために、ChatGPT に翻訳させてみましたが、その効果はかなり良好でした。シナリオに沿って見てみましょう。

シナリオ 1: リスト ファジー クエリ

B 側バックエンド システムのリスト ページには、通常、多くのフィルター ボックスが表示されます。プロダクト マネージャーは、「ユーザー エクスペリエンスの向上」と呼ばれるフィルター ボックスに、ID と名前によるあいまい一致の機能を組み込むことがよくあります。 SQL で書かれている場合は非常に簡単です:

select * from user where client_id = 123 anduser_id like '%张三%' or user_name like '%张三%';
ログイン後にコピー

MySQL に保存されている場合、client_id インデックスを追加することでフィルタリングされるデータの量を大幅に削減でき、パフォーマンスもそれほど悪くありません。

データ量が非常に大きい場合は、ES を使用します。 ChatGPT に次のように質問できます:

質問を開始します:

ES インデックス名 "user"、3 つのフィールド

  1. #user_id string
  2. user_name string
  3. client_id int

次の条件でレコードをクエリしたいと思います: client_id = 123 および (user_name = 'Zhang San' または user_id = 'Zhang San')。 DSLはどうやって書けばいいのでしょうか?

返信の開始:

次の条件を満たす「user」インデックス内のレコードをクエリするには: client_id = 123 および (user_name) = 'Zhang San ' または user_id = 'Zhang San')、これを実現するには、ブール クエリと用語クエリを組み合わせて使用​​できます。対応する DSL クエリの例を次に示します。

GET /user/_search{"query": {"bool": {"filter": [{"term": {"client_id": 123}},{"bool": {"should": [{"term": {"user_name": "张三"}},{"term": {"user_id": "张三"}}]}}]}}}
ログイン後にコピー

このクエリでは、ブール クエリを使用して、指定された基準がドキュメントのフィルタリングに使用されることを確認します。

フィルター句には 2 つの条件があります。1 つは、クエリという用語を使用した、「client_id」フィールドの値が 123 であるという条件です。 2 番目の条件は、 should 句を含むネストされた bool クエリです。 should 句には 2 つの用語クエリが含まれています。1 つは「user_name」フィールドに対するもので、もう 1 つは「user_id」フィールドに対するもので、どちらも値が「Zhang San」であるかどうかをチェックします。 should 句を使用することで、いずれかの条件が一致する必要があることを示します。

この DSL クエリは、client_id が 123、ユーザー名が「Zhang San」またはユーザー ID が「Zhang San」であるドキュメント レコードを返します。

返信終了:

ChatGPT は答えを提供するだけでなく、説明も提供します。ビジネスは良いです。

シナリオ 2: 次のような集計結果に基づくフィルタリング

上記のユーザー テーブルに基づいて、処理済みの作業指示書を表す ticket_id フィールドを追加します。 100 を超える作業指示を持つユーザーを処理します。 SQL は次のように記述できます:

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;
ログイン後にコピー

ChatGPT に質問する:

質問を開始する:

ES インデックス名「user」。次のフィールドが含まれます:

  1. ##user_id string
  2. user_name string
  3. client_id int
  4. ticket_id
#user_id、クエリ数(ticket_id) > 100 user_idに基づく集計、および user_id 対応する user_name

返信の開始:

「user_id」フィールドに従って集計し、条件を満たす「user_id」をクエリします count(ticket_id) > 100、および対応する「user_name」。これは、集計クエリで用語集計およびbucket_selectorパイプライン集計を使用して実装できます。以下は、対応する DSL クエリの例です:

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",包含以下字段:

  1. user_id string
  2. user_name string
  3. client_id int
  4. 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就开始瞎说了。

以上がChatGPT を使用して ElasticSearch DSL をすぐに始めましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

トークン化を 1 つの記事で理解しましょう! トークン化を 1 つの記事で理解しましょう! Apr 12, 2024 pm 02:31 PM

言語モデルは、通常は文字列の形式であるテキストについて推論しますが、モデルへの入力は数値のみであるため、テキストを数値形式に変換する必要があります。トークン化は自然言語処理の基本タスクであり、特定のニーズに応じて、連続するテキスト シーケンス (文、段落など) を文字シーケンス (単語、フレーズ、文字、句読点など) に分割できます。その中の単位はトークンまたはワードと呼ばれます。以下の図に示す具体的なプロセスに従って、まずテキスト文がユニットに分割され、次に単一の要素がデジタル化され (ベクトルにマッピングされ)、次にこれらのベクトルがエンコード用のモデルに入力され、最後に下流のタスクに出力され、さらに最終結果を取得します。テキストセグメンテーションは、テキストセグメンテーションの粒度に応じて Toke に分割できます。

大規模言語モデルの効率的なパラメータ微調整 - BitFit/Prefix/Prompt 微調整シリーズ 大規模言語モデルの効率的なパラメータ微調整 - BitFit/Prefix/Prompt 微調整シリーズ Oct 07, 2023 pm 12:13 PM

2018 年に Google が BERT をリリースしました。リリースされると、11 個の NLP タスクの最先端 (Sota) 結果を一気に打ち破り、NLP 界の新たなマイルストーンとなりました。BERT の構造は次のとおりです。下の図では、左側は BERT モデルのプリセット、右側はトレーニング プロセス、右側は特定のタスクの微調整プロセスです。このうち、微調整ステージは、テキスト分類、品詞のタグ付け、質問と回答システムなど、その後のいくつかの下流タスクで使用されるときに微調整するためのものです。BERT はさまざまな上で微調整できます。構造を調整せずにタスクを実行できます。 「事前トレーニング済み言語モデル + 下流タスク微調整」のタスク設計により、強力なモデル効果をもたらします。以来、「言語モデルの事前トレーニング + 下流タスクの微調整」が NLP 分野のトレーニングの主流になりました。

新しい科学的で複雑な質問応答ベンチマークと大規模モデルの評価システムを提供するために、UNSW、アルゴンヌ、シカゴ大学、およびその他の機関が共同で SciQAG フレームワークを立ち上げました。 新しい科学的で複雑な質問応答ベンチマークと大規模モデルの評価システムを提供するために、UNSW、アルゴンヌ、シカゴ大学、およびその他の機関が共同で SciQAG フレームワークを立ち上げました。 Jul 25, 2024 am 06:42 AM

編集者 |ScienceAI 質問応答 (QA) データセットは、自然言語処理 (NLP) 研究を促進する上で重要な役割を果たします。高品質の QA データ セットは、モデルの微調整に使用できるだけでなく、大規模言語モデル (LLM) の機能、特に科学的知識を理解し推論する能力を効果的に評価することもできます。現在、医学、化学、生物学、その他の分野をカバーする多くの科学 QA データ セットがありますが、これらのデータ セットにはまだいくつかの欠点があります。まず、データ形式は比較的単純で、そのほとんどが多肢選択式の質問であり、評価は簡単ですが、モデルの回答選択範囲が制限され、科学的な質問に回答するモデルの能力を完全にテストすることはできません。対照的に、自由回答型の Q&A

大規模なモデルをクラウドにデプロイするための 3 つの秘密 大規模なモデルをクラウドにデプロイするための 3 つの秘密 Apr 24, 2024 pm 03:00 PM

コンピレーション|Xingxuan によって制作|51CTO テクノロジー スタック (WeChat ID: blog51cto) 過去 2 年間、私は従来のシステムよりも大規模言語モデル (LLM) を使用した生成 AI プロジェクトに多く関与してきました。サーバーレス クラウド コンピューティングが恋しくなってきました。そのアプリケーションは、会話型 AI の強化から、さまざまな業界向けの複雑な分析ソリューションやその他の多くの機能の提供まで多岐にわたります。多くの企業は、パブリック クラウド プロバイダーが既製のエコシステムをすでに提供しており、それが最も抵抗の少ない方法であるため、これらのモデルをクラウド プラットフォームにデプロイしています。ただし、安くはありません。クラウドは、スケーラビリティ、効率、高度なコンピューティング機能 (オンデマンドで利用可能な GPU) などの他の利点も提供します。パブリック クラウド プラットフォームでの LLM の展開については、あまり知られていない側面がいくつかあります

RoSA: 大規模なモデルパラメータを効率的に微調整するための新しい方法 RoSA: 大規模なモデルパラメータを効率的に微調整するための新しい方法 Jan 18, 2024 pm 05:27 PM

言語モデルが前例のない規模に拡大するにつれて、下流タスクの包括的な微調整には法外なコストがかかります。この問題を解決するために、研究者はPEFT法に注目し、採用し始めました。 PEFT 手法の主なアイデアは、微調整の範囲を少数のパラメータ セットに制限して、自然言語理解タスクで最先端のパフォーマンスを達成しながら計算コストを削減することです。このようにして、研究者は高いパフォーマンスを維持しながらコンピューティング リソースを節約でき、自然言語処理の分野に新たな研究のホットスポットをもたらします。 RoSA は、一連のベンチマークでの実験を通じて、同じパラメーター バジェットを使用した以前の低ランク適応 (LoRA) および純粋なスパース微調整手法よりも優れたパフォーマンスを発揮することが判明した新しい PEFT 手法です。この記事ではさらに詳しく説明します

Meta が 650 億のパラメータを持つ大規模言語モデルである AI 言語モデル LLaMA を発表 Meta が 650 億のパラメータを持つ大規模言語モデルである AI 言語モデル LLaMA を発表 Apr 14, 2023 pm 06:58 PM

2月25日のニュースによると、Metaは現地時間金曜日、研究コミュニティ向けに人工知能(AI)に基づく新しい大規模言語モデルを立ち上げ、ChatGPTに刺激されたMicrosoft、Google、その他の企業も人工知能に参加すると発表した。 . 知的な競争。 Meta の LLaMA は、「Large Language Model MetaAI」(LargeLanguageModelMetaAI) の略称であり、政府、コミュニティ、学術界の研究者および団体が非営利ライセンスに基づいて利用できます。同社は、基礎となるコードをユーザーが利用できるようにするため、ユーザーはモデルを自分で調整して研究関連のユースケースに使用できるようになります。 Meta 氏は、モデルの計算能力要件について次のように述べています。

史上最大の ViT を便利にトレーニングしましたか? Google、ビジュアル言語モデルPaLIをアップグレード:100以上の言語をサポート 史上最大の ViT を便利にトレーニングしましたか? Google、ビジュアル言語モデルPaLIをアップグレード:100以上の言語をサポート Apr 12, 2023 am 09:31 AM

近年の自然言語処理の進歩は主に大規模言語モデルによるものであり、新しいモデルがリリースされるたびにパラメータと学習データの量が新たな最高値に押し上げられ、同時に既存のベンチマーク ランキングが壊滅することになります。たとえば、今年 4 月に Google は、5,400 億パラメータの言語モデル PaLM (Pathways Language Model) をリリースしました。これは、一連の言語および推論テストで人間を超えることに成功し、特に数ショットの小規模サンプル学習シナリオで優れたパフォーマンスを発揮しました。 PaLM は、次世代言語モデルの開発方向であると考えられています。同様に、視覚言語モデルは実際に驚くべき働きをしており、モデルの規模を大きくすることでパフォーマンスを向上させることができます。もちろん、それが単なるマルチタスク視覚言語モデルであれば、

BLOOM は AI 研究の新しい文化を生み出すことができますが、課題はまだ残っています BLOOM は AI 研究の新しい文化を生み出すことができますが、課題はまだ残っています Apr 09, 2023 pm 04:21 PM

翻訳者 | Li Rui によるレビュー | Sun Shujuan BigScience 研究プロジェクトは最近、大規模言語モデル BLOOM をリリースしましたが、一見すると、OpenAI の GPT-3 をコピーする別の試みのように見えます。しかし、BLOOM が他の大規模自然言語モデル (LLM) と異なる点は、機械学習モデルの研究、開発、トレーニング、リリースへの取り組みです。近年、大手テクノロジー企業は大規模な自然言語モデル (LLM) を厳格な企業秘密のように隠しており、BigScience チームはプロジェクトの開始時から BLOOM の中心に透明性とオープン性を据えてきました。その結果、研究して研究し、誰もが利用できる大規模な言語モデルが誕生しました。 B

See all articles