当前位置: 首页 > article >正文

在 Elasticsearch 中,存储向量查询速度最高提升 3 倍

作者来自 Elastic Benjamin TrentElasticsearch 9.4 提供了一种更简单的方式来搜索存储在 Elasticsearch 索引中的向量并将延迟最高降低 3 倍。从向量搜索到强大的 REST APIElasticsearch 为开发者提供了最全面的搜索工具集。深入体验 Elasticsearch Labs 仓库中的示例 notebooks尝试一些新功能。你也可以立即开始免费试用或者在本地运行 Elasticsearch。过去在 Elasticsearch 中查找与某个已存储向量相似的文档需要两次往返请求先使用 GET 获取向量然后在 k 最近邻 kNN 查询中将该向量发送回去。Elasticsearch 9.4 通过 query_vector_builder.lookup 将这一流程合并为一次请求从而简化了 API并在双节点 Google Cloud Platform GCP 基准测试中将延迟最高降低 3 倍。为什么存储向量搜索过去需要两次请求此前当你想查找与某个已存储向量相似的文档时你需要调用 GET 从 Elasticsearch 获取向量值。调用 _search并在 Elasticsearch 中引用该向量值通过 JSON 序列化该向量值。这意味着需要两次承担序列化和网络成本两次请求中的向量序列化与反序列化成本。双向网络延迟成本。云部署中的潜在出口流量成本。在 Python 中这种模式会是from elasticsearch import Elasticsearch es Elasticsearch(HOST) # 1) Fetch the seed vector from Elasticsearch seed_doc es.get( indexsource_index, idseed_id, _source_includes[vector_field], ) query_vector seed_doc[_source][vector_field] # 2) Send it back in a kNN query resp es.search( indextarget_index, query{ knn: { field: vector_field, k: 10, num_candidates: 100, query_vector: query_vector, } }, )虽然这两次调用看起来开销不大但这些额外成本其实没有必要。让我们把它变得更好。Elasticsearch 9.4 中 query_vector_builder.lookup 的工作原理在 Elasticsearch 9.4 中我们新增了 lookup以简化 API 并消除不必要的成本from elasticsearch import Elasticsearch es Elasticsearch(HOST) resp es.search( indexproducts, query{ knn: { field: product-vector, k: 10, num_candidates: 100, query_vector_builder: { lookup: { index: seed-products, id: product-123, path: product-vector } }, } }, )现在此请求会获取存储在 product-vector 字段中的 dense_vector 值该值位于 seed-products 索引中 ID 为 product-123 的文档里。这个示例是一个 “more like this” 搜索用于查找与 ID 为 product-123 的向量最接近的向量。你可以引用任何索引从而有效地将 lookup 用作查询向量存储。lookup 向量搜索能够减少多少延迟我们的目标是简化使用体验并提升速度。性能提升不仅来自于消除客户端往返请求。许多 Elasticsearch 实例都涉及多个节点而节点之间的流量本身也会带来序列化和网络成本。Elasticsearch 会主动将执行偏向本地节点这也减少了服务器端的网络序列化成本。为了展示潜在的性能提升我们运行了一项基准测试。我们使用了经过修改的 so_vector 版本其中一条路径采用 GET 然后 _search 的模式另一条则使用 lookup。在 GCP 同一区域中的两个节点上运行后结果非常显著。延迟持续提升接近 3 倍。即使节点位于同一个数据中心和同一个可用区内网络和序列化成本依然会带来实际影响。百分位数get-then-knn毫秒lookup-knn毫秒降低幅度加速比p5010.37963.1409369.74%3.30 倍p9025.44295.8980776.82%4.31 倍p9927.71678.0710970.88%3.43 倍最大值 p100 28.52212.649755.65%2.25 倍此基准测试运行于 200 万文档规模下而延迟改善幅度将取决于你的整体搜索成本。即使加速幅度较小lookup 依然能够移除额外的客户端请求。更少的代码更少的往返请求。一种更简单的存储向量搜索路径有时候小变化也能带来巨大影响。虽然这是一个简单的功能但我希望它能减少你在使用 Elasticsearch 时的一些不必要摩擦并让我们变得更加讨人喜欢。这篇内容对你有多大帮助原文https://www.elastic.co/search-labs/blog/elasticsearch-vector-search-lookup

相关文章:

在 Elasticsearch 中,存储向量查询速度最高提升 3 倍

作者:来自 Elastic Benjamin Trent Elasticsearch 9.4 提供了一种更简单的方式来搜索存储在 Elasticsearch 索引中的向量,并将延迟最高降低 3 倍。 从向量搜索到强大的 REST API,Elasticsearch 为开发者提供了最全面的搜索工具集。深入体验 E…...

百度网盘高速下载神器:baidu-wangpan-parse全攻略,告别龟速下载!

百度网盘高速下载神器:baidu-wangpan-parse全攻略,告别龟速下载! 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘那令人抓狂…...

yudao-cloud云原生权限安全深度剖析:OAuth2、JWT与Nacos风险实战

