Elasticsearch 8 RAG 技术分享

news2024/9/22 19:30:02

作者:来自 Elastic 中国区首席架构师 Jerry

本文由 Elastic 中国区首席架构师 Jerry Zhu 在【AI 搜索 TechDay】上的分享整理而成。【AI 搜索 TechDay】 是 Elastic 和阿里云联合主办的 AI 技术 Meetup 系列,聚焦企业级 AI 搜索应用和开发者动手实践,旨在帮助开发者在大模型浪潮下升级 AI 搜索,助力业务增长。

 

Elacticsearch:从文本搜索到混合搜索

e3bae92d738b4fac878b9553737c8219.png

Elasticsearch 的发展历程及其在丰富应用场景中的扩张,是一个技术演进与市场需求相互促进的经典案例。初期,ES 作为一款以文本搜索为核心功能的搜索引擎,满足了基本的模糊搜索需求,这主要得益于其倒排索引技术,该技术在全文搜索领域表现出色。然而,随着用户需求的深化,特别是对时间、标签过滤及排序等结构化搜索需求的增加,传统的全文搜索技术已难以独立支撑。此时,ES 引入了 doc_value 特性,采用列式存储优化了结构化数据处理能力,有效提升了过滤和排序效率,从而能够替代部分数据库完成结构化搜索任务,这是ES应用场景得以大幅拓展的关键转折点。

随后,聚合(aggregation)功能的引入进一步推动了 ES 的应用边界。它允许在搜索结果集上进行统计分析,如不同类别的搜索结果数量,极大丰富了应用层面的数据洞察力,使得 ES 不仅仅局限于简单的查找,而是成为数据分析的强大工具。

地理空间搜索(BKD tree)的集成,则标志着 ES 能够应对更加复杂、现实世界的查询需求,如 “附近餐馆搜索”,展现了其在非结构化、结构化数据及地理位置信息综合处理方面的强大能力。

d279c751732a40539cfde4a83dbe1825.png

近年来,向量搜索的加入,是对 ES 能力的又一次重要扩展。尽管市场上已有专注于此的数据库,但 ES 整合向量搜索的能力,响应了用户减少技术栈复杂性、统一处理多种类型数据的需求。这一举措背后,不仅体现了技术发展趋势(如 OpenAI 引领的 AI 热潮对向量搜索的需求激增),也突显了 ES 作为广泛采纳的技术平台,有能力快速吸收并内化新兴技术,为用户提供一站式混合搜索解决方案。

Elasticsearch 之所以能在多变的场景中持续繁荣,关键在于其不断进化的能力 —— 从最初的全文搜索,到结构化数据处理,再到聚合分析、地理空间搜索,直至现今的向量搜索,每一步都紧贴用户需求和技术前沿。ES 的成功,不仅在于技术的创新与整合,更在于其能够无缝融入用户日常生活与各行各业的数字化转型之中,成为驱动现代信息搜索与分析不可或缺的一部分。

 

Elasticsearch 的普及与产品易用性的考量

Elasticsearch 的普及程度已显著提升,不仅局限于企业界的应用,还渗透到了高等教育领域。这一现象反映在高校大数据课程中,学生不仅开始采用 ES 进行项目实践,还能深入理解其架构及应用方法,这标志着 ES 的普及率与易用性达到了较高水平。易用性作为技术采纳的关键因素,对于促进技术在学生群体中的快速学习和应用至关重要,它降低了复杂技术的入门门槛,如分布式系统的配置与管理,从而加速了技术的推广步伐。

在国内技术生态中,ES 的成功案例凸显出在追求高性能的同时,不应忽视技术的易用性和维护性,这些因素在全球范围内被视为与性能同等重要的衡量标准,对技术栈能否广泛推广至大型企业用户群体起着决定性作用。实际上,技术的普及速度和接受度受到多维度因素的影响,速度虽然是重要考量,但并非唯一标准。

ES 的发展路径展现了其对市场需求的积极响应,它并未预先设定所有功能,而是依据用户需求动态演进,无论是全文搜索、结构化搜索还是聚合统计等功能,均是在实际应用场景驱动下逐步完善。这种以用户需求为导向的产品设计理念,确保了 ES 能够持续适应并推动各类应用场景的发展,体现了高度的灵活性与前瞻性。

 

打造最佳混合搜索引擎:Elasticsearch 的技术演进与创新

