作者:来自 Elastic Mike Pellegrini, Nick Chow  及 Libby Lin

比较 Elasticsearch 语义文本和 OpenSearch 语义字段在简洁性、可配置性和效率方面的表现。

自己动手体验向量搜索,使用这个自定进度的 Search AI 实操学习。你现在可以开始免费的云试用,或者在本地机器上尝试 Elastic。


在 Elasticsearch 8.15(2024 年 8 月)中,我们引入了 semantic_text 功能,将语义搜索的设置简化为一步:指定字段类型。从那时起,我们持续增强这一 正式发布版功能,目标是进一步简化用户体验。

最近,OpenSearch 3.1(2025 年 6 月)发布了一个类似功能,名为 semantic 字段类型。在这篇博客中,我们将从简洁性、可配置性和效率方面比较这两个功能,并展示它试图模仿 Elasticsearch 的创新,但实际上为用户提供的功能更弱,同时引入了更多复杂性。

Elasticsearch semantic_text —— 优雅简洁

Elasticsearch 的 semantic_text 功能通过默认语义模型自动生成向量嵌入,只需简单切换已定义的推理端点即可自定义为其他模型,从而简化了语义搜索工作流。这加快了语义搜索的交付速度,同时无需手动配置、设置 ingest pipeline、引入外部工具,也不需要在写入和查询时手动同步所用的模型。

这种能力可以通过集成大量其他模型提供商轻松扩展,并支持强大的混合搜索场景。

semantic_text 字段在 _source 中提供了简化的表示形式,相比之前的版本减少了冗余、提升了磁盘效率。Elasticsearch 的功能与这一能力无缝集成。例如,它支持高亮功能,可以将字段中最相关的片段提取并发送给 LLM。语义搜索从多步骤的 pipeline 设置演变为单一的专用字段类型后,更加简单且可直接投入生产。这些细节累积起来,在构建 Agent 和将 Elasticsearch 用作 grounding 来源及向量存储时,能带来更高质量的答案。

semantic_text 字段与查询语言(包括查询 DSL 和 ES|QL)紧密集成。查询选项也扩展为支持 match、knn 和 sparse_vector 查询。semantic_text 保持了简单的设置方式,同时通过这种集成查询支持,可以使用高级选项。随着我们持续投资于 ES|QL,这个底层系统的能力将继续体现在每个命令中。

对于完全托管的 Elasticsearch 用户和使用最新版本的用户,现在可以使用新的分块和索引选项,并可配置用于语义文本。

这些变化体现了我们持续关注为语义搜索提供优秀默认设置的同时,也让用户能够广泛使用平台的底层 AI 能力。

那么,OpenSearch 3.1 中的新 semantic 字段类型表现如何呢?让我们一探究竟……

评测 OpenSearch 3.1 的 semantic 字段功能

OpenSearch 在 3.1 版本中引入的 semantic 字段类型,旨在通过在写入和查询时自动启用向量嵌入生成来简化神经搜索。然而,经过检查,我们发现其实现方式由于与 OpenSearch 其他功能的集成方式,反而引入了一些阻碍。

功能上的主要差异

Elasticsearch 在默认值和可配置性上的深思熟虑,使用户能够快速上手。由于 Elastic 的实现方式无缝衔接,用户可以在不牺牲简洁性的情况下,顺利过渡到更高级的功能

例如,在使用默认量化开始后,用户可能希望根据所需的准确性与延迟权衡来调整量化级别。而 OpenSearch 的实现僵化,阻碍了轻松获得更优体验的途径。

Elasticsearch:集成更紧密/运行更流畅

Elasticsearch semantic_textOpenSearch semantic field
开箱即用 embedding

默认附带 ELSER,开箱即可生成向量嵌入。支持即时语义搜索,无需设置模型。

没有默认的开箱即用模型。需要额外步骤来选择、注册并部署向量嵌入模型。

支持的查询类型

Semantic、Match、KNN、Sparse_vector。在保持语义查询简洁性的同时具备 DSL 的灵活性。

Neural(Vector)。在开发过程中灵活性有限。