1. 这不是一次“走流程”的渗透测试,而是一次对云原生权限模型的实战压力测试“yudao-cloud渗透测试:安全风险发现与修复”——这个标题里藏着三个关键信号:yudao-cloud是一个真实落地的、基于 Spring Cloud Alibaba 的国产开源微服务管理平台…...

UE5场景漫游跳转避坑指南:从UI交互到资源预热

1. 这不是“做个UI跳个关卡”那么简单:UE5场景漫游的起点陷阱 很多人拿到“UE5场景漫游——开始界面及关卡跳转”这个需求,第一反应是:“不就是加个UMG按钮,绑个OpenLevel节点?”我去年带三个实习生做文旅数字孪生项目…...

G-Helper终极指南:免费轻量级华硕笔记本控制中心完全解决方案

G-Helper终极指南:免费轻量级华硕笔记本控制中心完全解决方案 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenb…...

java springboot-vue加油站管理系统的设计与实现

目录同行可拿货,招校园代理 ,本人源头供货商项目背景技术架构核心功能模块系统特色部署方式应用场景项目技术支持源码获取详细视频演示 :同行可合作点击我获取源码->->进我个人主页-->获取博主联系方式同行可拿货,招校园代理 ,本人源头供货商 项目背景 加…...

阿里云防火墙三层体系:安全组、iptables与云防火墙协同实战

1. 阿里云服务器防火墙不是“一个开关”,而是三层防御体系的协同控制点很多人第一次登录阿里云ECS控制台,看到“安全组”三个字,下意识就去翻“防火墙设置”菜单——结果找半天没找到。我带过十几期运维新人培训,90%的人第一反应都…...

红队exe捆绑避坑指南:绕过EDR与邮件网关的可信交付实践

1. 这不是“打包器教学”,而是红队实战中反复摔打出来的交付逻辑在真实红队支撑或攻防演练中,我见过太多人把“exe捆绑”当成一个纯技术动作:msfvenom生成payload → 用Resource Hacker换图标 → 7-Zip加自解压 → 发给目标。结果呢&#xff…...

Tomcat DefaultServlet MIME类型处理缺陷导致信息泄露

1. 这个漏洞不是“能读文件”那么简单,而是Tomcat在特定配置下主动把不该暴露的内部状态当HTTP响应发出去了CVE-2024-21733这个编号刚出来时,我第一反应是又一个“目录遍历”或“文件读取”类的老套路。但真正花半天时间搭环境复现、抓包分析、翻Tomcat源…...

Tomcat Windows路径导致HTTP响应头信息泄露漏洞解析

1. 这个漏洞不是“能读文件”那么简单,而是Tomcat在特定配置下主动把敏感信息塞进HTTP响应头里CVE-2024-21733这个编号刚出来时,我第一反应是又一个常规的路径遍历或文件读取漏洞。但实际复现后才发现,它根本不是靠构造恶意URL去“偷”东西&a…...

Unity 2D项目初始化实战:从零搭建可维护游戏骨架

1. 这不是“又一个Unity入门教程”,而是我带三个实习生从零做出第一个可玩Demo的真实路径你搜“Unity 2D 教程”,首页全是“5分钟创建角色”“10行代码实现跳跃”——画面很炫,但关掉视频后,你连项目文件夹里该删哪个.meta、该留哪…...

Unity 2D开发第一课:建立空间直觉与项目根基

1. 为什么“Unity 2D 游戏开发教程(一)”不是从“新建项目”开始讲起 很多人点开标题叫“Unity 2D 游戏开发教程(一)”的视频或文章,第一帧就看到编辑器界面、鼠标点“New Project”、输入项目名、选模板——然后心里一…...

适合行政小伙伴日常会议整理的,好用会议纪要

对于行政人员来说,跨部门协调会、线上会议录音整理、核心决策复盘等场景,往往需要花费大量时间在纪要整理上。本文实测了四款会议纪要工具,从转写效率、准确率、场景适配等维度进行对比。工具综合表现对比各工具实测详情听脑AI转写整理效率&a…...

UE5 BaseHardware.ini硬件兼容性判决机制深度解析

1. 这不是配置文件,而是UE5硬件适配的“宪法性文档”很多人第一次在Unreal Engine 5项目里翻到BaseHardware.ini,下意识就把它当成普通ini配置——改几个数值、调个开关、重启编辑器完事。我刚接手一个跨平台渲染优化项目时也这么干过:把bUse…...

UE5 BaseInput.ini源码级解读:输入配置的底层原理与实战调优

1. 为什么一个INI文件值得花三天逐行精读?在UE5项目刚启动的第三天,我遇到一个看似微不足道却卡住整个输入调试流程的问题:手柄右摇杆的Y轴输入,在PC编辑器里始终返回0,但同一套蓝图逻辑在打包后的Windows平台却完全正…...

虚幻5细节面板消失的真相与四步唤醒方案

1. 这不是Bug,是虚幻5蓝图编辑器的“细节面板隐身术”在作祟2025年用虚幻引擎5做项目,突然发现蓝图编辑器右侧的细节面板(Details Panel)怎么点都不出来——节点选中了没反应,右键菜单里找不到“显示细节”&#xff0c…...

