![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ES搜索优化
文章平均质量分 80
水的精神
一件事,要么不做,要么做到极致。
展开
-
ES性能优化最佳实践- 检索性能提升30倍!
虽然Elasticsearch是一款强大的搜索引擎技术,但在超大规模数据检索中,尤其是在处理大量检索关键词(150个以上)、对多个字段执行检索并使用脚本排序时,可能会面临严重的性能问题。在我们实际的业务中,检索的时间可能到达300秒,无法满足实时交互需求。本文带你打开一个新思路。在未添加任何资源的情况下,我把性能提升了30倍,请求时间控制在10s内。多数请求能在3秒5秒内完成。一起来看看我是如何做到的叭。原创 2023-10-26 20:22:39 · 910848 阅读 · 3 评论 -
几千亿级集群管理,近百个实用优化参数,涵盖集群、索引、客户端
当涉及管理和优化千亿级数据时,性能优化是至关重要的。在这篇文章中,我们将探讨一些关键的性能优化方向,结合我积累的上百个优化参数的经验,为大规模数据管理提供有价值的见解。 在本文中,我给大家提供近百个实用的优化参数,涵盖集群级别、索引级别、客户端级别,三个层面。这些都是两年的几千亿集群优化经验,希望能帮到大家。原创 2023-10-24 23:56:33 · 387364 阅读 · 0 评论 -
ES 8.x 向量检索性能测试 & 把向量检索性能提升100倍!
向量检索不仅在的跨模态检索场景中应用广泛,随着chat gpt的火热,es的向量检索,在Ai领域发挥着越来越大的作用。 在本文中,妥妥滴都是干货,因为不仅有性能测试,还有搜索性能优化。这里预告以下,在千万规模数据中做的测试,将检索性能提升了将近100倍。在本文中可以看看性能是如何被优化的。原创 2023-10-24 21:11:24 · 823407 阅读 · 10 评论 -
白话ES搜索相关性问题
之前使用es,更多的是使用term查询,和agg聚合分析。对相关性关注较少。实际上es擅长的是做模糊搜索,相关性搜索。ES是一个开源的通用的检索工具,能满足百分之八十的需求。相关性这个问题,是一个非常有意思的问题,值得深思。搞清楚相关性打分规则,有利于提高召回内容的相关性。深入了解以后,能帮我们解决剩下的百分之二十的需求。原创 2023-06-05 01:53:47 · 385292 阅读 · 1 评论 -
RAG 召回提升相关方案分享
最近大半年时间都在做RAG的工作,分享一点个人探索的方向。和提升的方案。文章中会分享是如何做的,以及对应的效果。原创 2024-07-13 15:50:33 · 1422 阅读 · 0 评论 -
搜索引擎中的相关性模型
相关性模型主要关注的是query和doc的相关性。例如给定query,和1000个doc,找到哪个doc是好query最相关的。原创 2024-07-13 13:52:36 · 653 阅读 · 0 评论 -
大厂推广搜相关的技术文章汇总(不看会后悔系列)
他山之石可以攻玉,最近在看搜广推的内容。看到了美团,腾讯、阿里、蘑菇街等分享的搜广推的文章。本篇文章是一个知识目录,可以很好的看到搜广推近10年的发展变化。原创 2024-04-06 12:49:54 · 359 阅读 · 0 评论 -
再仔细品品Elasticsearch的向量检索
我在es一开始有向量检索,就开始关注这方面内容了。特别是在8.X之后的版本,更是如此。我也已经把它应用在亿级的生产环境中,用于多模态检索和语义检索,以及RAG相关。这篇文章再带大家品一品es的向量检索。原创 2024-03-24 22:17:44 · 1888 阅读 · 1 评论 -
为什么不要使用elasticsearch
互联网上有很多文章,都在讲为什么要使用elasticsearch,却很少有人讲为什么不要使用elasticsearch。作为深入研究elasticsearch四年,负责公司万亿级别检索的操盘手,借着这篇文章,给大家分享一下,为什么不要使用elasticsearch。原创 2024-03-12 20:58:55 · 1539 阅读 · 0 评论 -
IR测试数据集调研,以及测试标准
兵马未动,粮草先行。对于做搜索以及搜索提升这件事来说,测试数据集就是粮草。找到一个高质量的测试数据集是非常重要的,它可以用来当作一个标杆,或者说当作一把尺子,来衡量检索系统的好坏。往往构建一个好的测试集,在质量和熟练上很难取舍。高质量的数据,通常需要人工标注,需要大量的人力物力(就是说很花钱)。高质量,测试书记集大,适合自己的场景,往往是第一要求。在我看来,测试数据集应该大于100w,小于300万,测试问题应该在30w左右。因为数据体量再大一些,单独跑一轮测试,可能需要的时间会很长。原创 2024-03-09 13:35:11 · 1591 阅读 · 0 评论 -
IR 召回测试数据集(中文测试集)——T2Ranking
文章排名包括两个阶段:文章检索和文章重排序,这对信息检索(IR)领域的学术界和业界来说都是重要而具有挑战性的课题。然而,常用的文章排名数据集通常集中在英语语言上。对于非英语场景,如中文,现有的数据集在数据规模、细粒度相关性注释和假阴性问题方面受到限制。为了解决这个问题,我们引入了T2排名,一个大规模的中国通过排名基准。T2排名包括超过300K的查询和超过200万个独特的段落,来自现实世界的搜索引擎。专家注释者被招募来为查询通道对提供4级分级的相关性评分(细粒度),而不是二进制的相关性判断(粗粒度)。原创 2024-03-08 11:26:24 · 888 阅读 · 0 评论 -
TREC 2023 Deep Learning Track Guidelines
TREC 是 Text REtrieval Conference(文本检索会议)的缩写。它是一个由美国国家标准技术研究所(NIST)主办的年度会议,旨在推动信息检索领域的研究和发展。TREC 于 1992 年开始举办,是一个国际性的会议,每年都吸引着来自学术界、工业界和政府机构的研究人员参与。TREC 的主要目标之一是提供一个平台,让研究人员能够评估和比较不同信息检索系统的性能。为此,TREC 组织了一系列任务和评测,参与者必须根据特定的数据集和评估标准来设计和评估他们的信息检索系统。原创 2024-03-07 19:34:56 · 1350 阅读 · 0 评论 -
IR 召回测试数据集(英文测试集)——MS MARCO
如何评估召回系统的好坏?如何评估检索系统是否有提升?在任何人面前,空口无凭。我们需要一把尺子来衡量。我们需要一个高质量的测试数据集合。每次都在相同的测试数据集上,进行评测。本篇文章介绍一个高质量的应为的测试数据集——MS MARCO。当你关注召回的效果的时候,一定需要有自己的测试数据集合。如果你是做rag的,那一定会关注到数据的召回效果。原创 2024-03-07 19:24:10 · 1000 阅读 · 0 评论 -
RAG中如何解决上下文知识连贯性问题 || 如何更好的切分和组织非结构化的文档数据
本文探讨了在RAG中进行搜索时的难度级别及其解决方法。对于容易级别,主要涉及解决搜索问题,而对于困难级别,则需要考虑上下文和复杂性。文中根据斯坦福论文提出了解决这些问题的方法,包括从段落中获取总结性问题的答案,以及利用树形结构组织数据来解决上下文关联问题。原创 2024-02-23 17:30:24 · 1490 阅读 · 0 评论 -
Query Rewrite —— 原始query蒸馏,提升召回率,和召回质量
query改写其实理解起来很简单,就是把原始的query经历一系列的操作,然后变成另外一个query,从而达到提升召回率和准确率的效果。query改写的过程中,这一系列的操作,其实是围绕两个方面展开的。第一是在原始query中添加一些有用的内容(可以理解为query扩展),把本该召回却没有召回的内容给召回,提高topK的召回率。第二是在原始query中去掉一些杂质内容(可以理解为蒸馏),对于长尾的query,很可能存在很多的干扰项。特别是在Bm25相关性召回下,对query条件进行蒸馏,会有一定的收益。原创 2024-02-22 13:26:01 · 404 阅读 · 0 评论 -
用十篇论文聊聊关于使用LLM做query Rewrite的问题
本文介绍了query改写。介绍了七种利用LLM进行query改写方式。包含了10余篇论文,论文有的出自微软、谷歌等大厂之手,还有北大,人大等高校。质量有所保障,对比了不同的query改写的效果。原创 2024-02-21 19:11:44 · 3442 阅读 · 0 评论 -
Query Rewrite —— 基于大模型的query扩展改写,HyDE 生成假设性答案(论文)
通常用户的query是无法预测的。给定一个候选集,直接命中和query最相关的文档是一件困难的事情。这篇论文中,提出了HyDE,也就是根据query,利用LLM去生成假设性回答。然后将给出的假设性回答,去做文本的embedding,然后做向量检索召回。论文中证明,HyDE这种方式相比较BM25可以。原创 2024-02-21 16:29:25 · 1199 阅读 · 0 评论 -
Query Rewrite —— 基于大模型的query扩展改写,PRF(论文)
本文介绍了一篇典型的 PRF (Pseudo-relevance feedback)思路的论文,用于利用LLM来做query改写,提升召回率,召回效果。为大家介绍PRF的主要流程,PRF的提升效果。PRF的弊端。 以及不同规模的LLM对改写的效果的影响。原创 2024-02-21 15:39:49 · 843 阅读 · 0 评论 -
Query Rewrite —— 基于大模型的query扩展改写,PRF+ GRF协同发力减少LLM的幻觉问题(论文)
(伪相关反馈)为了解决模型的幻觉问题,在改写前,先拿原始query去进行一次query,然后将召回的数据作为参考内容,送给模型,根据这些内容重新生成query。优势:可以一定程度上解决模型幻觉问题,有效解决解决词汇表不匹配问题。毕竟是根据query召回的内容去生成query的。劣势:这将会很依赖首次的检索,如果召回的数据质量很差,就GG了。(生成相关反馈)最近关于生成相关性反馈(GRF)的研究表明,使用从大型语言模型生成的文本的查询扩展模型可以改进稀疏检索,而不依赖于第一次检索的有效性。原创 2024-02-21 11:59:28 · 1429 阅读 · 0 评论 -
搜索中关于稀疏检索和稠密向量检索的召回效果比较
不同检索方式说明最近在做搜索召回提升相关的研究工作。对比了稀疏检索和稠密向量检索的效果。其中使用的搜索引擎为elasticsearch8.x版本。稀疏检索包括BM25的检索方式,以及es官方在8.8之后版本提供的稀疏向量模型的方式。稠密向量检索,是指借助机器学习的模型做文本嵌入,然后用es8.x以后版本提供的向量检索。测试数据说明测试数据包括了中文和英文,涉及了法律和新闻数据。原创 2024-02-20 23:11:33 · 1719 阅读 · 0 评论 -
Query Rewrite —— 基于大模型的query扩展改写,如何减少LLM的幻觉问题,召回提升15%(北大论文)
如何有效的丰富扩展query,是一个提升召回率的关键问题。在大模型时代到来后,大家都开始使用LLM来扩展query。尽管LLM具有显著的文本生成能力,但它也容易产生幻觉,仍然难以代表其训练语料库中包含的完整的长尾知识。在北大的论文中,介绍了通过检索和大模型的结果,提升召回率的方法。论文提出:为了缓解上述模型的幻觉问题,方案是由原始query检索到的文档D,将D提供给模型,作为辅助材料,再让模型生成新的query。先进行一次普通检索,召回数据有可能帮助llm做出更好的预测。原创 2024-02-20 16:06:47 · 1511 阅读 · 2 评论 -
Query Rewrite —— 基于大模型的query扩展改写,通过GRM减少LLM的幻觉问题(论文)
自从大模型火了以后,各行业各都发生了翻天覆地的变化。其中query Rewrite也开始使用大模型来做query 扩展。大模型所有的优点都可以得到很好的体现,同样大模型的所有缺点也无法避免。这里只说一个,关于大模型的幻觉问题。如果使用大模型来生成改写query,幻觉问题,会非常糟糕的变成噪音query数据,而影响了最终的查询的召回,甚至是南辕北辙。这篇论文提出,建设相关性评估模型,来过滤掉模型生成的负面的case。从而减少使用大模型做query Rewrite的时候的负面影响。的。原创 2024-02-20 10:44:34 · 939 阅读 · 0 评论 -
Query Rewrite —— 基于大模型的query扩展改写,综合考虑上下文信息(人大论文)
在session上下文中,捕获用户的搜索意图,是一件较为复杂和困难的事情。一起看一下人大的这篇论文。论文中提出了一个简单而有效的提示框架,称为LLM4CS,以利用LLM作为搜索意图解释器来促进会话搜索。具体来说,我们首先提示LLM在多个视角下生成较短的查询重写和较长的假设响应,然后将这些生成的内容聚合成一个集成的表示,以稳健地表示用户的真实搜索意图。原创 2024-02-19 17:44:33 · 2267 阅读 · 1 评论 -
Query Rewrite —— 基于大模型的query扩展改写(基于思维链),召回提升3%
查询扩展是一种广泛应用于提高搜索系统召回率的技术。在本文中,我们提出了一种利用大型语言模型(llm)的生成能力的查询扩展方法。与传统的查询扩展方法,如伪相关反馈(PRF),它依赖于检索一组好的伪相关文档来扩展查询不同,我们依赖于LLM的生成和创造性能力,并利用模型中固有的知识。我们研究了各种不同的提示,包括零射击、少射击和思维链(CoT)。我们发现CoT提示对于查询扩展特别有用,因为这些提示指示模型逐步分解查询,并可以提供大量与原始查询相关的术语。原创 2024-02-19 11:33:06 · 3051 阅读 · 0 评论 -
Query Rewrite —— 基于大模型的query扩展改写,召回提升3%-15%
本文介绍了一种简单而有效的查询扩展方法。通过大语言模型(LLM)的小样本提示生成答案,然后和原始query进行拼接,作为新的query。实验结果表明query2doc 通过以下方式提高了 BM25 的性能3% 到 15%。原创 2024-02-18 18:18:01 · 1522 阅读 · 0 评论 -
如何构建Prompt,帮我生成QA,作为召回率检索的测试集?
最近在做搜索召回率的提升工作。粮草未动兵马先行!在做之前应该先有一把尺子来衡量召回率的好坏。所以应该先构建测试数据集,然后去做标准化测试。有了测试机集以后。再去做搜索优化,才能看出来效果。当然可以选择一些开源的测试集。如果可以的话构建自己场景下的数据集更好一些。还原生产环境的测试数据才是最有用的。既然有了大模型,我选择用模型来给我构建测试数据。(人工标注数据的成本是极高的,使用模型更划算一些。)在这篇文章中,我会分享如何通过写Prompt,来帮我构建数据集。原创 2024-01-11 20:31:13 · 1449 阅读 · 0 评论 -
llama_index 创始人为我们展示召回提升策略(提升15%)
看看 llama_index 创始人是如何将召回效果提升15%的,简单来讲就是句向量和数据分层。原创 2024-01-11 13:27:10 · 865 阅读 · 0 评论 -
ES慢查询分析——性能提升6 倍
生产环境频繁报警。查询跨度91天的数据,请求耗时已经来到了30+s。报警的阈值为5s。经过问题排查,提供了优化方案。最后请求时间降到5s内。原创 2023-12-26 20:03:55 · 2524 阅读 · 0 评论 -
ES集群G1回收器,堆空间无法被回收问题
ES堆空间不足的问题,困扰了我有两年的时间。dump堆去分析,也未能分析出来,堆到底是被什么占用了。我把堆空间给了31.9G,这是指针压缩生效的临界值,如果再大就指针压缩失效了。痛苦的是,随着时间的增长。堆空间在持续增长,且GC和FGC都不能把堆给回收掉。GC完了还是28G。堆空间不足以后,毋庸置疑的是,会带来各种各样的问题。垃圾回收更频繁(STW会让卡着),节点通信不稳定,节点假离线、同时对写入和查询都会频繁的触发堆的父级熔断。不管是哪个问题都会导致服务不可用,大量的慢查询。原创 2023-12-20 23:55:06 · 1163 阅读 · 0 评论 -
elasticsearch在执行完forcemerge 后查询性能可能更差了,为何?
通常我们认为一个 LSM 架构的系统,其文件数量 merge 到更少总会带来查询性能的提升,但Elasticsearch 和 lucene 确实有他的复杂之处,最近遇到一个案例,当索引 forcemerge 为 1 之后其查询延迟和查询 QPS都降低了,主要原因是, forcemerge 之后,查询语句构建 query cache的代价更大。题外话:在 query cache 的 skip 机制是个很好的策略,但250并不适用所有场景,目前 Elasticsearch 没有可以调节的接口。原创 2023-12-17 18:13:49 · 536 阅读 · 0 评论 -
高级调优:查找并修复 Elasticsearch 慢查询
Elasticsearch 是一个非常灵活且功能丰富的应用程序,它提供了许多不同的数据查询方法。但是,您是否遇到过查询速度低于预期的情况?对于像 Elasticsearch 这样的分布式系统,可能会有各种影响查询性能的因素,包括负载平衡器设置、网络延迟(带宽、网卡/驱动程序)等在内的各种外部因素。在本篇博文中,我将讨论导致慢查询的原因,以及如何在 Elasticsearch 的上下文中识别它们。转载 2023-12-17 17:50:20 · 746 阅读 · 0 评论 -
2023年12月5日,北京elastic Meetup 腾讯分享的搜索优化经验
这里整理了 2023年12月5日,北京elastic Meetup 腾讯分享的搜索优化经验。原创 2023-12-17 15:00:43 · 1039 阅读 · 0 评论 -
如何做搜索?如何做搜索优化?如何在搜索领域快速成长?
三年多的搜索研发经历,万亿级集群管理经历,集群优化搜索优化经历。将生产环境的集群,检索性能提升了数十倍。也遇到过大大小小的生产事故。在工作中有幸能够得到前谷歌中国首席架构陈老师的指导。在搜索方面,自己也积累的蛮多的经验。 在篇文章中,先粗略的分享一下,在搜索方面,在使用elasticsearch做搜索方面,应该有哪些知识储备。如何做搜索?如何做好的搜索?如何提升性能。原创 2023-12-17 12:13:20 · 1247 阅读 · 0 评论 -
期待一下elasticsearch还未发布的8.12版本,由lucene底层带来的大幅度提升
现在是北京时间23年12月10日。当前es最新版本还是es8.11版本。我们可以期待一下不久的将来,es的8.12版本看到大幅度的检索性能提升。受益于 Lucene 9.9版本,内核带来的大幅提升!此次向量检索利用底层指令fma会性能提升5%。并且还提供了向量点积的能力。重点较大幅度提升了多关键词匹配topK的搜索场景。原创 2023-12-10 11:41:38 · 525 阅读 · 0 评论 -
ES通过抽样agg聚合性能提升3-5倍
一直以来,es的agg聚合分析性能都比较差(对应sql的 group by)。特别是在超多数据中做聚合,在搜索的条件命中特别多结果的情况下,聚合分析会非常非常的慢。一个聚合条件:聚合分析请求的时间 = search time + agg timeN个聚合条件:聚合分析请求的时间 = search time + agg time * N搜索的数据范围越大,聚合请求时间越长。搜索条件命中的数据越多,聚合请求的时间越长。聚合请求时候非常吃cpu 和io资源的。原创 2023-12-02 17:04:30 · 1588 阅读 · 0 评论 -
Elasticsearch同义词最佳实践
毫无疑问,使用同义词是搜索工程师工具箱中最重要的技巧之一。尽管新手有时会低估同义词的重要性,但几乎所有搜索系统都离不开它。与此同时,人们有时仍会低估与使用同义词相关的一些复杂情况和微妙情形,甚至高级用户也不例外。用好同义词库,在搜索的过程中,在提升召回率上,有着奇迹般的力量。最近正在做同义词库的工作,在提升召回效果方面,确实有很大的贡献。本篇文章中,将会详细讲解如何使用,其中的坑,以及各种玩法的最佳实践。本篇博文还会回答一些有关同义词使用方法的常见问题原创 2023-11-18 15:44:44 · 1134 阅读 · 1 评论 -
ES在超多分片搜索场景下提升N倍 - 优化
es关于在集群中特大搜索范围的问题,源码中存在串性的问题。通过修改参数提升N倍。原创 2022-09-24 15:36:30 · 386232 阅读 · 0 评论 -
ES优化实战- forceMerge搜索提升测试报告
对于历史不变的数据,段合并的效果是非常好的。它对普通查询(query_string)有着较大的提升,提升在10%~90%不等的效果,其中搜索条件命中的结果集越多,提升就越明显。段合并对聚合分析的提升也是较大的,提升在10%~80%,这是一个非常大的提升,例如聚合从16s到了3s。原创 2022-09-25 11:55:43 · 1810 阅读 · 0 评论 -
ES千亿级搜索实战-架构优化
不管什么数据库,在应对千亿级别以上的数据的实时检索场景,都会有一定的压力。ES是搜索引擎,优秀的设计理念能够提速,但是也会表现的力不从心。往往会出现,集群随着数据越来愈多,而变得越来越慢。通常数据在来到10亿,对于命中两三亿结果集的时候,搜索时间都到了5秒以上。在百亿的搜索场景下,效果更差,可能在10秒以上。来到千亿级别,效果就更差了,可能来到了几十秒。原创 2022-09-27 23:44:27 · 3462 阅读 · 0 评论 -
腾讯千亿级别检索ES生产优化经验
腾讯系,ES内核优化好文推荐!原创 2023-03-13 01:16:16 · 337 阅读 · 0 评论