在技术产品的发展历程中,适时的市场进入时机至关重要。 Elasticsearch 的成功案例展示了它如何巧妙地把握住了用户需求的爆发期,既不过早,也不滞后,恰如其分地推出了向量搜索等前瞻功能。尽管在 7.x 版本时已具备 CPU 驱动的向量搜索能力,但直到技术成熟与市场需求相匹配时,才加大资源投入,实现了有效的产品迭代与市场响应。这种策略性的资源分配,避免了过早投资的潜在浪费,体现了在产品管理中对时机与资源平衡的精妙掌握。

131b7d95420f459098c953b1b15d9e25.png

语义搜索的兴起,进一步验证了 ES 对行业趋势的敏锐洞察。面对关键词搜索的局限性,ES 预见到语义理解技术的潜力,并等待如 OpenAI 推动的模型进步,适时引入高性能的 embedding 模型,推动语义搜索的落地,从而让用户无需转换技术栈就能享受到语义搜索带来的显著提升。混合搜索的集成策略,即在传统搜索基础上融入向量搜索,成为提高搜索质量的关键步骤,尤其是在 RAG 场景下,重排序技术的应用通过高级模型进一步提升了搜索结果的相关性和精准度。

8b2fae27014946c9b326d9c8a9adf6d8.png

ES 的核心优势在于其强大的生态系统和对现有项目的无缝升级能力,使得从传统搜索过渡到语义搜索变得自然而高效。此外,ES 自研的 HNSW 索引及检索引擎,不仅强化了其向量搜索的性能,还确保了与既有搜索功能的深度整合,旨在打造最佳的混合搜索引擎体验,而非仅限于向量搜索本身。这一决策背后的逻辑,是维护技术自主权,确保在不断优化过程中,能灵活应对并满足混合搜索日益增长的复杂需求,同时也反映出与 Lucene 项目核心特性的兼容考量。

ES 在技术演进与市场适应中的战略,体现了对技术创新的前瞻布局与实践智慧,以及对用户需求深刻理解基础上的精准执行,最终目标是助力用户在不增加技术负担的前提下,平滑过渡至更高级的搜索解决方案,实现搜索体验的革命性飞跃。

 

性能与向量计算在搜索引擎中的重要性

要实现既定目标,首要认识到性能虽非唯一标准,却是不可或缺的基础。特别是在向量计算领域,性能需求尤为显著,因为它涉及大量矩阵运算,天然适合单指令多数据(SIMD)处理,这要求我们深入探索硬件加速的可能性。因此,即便是以 Java 为根基的系统如 Lucene 和 Elasticsearch,在向量计算的背景下,也必须跨越传统界限,积极整合硬件优化措施,以应对计算密集型任务的挑战。

此外,传统 ES 在搜索和聚合计算方面已表现出色,但面对向量处理和更复杂的分析需求时,单纯依赖软件层面的优化已不足以满足高效计算的要求。这不仅涉及到如何高效利用硬件资源,比如通过特定的硬件加速技术如 SIMD 指令集,还要求在设计上更加灵活,以适应不同计算场景的并发需求。例如,ES 引入新的计算引擎,不仅为了提升聚合计算的性能,也为更好地适配硬件加速趋势。

8965edd7d52b45bba04ae20a92fcc268.png

量化技术的采用,尤其是从 float32 到更低精度格式的转变,是向量处理中减少资源消耗的关键策略。这对于处理高维向量数据尤其重要,能够显著降低存储和计算成本,而 ES 对此的支持也体现了其向高效计算迈进的决心。

7e5c681dc2174fc1b944d47dd4111a2e.png

同时,系统设计需考虑并行处理能力的提升,特别是在计算密集型应用中。以往在搜索领域,关注点可能更多在于处理高并发请求的能力,而在向量计算及数据分析场景下,充分利用多核处理器和现代硬件的高并发潜力成为必要。这意味着不仅要提升单个查询的处理能力,还要确保系统能有效协调多个并发任务,实现资源的最佳分配和利用。

0da8a76d48b24b92a37719a09965e12f.png

为实现这些目标,Elasticsearch 采取了一系列技术革新,包括采用 Panama 项目等手段,以确定性方式利用 JDK 的硬件加速能力,并逐步增加对本地代码调用的支持,以进一步挖掘硬件潜能。这些改变不仅是为了提升现有功能的性能,更是为了适应计算领域的新要求,确保 ES 能够在不牺牲易用性和可扩展性的前提下,满足日益增长的计算密集型工作负载需求。

ES 的发展路径清晰地展示了从专注于搜索到融合高性能计算的转变过程,这一转变不仅体现在技术选型和架构调整上,更在于对硬件资源的深度整合与优化,以及对计算效率和并发控制的深刻理解与实践。随着技术进步和硬件能力的不断提升,ES的持续演进将为用户提供更强大、更灵活的数据处理能力。

 