与查询语言的集成

与 ES|QL 集成,提供统一的数据探索体验,提升生产力。

目前不支持与 PPL 集成。开发者被迫在查询语言之间切换(例如切换到 DSL)。

语义高亮(参见高亮方法差异部分)

无需设置模型。查询中不需要指定模型 ID。用户可即时获得高亮,无技术负担。

没有默认高亮模型。每次查询都需要指定模型 ID。开发者必须分别管理和跟踪高亮模型与嵌入模型。

Elasticsearch semantic_text 与 ES|QL 集成示例:

FROM product-catalog-index
| WHERE match(product_description.prod_embedding,
"carpenter thing for shaving wood ?")

Elasticsearch:更快更高效

Elasticsearch semantic_textOpenSearch semantic field

量化

默认使用 BBQ,内存节省高达 95%。支持可配置量化,用户可调整。

量化继承自嵌入模型,不支持配置。用户被锁定在低效内存使用和较差性能中。

响应中包含的嵌入数据

输出简洁,客户端关注核心内容。

响应中附加嵌入数据,开发者需过滤非必要信息或总是“排除”。

附加资源:

  • Elasticsearch 的 semantic_text 默认使用 BBQ。
  • OpenSearch 的 semantic 字段需过滤非必要信息或总是 “排除”。

Elasticsearch:可配置

Elasticsearch semantic_textOpenSearch semantic field

稀疏模型的 Token 修剪

默认启用。稀疏向量延迟提升 3-4 倍。查询时可配置,用户可根据查询需求调整。

修剪比例固定为 0.1,且不可配置。导致处理不同数据集时缺乏灵活性。

分块

默认启用且可配置。可配置分块提升相关性。

默认禁用;启用时仅支持固定长度分块。固定长度分块会丧失上下文含义,因此相关性较低。

附加资源:

  • 使用 Elasticsearch 的 Token 修剪提升文本扩展性能。
  • OpenSearch 的 semantic 字段的限制。
  • OpenSearch 的 semantic 字段中的固定长度分块。

上表提供了简明的概览,但语义高亮的细节对于像 RAG 这样的应用尤为重要。让我们更详细地比较 Elasticsearch 和 OpenSearch 如何处理这一功能。

RAG 语义高亮最佳实践

最佳实践

语义高亮应尽量复用已索引的嵌入,避免查询时进行昂贵的二次推理。此设计大幅降低查询延迟和计算成本。此外,为了提升大型语言模型(LLM)的相关性,高亮机制应返回足够的上下文信息,通常是整块文本,而非孤立句子。能够配置这些文本块的大小,对优化 RAG 用例也很有帮助。

Elasticsearch 方法

Elasticsearch 的高亮实现符合上述最佳实践,提升了:

  • 效率与成本:复用每个文档已索引的嵌入,无需二次推理,处理效率优于 OpenSearch。

  • 上下文灵活性:其语义高亮返回整块文本,通常比单句更长,为 LLM 提供更多上下文,提升相关性。如果块大小不适合特定用例,用户可以通过 semantic_text 字段的分块设置调整。

OpenSearch 方法

相比之下,OpenSearch 的语义高亮实现存在以下限制:

  • 成本与延迟增加:查询时需对文档和查询同时使用特定的语义高亮模型,导致额外的查询延迟和计算开销。

  • 上下文受限且相关性较低:高亮模型仅对单句操作,且无法配置更大上下文窗口,只返回单句,因上下文不完整可能影响相关性。

除了功能和效率上的差异,简洁性和集成度的根本区别从最初的设置阶段就显而易见。接下来,我们将看到 Elasticsearch 的方案从一开始就更简便。

简单对比示例:使用 RRF 的混合搜索

这里展示一个示例(未配置分块、修剪或高亮),说明设置基础语义(semantic)字段并执行基于 RRF 的简单混合搜索所需的额外步骤。使用了 Elasticsearch 9.1 和 OpenSearch 3.1。

我们在 Elasticsearch 中创建了一个带多字段的简单索引:

  • product_description

  • product_description.prod_embedding