Unity Android性能分析:Method Tracing精准定位C#卡顿根因

1. 这不是“点一下就出报告”的玩具,而是Unity Android性能问题的显微镜Method Tracing在Unity Android项目里,常被误认为是“打开Profiler点Record就能用”的快捷功能。我见过太多团队在发布前夜发现卡顿,手忙脚乱点开Unity Profiler的CPU U…...

Android Method Tracing深度解析:Unity性能瓶颈跨层归因实战

1. 为什么Method Tracing不是“点一下就出报告”的银弹,而是Android性能诊断的听诊器在Unity项目上线前的最后两周,我接手了一个卡顿严重的AR应用——启动后3秒内帧率从60掉到22,用户滑动模型时UI直接冻结。团队里有人立刻打开Profiler&#…...

【Midjourney新拟态风格实战指南】:20年AI视觉专家亲授7大参数调优公式与3类商业级提示词模板

更多请点击: https://intelliparadigm.com 第一章:Midjourney新拟态风格的视觉本质与演进逻辑 新拟态(Neumorphism)并非Midjourney原生支持的术语,而是社区在v6及Niji Mode迭代中通过提示词工程与风格迁移机制催生出的…...

Unity场景文件本质解析:YAML序列化与Git工程化实践

1. 场景文件不是“点开就跑”的黑盒子,而是 Unity 项目的数据心脏很多人刚接触 Unity,把 .unity 场景文件当成一个“打包好的游戏画面快照”——双击就打开,拖拽就编辑,保存就生效。直到某天场景打不开、Prefab 变成粉红色、或者 …...

Chrome无痕模式下BiDi协议断连原因与解决方案

1. 这个问题不是“能不能用”,而是“为什么一开无痕就断连”如果你在用 Selenium 4.11 集成 Chrome DevTools Protocol(CDP)或更新的 BiDi(Browser Interaction)协议做自动化时,突然发现:本地调…...

深入剖析Golang环境搭建:从基础配置到高效开发实践

1. 项目概述:为什么Golang环境搭建值得深究?如果你刚接触Go语言,可能会觉得“环境搭建”不就是下载、安装、配个变量吗?网上教程一搜一大把,五分钟搞定。但作为一名在多个生产环境中部署过Go服务的老兵,我必…...

Python代码性能优化实战:从循环到并发的全方位加速技巧

1. 项目概述:为什么你的Python代码总是“慢半拍”?干了这么多年开发,我见过太多同事和学员写的Python代码,功能上没问题,逻辑也清晰,但就是跑起来“慢半拍”。尤其是在处理数据清洗、批量文件操作或者实现一…...

Python性能优化实战:8个核心技巧提升代码执行效率

1. 项目概述:为什么你的Python代码跑得慢?“Python慢”,这几乎是每个刚入门的开发者都会听到的“刻板印象”。确实,作为一门解释型、动态类型的语言,在纯粹的执行速度上,Python很难与C、C这类编译型语言正面…...

Chrome无痕模式下Selenium BiDi协议断连原因与解决方案

1. 这个问题不是“能不能用”,而是“为什么一开无痕就断连”我第一次在CI流水线里跑通Chrome DevTools Protocol(CDP)自动化时,兴奋地加了--incognito参数想让测试更干净——结果WebDriver直接抛出org.openqa.selenium.devtools.D…...

【数字图传第四步】Android App查看图传视频

接上回 前面三个章节完成之后,我们就有了一个图传的发送端(可以是esp32cam,也可以是esp32s3cam),一个是图传接收端(usb 摄像头 串口)。图传的发送端,淘宝上到处都是。接收端必须是…...

python非物质非遗文化传承与推广平台系统_h89q9jnr

目录同行可拿货,招校园代理 ,本人源头供货商项目背景核心功能技术实现应用场景项目特色项目技术支持源码获取详细视频演示 :同行可合作点击我获取源码->获取博主联系方式->进我个人主页-->同行可拿货,招校园代理 ,本人源头供货商 项目背景 Python非物质非…...

Seraphine终极指南:英雄联盟免费智能助手,5分钟提升排位胜率15%

Seraphine终极指南:英雄联盟免费智能助手,5分钟提升排位胜率15% 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 还在为英雄联盟排位赛中的战绩查询和BP决策烦恼吗?Seraphin…...

基于RA4M2的便携GPS定位器开发:从硬件选型到低功耗优化全解析

1. 项目概述与核心价值最近在做一个挺有意思的小玩意儿,用瑞萨的RA4M2-SENSOR开发板,折腾出了一个巴掌大小的便携式GPS定位器。这玩意儿听起来好像没啥新鲜的,市面上成品一大堆,但自己从头到尾搭一遍,从选型、画板、写…...

从芯片到产品:嵌入式AI与安全设计实战解析

1. 项目概述:一次面向未来的技术对话最近,我作为启扬智能的一员,有幸参与了「2025恩智浦技术巡回研讨会」的线下活动。这不仅仅是一次简单的产品展示或技术宣讲,更像是一场与产业链上下游伙伴、众多开发者同行进行的深度技术对话。…...