深化向量搜索与语义理解:Elasticsearch 的新方向

在应对日益增长的向量数据处理成本时,社区普遍关注如何高效压缩而不大幅度牺牲质量,其中量化技术成为一个焦点。量化主要是将原本占用较大存储空间的浮点型数据(如float32)转换为更紧凑的整型数据(如 int8 或 int4),这不仅能减少每个维度的存储需求,而且对模型输出的向量质量影响相对较小,尤其是当不减少向量维度而仅改变数据类型时。Elasticsearch 自动化这一量化过程,将模型生成的 float32 数据自动转换为 int8 格式,从而显著减小存储需求,间接降低了内存消耗,这对依赖内存高效的 HNSW 算法至关重要,确保了索引检索速度。

918b906f1d164d558275e8036eb1ad0c.png

混合搜索策略是 ES 致力于优化的方向,旨在结合不同类型的向量处理与文本搜索能力,服务于广泛的使用场景。其中,“密集向量” 技术通过深度学习模型将文本映射到高维空间,实现语义理解;而 “稀疏向量” 则更贴近传统的关键词加权方法,如 BM25,尤其适用于文本搜索。通过结合两者,ES 不仅能够支持基于文本的查询,还能扩展至图像等多媒体内容的语义搜索,满足多样化需求

e34f131196f7470a9cdf7ca8b900815a.png

针对文本搜索中常见的关键词缺失问题,ES 引入了文档扩写技术,利用深度学习模型预测并补充文档中可能缺失但与查询相关的关键词,进而优化基于 BM25 的倒排索引搜索效果,无需将所有数据加载至内存即可实现高效检索。此外,模型还能动态调整关键词权重,增强搜索灵活性和准确性。

bbd188b47509456a8809de7c17e50652.png

为了进一步提升搜索质量,ES 整合了诸如 Cohere 等社区广受好评的模型,不仅在代码搜索、长文本处理、半结构化数据检索等方面展现出显著性能提升,还在商业版本中提供了对这些模型的支持与对接服务。这表明,现代语义搜索已不再局限于传统方法,而是深入到模型微调、多向量支持等高级功能,以适应复杂多变的检索需求。多向量支持尤为重要,因为它允许对文档的不同部分(如标题、摘要、段落乃至图文内容)独立建模,深化语义理解,提升检索系统的全面性和精确性。

a15eff25b70742fdbefcb58a903b6091.png

通过精细化的量化策略、混合搜索技术的集成、以及模型辅助的文档扩写与多向量处理,Elasticsearch 正不断推动语义搜索技术边界,为用户提供更加智能、高效、定制化的搜索解决方案。

 

提升搜索与分析能力:利用社区 AI 和开源工具

Elasticsearch 现已融入模型上传功能,特别是与现有的 Active Search 配合时,其内置的机器学习模块(基于C++)提供了高度灵活性。该模块依托开源基础架构,便于集成如 Value 模型等高质量模型,实现从 Hugging Face 直接上传至社区,并自动执行文本到向量的嵌入转换,存储于 ES 内,极大简化了处理流程。

4a111515f63e4983bae09060ba73c232.png

在管理层面,Kibana 界面支持模型的可视化管理,包括部署规模、内存分配及并发度设定,全面监控各模型的请求量与资源消耗,提供直观便捷的控制体验。此外,针对模型集成,不仅预设了 Python API 以简化对接流程,无需依赖外部服务,还特别设计了 Inference API 以满足更广泛需求,特别是针对大规模模型或需高性能计算资源的场景,确保了与各种环境(如阿里云 PaaS 平台托管的模型、OpenAI 服务乃至其他 SaaS 服务)的无缝衔接,提升了服务的通用性和灵活性。

4ac98667508c4ad7aa4e04d530159241.png

Inference API 作为核心中介,贯穿搜索、排序、评估等多个环节,不仅强化了与内部部署模型的互动,也优化了私有化或云端部署模型的调用流程,实现了AI能力接入的高效与多样性。这一系列设计充分体现了 “社区 AI” 理念,旨在利用 AI 技术加强传统搜索,简化用户操作,降低使用门槛,即便在复杂的向量处理领域,亦能显著提升用户体验,减少开发中的重复工作,确保技术应用更加直观与集中。

822e42941a3e482d85d1451ded36314b.png

通过不断优化的接口设计与强大的后端支持,ES 及其相关工具集正逐步实现搜索技术的智能化转型,不仅加速了 AI 在搜索领域的融合进程,也彰显了对用户体验与易用性重视的新时代技术发展趋势

 

ES与AI结合实现高效搜索与数据分析

