Elasticsearch:2023 年 Lucene 领域发生了什么?
作者:来自 Elastic Adrien Grand

2023 年刚刚结束,又是 Apache Lucene 开发活跃的一年。 让我们花点时间回顾一下去年的亮点。
社区
2023 年,有:
- 5 个次要版本(9.5、9.6、9.7、9.8 和 9.9),
- 1 个补丁版本 (9.9.1),
- 1 个新提交者,
- 4 名新 PMC 成员,
来自 97 位独特贡献者的 620 项提交。
向量搜索
真正的语义搜索检索和检索增强生成的承诺对大大小小的用户都极具吸引力。 因此,向量搜索成为 2023 年 Apache Lucene 的主要主题也就不足为奇了。更具体地说,在多个版本中添加了许多有趣的功能和优化:
- 支持 int8 向量。 (Lucene 9.5)
- 更快地合并 HNSW 图。 (Lucene 9.6)
- 通过支持向量化 (Lucene 9.7) 和 FMA (Lucene 9.9) 加快索引、合并和查询速度。
- 支持将向量搜索与块连接相结合。 (Lucene 9.8)
- 支持索引时向量的自动 int8 标量量化。 (Lucene 9.9)
基数排序随处可见
索引是指以一种可以在搜索时有效访问数据的方式组织数据,这在实践中涉及大量排序。 当谈到排序时,基数排序 (radix sort) 是王道(如果适用的话!)。 Lucene 已经在一些性能敏感的地方使用基数排序有一段时间了,例如对段的术语字典进行排序。 但基数排序的使用在 2023 年进一步增加,并开始用于优化:
- 应用于删除,
- 启用索引排序时对 sorting postings 排序,
- TermInSetQuery 构造,
- 索引重新排序。
更快的查询评估
我们已经介绍了向量搜索的一些性能改进,但关键字搜索在 2023 年也出现了重大加速。请查看此博客,其中介绍了 9.7、9.8 和 9.9 版本中发生的主要加速。 这些改进既适用于传统关键字搜索,也适用于稀疏向量搜索,例如由学习的稀疏检索模型创建的搜索。
与 Java 虚拟机更紧密的集成
作为一个 Java 库,Lucene 很大程度上依赖于 Java 虚拟机 (JVM),并且偶尔会发布 Lucene 特别感兴趣的新功能。 特别集成了两个功能,如果你在足够现代的 JVM 版本上运行,那么它们将被自动使用:
- Panama vector API 用于加速向量比较,例如计算两个向量之间的余弦相似度或平方距离。
- Panama MemorySegment API 是一个改进的 API,用于将文件映射到内存中。
很难划清界限,但我会在这里停下来,因为我正在努力寻找 2023 年发生的其他良好变化的共同主题。:) 请继续关注 Apache Lucene 领域上的美好 2024 年!
原文:What happened in Lucene land in 2023? — Elastic Search Labs
相关文章:

Elasticsearch:2023 年 Lucene 领域发生了什么?
作者:来自 Elastic Adrien Grand 2023 年刚刚结束,又是 Apache Lucene 开发活跃的一年。 让我们花点时间回顾一下去年的亮点。 社区 2023 年,有: 5 个次要版本(9.5、9.6、9.7、9.8 和 9.9),1 …...
Java算法 leetcode简单刷题记录4
Java算法 leetcode简单刷题记录4 买卖股票的最佳时机: https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/ 笨办法: 记录当天的值及之后的最大值,相减得到利润; 所有的天都计算下,比较得到利润最大值&…...

opencv#27模板匹配
图像模板匹配原理 例如给定一张图片,如上图大矩阵所示,然后给定一张模板图像,如上图小矩阵。 我们在大图像中去搜索与小图像中相同的部分或者是最为相似的内容。比如我们在图像中以灰色区域给出一个与模板图像尺寸大小一致的区域,…...

【论文阅读笔记】Swin-Unet: Unet-like Pure Transformer for Medical Image Segmentation
1.介绍 Swin-Unet: Unet-like Pure Transformer for Medical Image Segmentation Swin-Unet:用于医学图像分割的类Unet纯Transformer 2022年发表在 Computer Vision – ECCV 2022 Workshops Paper Code 2.摘要 在过去的几年里,卷积神经网络ÿ…...

IS-IS:01 ISIS基本配置
这是实验拓扑,下面是基本配置: R1: sys sysname R1 user-interface console 0 idle-timeout 0 0 int loop 0 ip add 1.1.1.1 24 int g0/0/0 ip add 192.168.12.1 24 qR2: sys sysname R2 user-interface console 0 idle-timeout 0 0 int loop 0 ip add …...
基于极限学习机的曲线分类,基于极限学习机的光谱分类,基于极限学习机的分类预测
目录 背影 极限学习机 基于极限学习机的曲线分类,基于极限学习机的光谱分类,基于极限学习机的分类预测 主要参数 MATLAB代码 效果图 结果分析 展望 完整代码下载链接:基于极限学习机的曲线分类,基于极限学习机的光谱分类,基于极限学习机的分类预测的MATLAB代码资源-CSDN…...