在 OpenSearch 开箱即用(OOTB)环境中,顶层有两个字段,因为如果字段是 “semantic” 类型,文本不会流向子字段。

然后,我们在 Elasticsearch 和 OpenSearch 上分别运行基于 RRF 的混合搜索。

可以看到 Elasticsearch 中 semantic_text 与检索器之间的无缝集成。

Elasticsearch semantic_text

PUT /product-catalog-index{"mappings": {"properties": {"product_description": {"type": "text","fields": {"prod_embedding": {"type": "semantic_text"}}}}}
}
# Insert a document
POST /product-catalog-index/_doc{"product_description": "A hand plane is an essential tool in a woodworker's toolset.  It's used to smooth and flatten wood surfaces as well as trim components."
}# Do Hybrid Search using Retrievers (RRF) 
POST /product-catalog-index/_search{"retriever": {"rrf": {"retrievers": [{"standard": {"query": {"match": {"product_description": "Thing that Carpenters use to shave lumber."}}}},{"standard": {"query": {"semantic": {"field" : "product_description.prod_embedding","query": "Thing that Carpenters use to shave lumber."}}}}]}}
}

OpenSearch semantic field:

# Register and Deploy an embedding model
POST /_plugins/_ml/models/_register?deploy=true{"name": "amazon/neural-sparse/opensearch-neural-sparse-encoding-doc-v3-distill","version": "1.0.0","model_format": "TORCH_SCRIPT"
}# WAIT for the TASK to be COMPLETED and then create your index  
GET /_plugins/_ml/tasks/csMZdJgBeUoTAZq7_jT0# Create Index
PUT /product-catalog-index{"mappings": {"properties": {"product_description": {"type": "text","copy_to": "prod_embedding"},"prod_embedding": {"type": "semantic","model_id": "c8MadJgBeUoTAZq7ADQt"}}}
}# NOTE: The “copy_to” did not work on a “semantic” field.  
POST /product-catalog-index/_doc{"product_description": "A hand plane is an essential tool in a woodworker's toolset.  It's used to smooth and flatten wood surfaces as well as trim components.","prod_embedding": "A hand plane is an essential tool in a woodworker's toolset.  It's used to smooth and flatten wood surfaces as well as trim components."
}# Create a RRF Pipeline processor
PUT /_search/pipeline/rrf-pipeline-product-catalog{"description": "Processor for hybrid RRF search","phase_results_processors": [{"score-ranker-processor": {"combination": {"technique": "rrf"}}}]
}
#
POST /product-catalog-index/_search?search_pipeline=rrf-pipeline-product-catalog{"_source": {"excludes": ["prod_embedding_semantic_info"]},"query": {"hybrid": {"queries": [{"match": {"product_description": "Thing that Carpenters use to shave lumber."}},{"neural": {"prod_embedding": {"query_text": "Thing that Carpenters use to shave lumber."}}}]}}
}

在这个简单案例中,Elasticsearch 需要的步骤更少,突出其易用性。

随着搜索场景复杂度的增加,Elasticsearch 可扩展的架构确保它能够轻松应对需求。

总结

Elasticsearch 的 semantic_text 与 OpenSearch 的 semantic 字段虽然目标相似,但功能存在显著差异。架构选择和持续改进的承诺,带来了功能和资源需求上的巨大不同。

  • Elasticsearch 的 semantic_text 字段以简洁、高效和与套件其他部分的无缝集成为特色,提供可配置分块、默认量化(BBQ)和紧凑存储。OpenSearch 的 semantic 字段目前更僵化,缺少 Elasticsearch 中一些简化的集成和存储优化。

Elasticsearch 对 semantic_text 的实现,为更高级的语义搜索能力提供了清晰路径,同时不牺牲简洁性。

立即试用 semantic_text

你可以通过免费试用,在完全托管的 Elasticsearch Serverless 项目中体验 semantic_text。它也可在 8.15 及以上版本使用,但在 8.19 和 9.1 中体验最佳。

只需一条命令,几分钟内即可在本地环境开始使用:

curl -fsSL https://elastic.co/start-local | sh