在融合 ES 与 AI 技术的背景下,我们致力于打造高效的数据搜索与分析体验,通过深度集成推理 API 与外部服务,实现了搜索功能的智能化升级。我们的混合召回设计不仅简化了开发流程,还显著提升了索引处理与查询效率。具体而言,用户只需在索引定义时指定如 “synthetic test” 这类需进行语义搜索的字段,并关联相应的推理 API,系统便会自动完成文本到向量的转换与存储,以及后续的查询转换,极大地减轻了开发者负担,避免了重复编码工作。

b4597cf251a140f9aba48f350e7bb41c.png

此外,我们重视安全性与隐私保护,提供精细化的权限控制功能,确保数据访问遵循严格的角色与权限界定。ES 商业版在此基础上更进一步,支持行级别与列级别的权限管理,使得不同角色用户在相同查询条件下可获取的信息范围各异,满足复杂的企业级安全需求。同时,无缝集成企业认证系统(如 SSO),简化了身份验证流程,提升了系统的整体安全性与易用性。

a84d972f2b6a4abca21fc5cfc6251059.png

针对数据处理与合规性,我们提供敏感词过滤机制,并依托 ES 强大的规则构建能力,进一步强化了数据处理的灵活性与安全性。在阿里云的搜索开发平台上,ES 作为核心组件,完美融入其全面的AI搜索解决方案中,不仅简化了部署与维护工作,还通过持续的技术迭代,如向量引擎的性能加速、计算引擎的革新,以及与AI生态的深度融合,不断拓展其功能边界与性能极限。

ef4c410885e44522b9d5d61c64f25755.png

着眼未来,我们正聚焦于提升计算引擎的能力,旨在通过现代化的计算范式与硬件加速技术,为用户提供超越传统架构的高性能搜索与计算服务。同时,云原生策略的支持与阿里云的紧密合作,确保了服务的高可用性与可扩展性,覆盖从日志分析、APM 监控到安全检测等多元应用场景。

0ba92b9ce0e44d02b56f6202c7f2399f.png

为促进技术交流与学习,我们提供了丰富的学习资源与实验室环境,涵盖搜索、安全等多个领域,鼓励开发者深入探索 ES 与 AI 结合的广阔应用前景,并通过技术社群加强实践交流,共同推动技术创新与发展。

阿里云搜索开发工作台 面向企业及开发者提供先进的 AI 搜索开发平台,内置实践打磨的多模态数据解析、文档切分、文本向量、查询分析、大模型文本生成、效果测评等丰富的组件化服务以及开发模版,同时,可选多种引擎能力,用户可灵活调用,实现智能搜索、检索增强生成(RAG)、多模态搜索等搜索相关场景的搭建。

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

framebuffer总结

FrameBuffer,可以译作"帧缓冲",有时简称为 fbdrv。 这是一种独立于硬件的抽象图形设备。 是Linux为显示设备提供的一个接口,把显存抽象后的一种设备, 允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作 什么是…

QT 网络聊天室简易版

视频:qt开发网络聊天w室软件3.4界面开发_哔哩哔哩_bilibili 目录 UI部分 设计稿图 放置控件 界面美化 拖动窗体 设置界面 网络部分 配置对话框 多项目结果和服务器端设计 客户端框架开发 UI部分 设计稿图 放置控件 界面美化 现在我们把窗体自带的标题栏给去了,用我们自…

软件设计之MySQL(1)

软件设计之MySQL(1) 此篇应在JavaSE之后进行学习: 路线图推荐: 【Java学习路线-极速版】【Java架构师技术图谱】 Navicat可以在软件管家下载 使用navicat连接mysql数据库创建数据库、表、转储sql文件,导入sql数据 学习内容: 数据库概述表、…

6.IIC

理论 参考51单片机IIC理论:链接 在起始信号后必须发送一个7位从机地址 1位方向位,用“0”表示主机发送数据,“1”表示主机接收数据 代码编写 IIC三个模式配置 IIC(阻塞模式)配置 主要方式 IIC(中断模式)配置 IIC(DMA模式)配置 阻塞模式 mi…

智源研究院举办第一期数据与行业应用Workshop

近日,北京智源人工智能研究院联合中国互联网协会人工智能工委会、中国AIIA联盟数据委员会、CSDN举办了以“行业革新,数据先行”为主题的第一期数据与行业应用Workshop。来自智源研究院、中国信息通信研究院、航天信息技术有限公司、北京市科学技术研究院…

学习记录第二十七天

进程 wait函数 功能 等待子进程结束:父进程调用wait函数后,会暂停执行,直到它的某个子进程结束。收集子进程状态:当子进程结束时,wait函数会返回子进程的终止状态,包括是正常终止还是被信号终止等信息。…