miniconda安装
Miniconda是一个小型版的Anaconda,它包含了一个包管理工具conda和Python。Miniconda适用于那些只需要管理Python包和环境,而不需要Anaconda中包含的大部分科学计算工具的用户。 Miniconda的安装过程相对简单。你可以从清华大学开源软件镜像站下载Minico…...
PHP判断访客是否手机端(移动端浏览器)访问的方法总结
PHP判断访客是否手机端、移动端、浏览器访问的方法总结 方法一:使用$_SERVER全局变量方法二:使用PHP的get_browser函数方法三:使用第三方库(Mobile Detect)方法四:使用WURFL设备数据库 方法一:使…...

vscode无法自动补全
前提:安装c/c插件 c/c插件功能非常强大,几乎能满足日常编码过程中常用的功能;因此也包含自动补全的功能,开启方法如下: 文件->首选项->设置: 扩展->c/c->Intellisense,找到Intell…...
深度学习记录--指数加权平均
指数加权移动平均(exponentially weighted moving averages) 如何对杂乱的数据进行拟合? 通过指数加权平均可以把数据图近似拟合成一条曲线 公式: 其中表示第t个平均数,表示第t-1个平均数,表示第t个数据,表示变化参数…...

如何生成图源二维码?
数据是GIS的血液。 自从苹果端与安卓端水经微图APP(简称“微图APP”)上线之后,有用户反馈图源比较少的问题。 其实,微图APP支持通过图源二维码添加自定义图源,而该二维码则可以通过微图Web版生成。 如何生成图源二维…...

PowerShell install 一键部署grafana
grafana 前言 Grafana 是一款开源的数据可视化和监控仪表盘工具。它提供了丰富的数据查询、可视化和报警功能,可用于实时监控、数据分析和故障排除等领域。 通过 Grafana,您可以连接到各种不同的数据源,包括时序数据库(如 Prometheus、InfluxDB)和关系型数据库(如 MySQ…...
笨蛋学设计模式行为型模式-解释器模式【23】
行为型模式-解释器模式 8.10解释器模式8.10.1概念8.10.2场景8.10.3优势 / 劣势8.10.4解释器模式可分为8.10.5解释器模式8.10.6实战8.10.6.1题目描述8.10.6.2输入描述8.10.6.3输出描述8.10.6.4代码 8.10.7总结 8.10解释器模式 8.10.1概念 解释器模式用于定义一个语言的文法…...

SAP ABAP SUBMIT常用用法
导语:一直对SUBMIT的用法模模糊糊,每次用都要去查询,本次痛下决心,腾出时间,梳理了一下,如果本文对你有帮助,点个赞再走~ 之前分享过SUBMIT调用程序获取内表的值,就不重…...
GitLab备份与恢复测试(基于Docker)
GitLab环境准备 docker run --name gitlab \ -p 2022:22 -p 2080:80 -p 2443:443 -d \ -v /opt/gitlab/config:/etc/gitlab \ -v /opt/gitlab/gitlab/logs:/var/log/gitlab \ -v /opt/gitlab/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:16.2.1-ce.0备份 1.修改配置文件…...
android studio开发的一些问题
1、编译后,输出日志乱码 Help-->Edit Custom VM Options...-->-Dfile.encodingUTF-8 2、编译时,出现:connect timed out 试过很多方法啦,都是不行的。最后我自己摸索出方法。 [1]android studio-->Project-->Grad…...
辞职对于我来说,不可避免(10)
人,从有辞职的想法,再到把辞职出口要多久,一天、一星期还是一个月 “别以为我不知道你搞了什么小动作,以后别瞎搞,不然我不客气”,从老板说出来这句话开始,这家公司我注定不可能再待下去。 我很诧异,小蔡刚离职,公司干活的技术就我一个,况且我也没哪里得罪你,你冒出…...

【Java】--网络编程:基于TCP协议的网络通信
【Java】–网络编程:基于TCP协议的网络通信 文章目录 【Java】--网络编程:基于TCP协议的网络通信一、TCP协议1.1 概念1.2 三次握手1.2.1 文字描述1.2.2 画图演示 1.3 四次挥手1.3.1 文字描述1.3.2 画图演示 二、基于TCP的Socket网络编程2.1 概念2.2 服务…...

CMake+QT+大漠插件的桌面应用开发(QThread)
文章目录 CMakeQT大漠插件的桌面应用开发(QThread)简介环境项目结构配置编译环境代码 CMakeQT大漠插件的桌面应用开发(QThread) 简介 在CMakeQT大漠插件的桌面应用开发中已经给出了QT配合大漠插件开发桌面应用的样例 不过由于主…...
【笔记】Helm-3 主题-9 Helm高级技术
Helm高级技术 这部分解释说明了使用Helm的各种高级特性和技术。这部分旨在为Helm的高级用户提供高度自定义和操作chart及发布的信息。每个高级特性都会有它自己的权衡利弊, 因此每个使用它们的都要有Helm的深度知识并小心使用。或者换言之,谨记 Peter Pa…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...

多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...