原文:Beyond similar names: How Elasticsearch semantic text exceeds OpenSearch semantic field in simplicity, efficiency, and integration - Elasticsearch Labs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/918813.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/918813.shtml
英文地址,请注明出处:http://en.pswp.cn/news/918813.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenAI发布最新大模型GPT5、本地部署GPT开源模型

OpenAI发布最新大模型GPT5、本地部署GPT开源模型 GPT-5概述 北京时间 2025年8月8日 凌晨1点 OPENAI举行了1个小时的线上发布会,正式推出了其史上最聪明、最强大的大模型GPT-5。 GPT-5是OpenAI发布的最新一代大型语言模型,它基于Transformer架构&#xff…

容器网络模式选择在云服务器多节点部署中的连通性验证方案

容器网络模式选择在云服务器多节点部署中的连通性验证方案在云计算环境中,容器网络模式的选择直接影响着多节点部署的通信效率和安全性。本文将从Docker原生网络驱动对比入手,深入分析Overlay、Host、Bridge等主流网络模式在跨主机通信场景下的性能表现&…

电商双11美妆数据分析

1、数据初步了解2.数据清洗2.1 重复值处理 直接删除重复值。2.2 缺失值处理通过上面观察数据发现sale_count,comment_count 存在缺失值,先观察存在缺失值的行的基本情况存在的缺失值很可能意味着售出的数量为0或者评论的数量为0,所以我们用0来填补缺失值。2.3 数据挖…

Pytest项目_day14(参数化、数据驱动)

parametrize 参数化可以组装测试数据。在测试前定义好测试数据,并在测试用例中使用 单参数单次循环 我们可以在装饰器中使用mark.parametrize,来定义参数名和参数值列表 参数名还需要传给函数参数名需要用字符串来定义,参数值列表需要用可迭代…

Nest.js、Knex.js、Nuxt.js、Next.js 和 Spring Boot的异同相关概念

总述Nest.js、Knex.js、Nuxt.js、Next.js 和 Spring Boot 是分属不同技术领域的工具,涵盖前端框架、后端框架、数据库工具等角色,它们在开发中既有功能交集,也有明确的定位差异。一、相同点服务端参与能力五者均能在服务端发挥作用&#xff1…

第2节 大模型分布式推理架构设计原则

大模型推理系统的设计过程,本质上是在多重约束下寻找最优解的过程。硬件资源的物理限制、场景对性能的刚性要求、系统的可扩展性需求,共同构成了设计的边界条件。明确这些约束的具体表现形式,理解性能指标之间的权衡逻辑,确立架构设计的核心原则,是构建高效分布式推理系统…

快速部署一个鉴黄服务

1.安装依赖pip install opennsfw22.代码实现import opennsfw2 as n2# 将自动下载预训练模型 open_nsfw_weights.h5 到 C:\Users\Administrator\.opennsfw2\weights # pip install opennsfw2# 单张预测 image_path 1.jpg nsfw_probability n2.predict_image(image_path) print…

Camera open failed

前言 由前面的几篇博客可以知道,openCamera,createCaptureSession,setRepeatingRequest,capture是非常重要的过程,如果其中一个环节出了问题时该如何分析呢,这里我们首先从打开相机流程时,打开…

医美产业科技成果展陈中心:连接微观肌肤世界与前沿科技的桥梁

作为一名深耕展陈设计施工的从业者,当接到医美产业科技成果展陈中心的项目时,我深知这不是简单的 “技术堆砌”,而是要在 “科学严谨性” 与 “美学体验感” 之间找到平衡 —— 让参观者既能看懂激光设备的波长原理,又能感知胶原蛋…

在 Android 系统中清理应用数据但保留应用程序本身,可以通过以下几种方法实现

在 Android 系统中清理应用数据但保留应用程序本身,可以通过以下几种方法实现在 Android 系统中清理应用数据但保留应用程序本身,可以通过以下几种方法实现:方法 1: 使用 Android 设置(无需 root)方法 2: 使用 ADB 命令…

Linux中tty与8250-uart的虐恋(包括双中断发送接收机制)

