ChatGPT를 사용하여 ElasticSearch dsl을 빠르게 시작하세요
SQL 플레이어로서 ElasticSearch를 접한 후 어떤 시나리오에서 bool 필터를 중첩해야 하는지, 언제 bool 쿼리가 필요한지, 언제 사용할 수 있는지 등 dsl의 이상한 쓰기 방식에 고민했습니다. 제거됩니다. 문제를 해결할 때 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", 세 개의 필드
- user_id string
- user_name string
- client_id 정수
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": "张三"}}]}}]}}}
이 쿼리에서는 부울 쿼리를 사용하여 지정된 기준이 문서를 필터링하는 데 사용되는지 확인합니다.
filter 절에는 두 가지 조건이 있습니다. 하나는 쿼리라는 용어를 사용하여 "client_id" 필드의 값이 123인 조건입니다. 두 번째 조건은 should 절이 포함된 중첩된 bool 쿼리입니다. should 절에는 두 개의 용어 쿼리가 포함되어 있습니다. 하나는 "user_name" 필드에 대한 것이고 다른 하나는 "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;
Ask ChatGPT:
질문 시작:
ES 인덱스 이름 "user", 다음 필드 포함:
- user_id string
- user_ 이름 string
- client_id int
- ticket_id
user_id에 따른 집계, count(ticket_id) > 100의 user_id, user_id
에 해당하는 user_name을 쿼리합니다. 답글 시작:
팔로우하려면 "user_id" 필드 집계, 조건 count(ticket_id) > 100을 충족하는 "user_id"를 쿼리하고 해당 "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",包含以下字段:
- 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就开始瞎说了。
위 내용은 ChatGPT를 사용하여 ElasticSearch dsl을 빠르게 시작하세요의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











언어 모델은 일반적으로 문자열 형식인 텍스트에 대해 추론하지만 모델에 대한 입력은 숫자만 가능하므로 텍스트를 숫자 형식으로 변환해야 합니다. 토큰화는 자연어 처리의 기본 작업으로, 연속적인 텍스트 시퀀스(예: 문장, 단락 등)를 특정 필요에 따라 문자 시퀀스(예: 단어, 구, 문자, 구두점 등)로 나눌 수 있습니다. 그 안에 있는 단위를 토큰 또는 단어라고 합니다. 아래 그림에 표시된 특정 프로세스에 따르면 먼저 텍스트 문장을 단위로 나눈 다음 단일 요소를 디지털화(벡터로 매핑)한 다음 이러한 벡터를 인코딩 모델에 입력하고 마지막으로 다운스트림 작업으로 출력하여 다음 작업을 수행합니다. 추가로 최종 결과를 얻으십시오. 텍스트 분할은 텍스트 분할의 세분성에 따라 Toke로 나눌 수 있습니다.

편집|제작자 Xingxuan|51CTO 기술 스택(WeChat ID: blog51cto) 지난 2년 동안 저는 기존 시스템보다는 대규모 언어 모델(LLM)을 사용하는 생성 AI 프로젝트에 더 많이 참여해 왔습니다. 서버리스 클라우드 컴퓨팅이 그리워지기 시작했습니다. 이들의 애플리케이션은 대화형 AI 강화부터 다양한 산업에 대한 복잡한 분석 솔루션 제공 및 기타 다양한 기능에 이르기까지 다양합니다. 퍼블릭 클라우드 제공업체가 이미 기성 생태계를 제공하고 있으며 이것이 저항이 가장 적은 경로이기 때문에 많은 기업이 이러한 모델을 클라우드 플랫폼에 배포합니다. 그러나 저렴하지는 않습니다. 클라우드는 확장성, 효율성, 고급 컴퓨팅 기능(요청 시 GPU 사용 가능)과 같은 다른 이점도 제공합니다. 퍼블릭 클라우드 플랫폼에 LLM을 배포하는 프로세스에는 잘 알려지지 않은 몇 가지 측면이 있습니다.

편집자 |ScienceAI 질문 응답(QA) 데이터 세트는 자연어 처리(NLP) 연구를 촉진하는 데 중요한 역할을 합니다. 고품질 QA 데이터 세트는 모델을 미세 조정하는 데 사용될 수 있을 뿐만 아니라 LLM(대형 언어 모델)의 기능, 특히 과학적 지식을 이해하고 추론하는 능력을 효과적으로 평가하는 데에도 사용할 수 있습니다. 현재 의학, 화학, 생물학 및 기타 분야를 포괄하는 과학적인 QA 데이터 세트가 많이 있지만 이러한 데이터 세트에는 여전히 몇 가지 단점이 있습니다. 첫째, 데이터 형식이 비교적 단순하고 대부분이 객관식 질문이므로 평가하기 쉽지만 모델의 답변 선택 범위가 제한되고 모델의 과학적 질문 답변 능력을 완전히 테스트할 수 없습니다. 이에 비해 개방형 Q&A는