单链表leetcode刷题/中(C语言版)

目录 题目1:合并两个有序链表 题目2:分割链表 题目3:随机链表的复制 “单链表leetcode刷题/上”的链接:https://blog.csdn.net/2302_80297338/article/details/140409360?spm1001.2014.3001.5501 题目1:合并两个有…

Ecovadis认证评估的四个方面 Ecovadis评估结果呈现形式

Ecovadis的认证过程严谨,基于国际公认的标准和准则进行评估。获得Ecovadis认证的企业,在社会责任、环境保护、商业道德和可持续采购等方面的表现得到了专业认可,这有助于提升企业的信誉度和透明度,增强利益相关者的信任。 Ecovad…

【CTF | WEB】003、攻防世界WEB题目之xff_referer

文章目录 xff_referer题目描述:解题思路:XFF与Referer基本了解1. XFF(X-Forwarded-For):2. Referer:简单总结: 解题实操: xff_referer 题目描述: X老师告诉小宁其实xff和referer是可以伪造的。…

在 Linux 系统中下载 Python 并配置环境

哈喽,大家好,木易巷来啦! 在 Linux 系统中下载 Python 并配置环境,主要包含以下几个核心步骤: ▍1、安装 Python 多数 Linux 发行版已预装 Python,但您可能需要安装不同版本或更新现有版本。 打开终端。 …

SpringBoot(Ⅰ)——HelloWorld和基本打包部署+Pom依赖概述+@SpringBootApplication注解+自动装配原理+约定大于配置

前言 如果SSM学的比较好,那么SpringBoot说白了就两件事:约定大于配置和自动装配 SpringBoot不会提供任何的功能拓展,完全依赖我们手动添加 所以SpringBoot的本质是一个依赖脚手架,可以快速集成配置各种依赖 1.1 SpringBoot相关依赖 创建…

失败:Windows--WSL2--Ubuntuon--Docker

编写目的: 在Windows上安装Docker,用Docker安装Gitlab、Jenkins等软件。 文章记录一下Windows上安装Docker的过程。 参考文档: 旧版 WSL 的手动安装步骤 | Microsoft Learn 下面用"参考文档"代替 目录 第一步:启…

学习计算机网络(三)——IP地址

一、IP协议(IPV4、IPV6) 表示形式(两种): 点分十进制、二进制 地址被点分为4个部分,每个部分8位,总共32位。 A、B、C类地址都是单播地址(一对一通信),D类…

谷粒商城实战笔记-175~177-商城业务-检索服务-检索查询接口开发

文章目录 一,175-商城业务-检索服务-检索查询参数模型分析抽取二,176-商城业务-检索服务-检索返回结果模型分析抽取三,177-商城业务-检索服务-检索DSL测试-查询部分四,178-商城业务-检索服务-检索DSL测试-聚合部分问题记录解决方案…

redis散列若干记录

字典 redis本身使用字典结构管理数据 redis使用hash表实现字典结构 使用了什么hash算法 使用SipHash算法,该算法能有效防止Hash表碰撞,并有不错的性能 hash冲突怎么解决 使用链表法解决hash冲突 hash表如何扩容 渐进式扩容,不会引起线程长期阻…

趣味算法------可截断素数

目录 题目描述: 思路解析: 质数判断函数: 反转函数: 右截断素数判断函数: 左可截断素数: 具体代码: 题目描述: 左截断素数是不包含 0 位的素数,当连续删除第一个数…

大四生都在的用8款AI论文生成器在线网站!

在当前的AI技术浪潮中,智能AI写作工具已经成为了学术研究和论文撰写的重要助手。对于大四生来说,选择合适的AI论文生成器可以大大提高写作效率和质量。以下是8款值得推荐的AI论文生成器在线网站: 一、千笔-AIPassPaPer 这是一款功能全面且高…

花几千上万学习Java,真没必要!(四十六)

Lambda表达式: 测试代码1: package test.lambda; public class LambdaDemo { // 实现Runnable接口的类 static class MyThread implements Runnable { Override public void run() { System.out.println("线程运行中:通过实现Runn…

【智能流体力学】ANSYS Fluent流体仿真基础、深度学习驱动思想及其CAX计算机辅助集成技术

目录 一、CAX计算机辅助集成技术二、计算机辅助工程(CAE)三、SCDM (Species Concentration Display Model) 显示和分析物质浓度分布的模型1. **SCDM概述**2. **主要功能**3. **功能特点**4. **使用步骤**5. **应用实例**6. **优点与限制**四、行业应用五、Fluent 软件功能1. …