串口通用驱动文件在哪里&#xff1f; drivers/tty/serial/哪一个是正确的compatible&#xff1f; arch/arm64/boot/dts/rockchip/rk3568.dtsi uart3: serialfe670000 {compatible "rockchip,rk3568-uart", "snps,dw-apb-uart";reg <0x0 0xfe670000 0…

GitHub 仓库代码上传指南

文章目录 🛠️ 一、环境准备 🧱 二、创建 GitHub 仓库 ⚙️ 三、本地代码上传流程 首次上传 更新已有代码 🔐 四、认证问题解决(必看!) 方案 1:个人访问令牌(PAT) 方案 2:SSH 密钥(推荐长期使用) ⚡ 五、常见错误处理 🏆 六、最佳实践建议 💎 高级技巧 🛠…

介绍一下 自动驾驶 感知多任务训练模型设计

自动驾驶感知多任务训练模型是指在一个统一的模型架构中&#xff0c;同时完成自动驾驶场景下的多个感知任务&#xff08;如目标检测、语义分割、深度估计、车道线检测等&#xff09;的模型设计。其核心目标是通过特征共享和任务协同&#xff0c;在提升单任务性能的同时&#xf…

huggingface文件下载过慢/中断怎么办

huggingface上汇集了各个大模型和预训练模型的权重文件&#xff0c;但是访问huggingface需要连接外网&#xff0c;即时连接外网之后下载仍然过慢甚至会出现中断&#xff0c;因此本文将使用两种方法教你解决上述问题。 文章目录1.使用国内镜像下载2.使用Python脚本自动化下载1.使…

Spring Boot + Redis Sentinel (一主两从)测试案例

&#x1f680; Spring Boot Redis Sentinel 完整测试案例 &#x1f3f7;️ 标签&#xff1a;Redis 、Redis Sentinel、Spring Boot 实战 &#x1f4da; 目录导航 &#x1f4dd; 前言&#x1f3d7;️ Redis Sentinel 架构说明&#x1f4e6; Docker Compose 搭建 Redis 哨兵环境…

力扣-295.数据流的中位数

题目链接 295.数据流的中位数 class MedianFinder {PriorityQueue<Integer> left;//队头最大PriorityQueue<Integer> right;//队头最小public MedianFinder() {left new PriorityQueue<>(new Comparator<Integer>() {Overridepublic int compare(In…

【数据分享】2014-2023年长江流域 (0.05度)5.5km分辨率的每小时日光诱导叶绿素荧光SIF数据

而今天要说明数据就是2014-2023年长江流域 &#xff08;0.05度&#xff09;5.5km分辨率的每小时日光诱导叶绿素荧光SIF数据。数据介绍一、数据集概况&#xff1a;长江流域植被动态的 “每小时快照”本文分享的核心数据集为2014 年 9 月至 2023 年 9 月长江流域日光诱导叶绿素荧…

计算机二级 Web —— HTML 全面精讲(含真题实战)

例题来源: web.code2ji.cn 0. HTML 基础与全局常识 0.1 HTML 是什么 HTML&#xff08;HyperText Markup Language&#xff09;是网页结构语言&#xff0c;用“标签”描述内容、层次与含义。 0.2 基本文档骨架&#xff08;必须熟练&#xff09; <!DOCTYPE html> <…

Linux中的日志管理

注&#xff1a;在 centos7/Rocky9 中&#xff0c;系统日志消息由两个服务负责处理&#xff1a;systemd-journald 和 rsyslog一、常见日志文件的作用实验一&#xff1a;测试查看暴力破解系统密码的IP地址步骤一&#xff1a;故意输错密码3次&#xff0c;在日志文件中查看步骤二&a…

C++ 性能优化擂台:挑战与突破之路

一、引言&#xff08;一&#xff09;C 在性能关键领域的地位在当今数字化时代&#xff0c;C 语言凭借其高效性、灵活性和对硬件的直接操控能力&#xff0c;在众多对性能要求极高的领域中占据着举足轻重的地位。无论是构建高性能的游戏引擎&#xff0c;实现金融领域毫秒级响应的…