2018년 Google은 BERT를 출시한 후 11개 NLP 작업의 State-of-the-art(Sota) 결과를 단번에 무너뜨리며 NLP 세계의 새로운 이정표가 되었습니다. 아래 그림에서 왼쪽은 BERT 모델 사전 설정이고 오른쪽은 특정 작업에 대한 미세 조정 프로세스입니다. 그중 미세 조정 단계는 텍스트 분류, 품사 태깅, 질문 및 답변 시스템 등과 같은 일부 다운스트림 작업에서 이후에 사용될 때 미세 조정을 위한 것입니다. BERT는 다양한 환경에서 미세 조정할 수 있습니다. 구조를 조정하지 않고 작업을 수행합니다. "사전 학습된 언어 모델 + 다운스트림 작업 미세 조정" 작업 설계를 통해 강력한 모델 효과를 제공합니다. 이후 '사전 학습 언어 모델 + 다운스트림 작업 미세 조정'이 NLP 분야의 주류 학습이 되었습니다.

언어 모델이 전례 없는 규모로 확장됨에 따라 다운스트림 작업에 대한 포괄적인 미세 조정 비용이 엄청나게 높아집니다. 이러한 문제를 해결하기 위해 연구자들은 PEFT 방식에 주목하고 채택하기 시작했다. PEFT 방법의 주요 아이디어는 미세 조정 범위를 작은 매개변수 세트로 제한하여 계산 비용을 줄이면서도 자연어 이해 작업에서 최첨단 성능을 달성하는 것입니다. 이러한 방식으로 연구자들은 고성능을 유지하면서 컴퓨팅 리소스를 절약할 수 있어 자연어 처리 분야에 새로운 연구 핫스팟을 가져올 수 있습니다. RoSA는 일련의 벤치마크에 대한 실험을 통해 동일한 매개변수 예산을 사용하는 이전 LoRA(낮은 순위 적응형) 및 순수 희소 미세 조정 방법보다 성능이 뛰어난 것으로 밝혀진 새로운 PEFT 기술입니다. 이 기사에서는 심층적으로 다룰 것입니다.

25일 뉴스에 따르면 메타는 연구 커뮤니티를 위한 인공지능(AI) 기반의 새로운 대규모 언어 모델을 출시한다고 현지시간 금요일 발표했다. 마이크로소프트, 구글 등 ChatGPT의 자극을 받은 다른 기업들도 인공지능에 합류할 예정이다. . 지능적인 경쟁. Meta의 LLaMA는 "Large Language Model MetaAI"(LargeLanguageModelMetaAI)의 약어로, 정부, 커뮤니티, 학계의 연구자 및 단체가 비상업적 라이선스로 사용할 수 있습니다. 회사는 사용자가 기본 코드를 사용할 수 있도록 하여 사용자가 모델을 직접 조정하고 연구 관련 사용 사례에 사용할 수 있도록 할 것입니다. Meta는 컴퓨팅 성능에 대한 모델 요구 사항을 명시했습니다.

최근 몇 년간 자연어 처리의 발전은 주로 대규모 언어 모델에서 비롯되었습니다. 출시되는 각각의 새로운 모델은 매개변수와 훈련 데이터의 양을 새로운 최고치로 끌어올리는 동시에 기존 벤치마크 순위를 무너뜨릴 것입니다. 예를 들어, 올해 4월 Google은 5,400억 매개변수의 언어 모델 PaLM(Pathways Language Model)을 출시했는데, 이는 일련의 언어 및 추론 테스트에서 인간을 성공적으로 능가했으며, 특히 소수의 소규모 샘플 학습 시나리오에서 탁월한 성능을 발휘했습니다. PaLM은 차세대 언어 모델의 개발 방향으로 간주됩니다. 마찬가지로 시각적 언어 모델은 실제로 놀라운 효과를 발휘하며 모델의 크기를 늘려 성능을 향상할 수 있습니다. 물론 멀티 태스킹 시각적 언어 모델에 불과하다면

번역기 | 검토자: Li Rui | Sun Shujuan BigScience 연구 프로젝트는 최근 대규모 언어 모델 BLOOM을 출시했습니다. 언뜻 보면 OpenAI의 GPT-3을 복사하려는 또 다른 시도처럼 보입니다. 그러나 BLOOM이 다른 대규모 자연어 모델(LLM)과 차별화되는 점은 기계 학습 모델을 연구, 개발, 교육 및 출시하려는 노력입니다. 최근 몇 년 동안 기술 대기업들은 엄격한 영업비밀처럼 대규모 자연어 모델(LLM)을 숨겨왔고, 빅사이언스 팀은 프로젝트 초기부터 투명성과 개방성을 BLOOM의 중심에 두었습니다. 그 결과, 연구하고 연구할 수 있고 모든 사람이 사용할 수 있는 대규모 언어 모델이 탄생했습니다. 비
