构建基于 Elasticsearch 的企业级 AI 搜索应用

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: 本文介绍了基于Elasticsearch构建企业级AI搜索应用的方案,重点讲解了RAG(检索增强生成)架构的实现。通过阿里云上的Elasticsearch AI搜索平台,简化了知识库文档抽取、文本切片等复杂流程,并结合稠密和稀疏向量的混合搜索技术,提升了召回和排序的准确性。此外,还探讨了Elastic的向量数据库优化措施及推理API的应用,展示了如何在云端高效实现精准的搜索与推理服务。未来将拓展至多模态数据和知识图谱,进一步提升RAG效果。

构建基于 Elasticsearch 的企业级 AI 搜索应用  

 

摘要:本文整理自Elastic首席解决方案架构师朱杰老师在云端问道12期方案教学关于构建基于 Elasticsearch AI 搜索实现RAG应用的分享。


image.png

本次主题是基于阿里云上的 Elasticsearch AI 搜索,实现 RAG 的整套的方案。

先作为理论部分,首先介绍整个 RAG 的整体的流程,RAG整体流程并不简单,主要准确度是有高度关系的。

一、流程阶段划分:

1.第一阶段

绿色的流程是属于离线的流程,就是企业知识库,为达到比较好的效果,需要对知识库的文档进行加工,它并不是非常简单的把文字抽取出写到 Elasticsearch。首先要保证能够从各种各样的文档中能够抽取出还要有很好的策略对它进行长段的文本进行切分之后构建索引,索引也会是向量和普通的文本的搜索,或者是稀疏的索引联合构建的索引,写到 Elasticsearch 里边

2.第二阶段

中间流程属于查询之前的流程,如果只输入关键词查询,很可能搜索质量并不好,特别是搜索比较简短,并没有很明确的告知意图需要利用很多大语言模型的能力对原始的问题进行意图的识别,会对问题进行各种各样的分类,基于分类进行原始问题的扩充改写能够让所问的问题会更加的明确进行问题的向量化,可能会把原始的问题和向量化以后的整个内容都交给 Elasticsearch,做多路的召回。

3.第三阶段

黄色流程就是召回和重排,最后交给大语言模型的流程,很明显的注意到现代的 RAG 架构一般都是会采用多路召回的架构并不是单纯的向量,因为单纯向量在实际做的效果当中不理想,所以往往会结合稀疏向量和的稠密向量甚至是 BM25 的多路召回,因为有现在大语言模型,包括现在很多基于 Bert 架构的模型的赋能,现在可以借助于非常好的重排的模型,对于多路召回的结果再进行语义上的重排序,能够让内容能够更加精准的符合提的问题。最后交给大语言模型这个地方对于提示词的各种优化也是比较重要的。

在整个上面三个流程之外,还可以看到两个非常重要关键的概念,一个是评测的指标,因为评测的指标就是最终的问题,回答的准确度的问题,往往需要建立量化的指标,有指标之后,才能够进行上面每一步的优化的调优能够让指标朝着越越高的准确度走。如果没有量化的评价指标,很难讲前面做的很多的优化有效果,最后交给大语言模型,问题就是往通用的大语言模型,往往在针对行业,回答都可能有些问题,往往会涉及到对于基础模型的微调,能够适应更加行业的问题,所以现在的图就是整个 RAG 的整体的流程

image.png

前面的整体流程对应的每环节都非常复杂,现在阿里云上 AI 搜索平台正是为解决之前它的整体的流程很复杂,每一步都需要非常深度的调优知识都非常复杂,可以看到刚才的离线流程,里边就会涉及到如何切片,如何数据提取等,这里边的每部分都涉及到很多的算法优化,已经相当于独立的微服务,可以直接调用引擎层面,也会适配很多的引擎,可以看到在 Query 的对应中间的流程,也已经有对应的解决方案,在最底下可以看到它不仅是传统的文档等,对于大数据的接入也做的非常的好,在云上可以做到一站式,这是现在AI搜索的一张整体的大图

image.png


二、RAG

举例讲所有做 RAG 的第一步就是对于知识库文档的抽取的动作,抽取的动作包含很多的优化的细节不光是要兼容各种各样的文档格式,文档里边会涉及大量的表格图表,图表里边还蕴含很多的知识,而且之间有逻辑关系,还有图文混排的包含各种各样的段落结构,先后顺序,还有各种各样的原数据,各样的图这张图的认识,对于数据和解析提取是非常大的工程,通过前面 AI 搜索平台的整体解决方案,可以极大的降低复杂程度,因为这里很多的问题都是公用的,把它抽出做服务,不断的迭代增强服务的可用性,能够帮助最快速的实现 RAG 的效果。

image.png

第二个比较有挑战的例子就是文本切片,文本切片不简单的文档里边往往会涉及到层级,层里边是一层嵌套一层层级对于整个 RAG 的召回结果有非常大的影响,很多的层级代表语义的关联程度,有的层级之间有非常强的语义关联关系,有的层级之间可能会比较松散,最想达到的效果是需要根据语义做非常好的切分,上面是一种机械的切分。如果对语义进行切分,需要依赖很多大模型的工作包,甚至包括对它的微调,才能非常好的理解各种各样的语义,甚至为行业的文档做特殊的训练和调优才能够做的非常好。比较好的消息是现在 AI 搜索平台已经帮做很多复杂的工作,不需要再关注于重复实现这一套,简单的调用可以帮做到比较好的效果。如果自己的企业有各方面特殊的需求,也可以进行各自的微调,因为它都是微服务形式,可以对它进行调整

image.png


三、混合搜索

下面介绍 RAG 场景下非常重要的概念混合搜索,之所以需要混合搜索,主要原因是召回的准确率在前面准备上下文窗口的准确率,现在自然语言处理。

基本上看到除原文本搜索外,有两个主流的方向,一个是稠密向量的模型,平常提到的很多的模型是稠密向量,它把原始的一句话编码成 1000 多维度的向量。不管是一句话还是一段文本,还是一整篇的文章,它都会编码成 1000 多维度的向量,所以把它叫做稠密向量

还有另外技术路径,特别是在自然语言,它稀疏向量稀疏向量大体上可以想象成关键词的编号,它会切分成很多关键词。大文档可能有几万个关键词,它通过稀疏向量的模型,可以针对其中关键词,给出权重的估计。它就可以比传统的基于的 BM25 算法,它可以做到更好的召回效果。看到现在基本上在向量搜索领域都会采用混合算法,一路或者 n 路进行密集的召回,另外一路基于稀疏向量进行召回,通过算法后续进行排序,最后得出结果。向量模型的质量就很关键。同样在 AI 搜索平台提供文本向量化的服务,它帮助大家能够提高效果,减少开发的负担。

image.png

四、Elastic 的向量数据库

下面讲的核心的部分是 Elastic 的向量数据库,Elastic 在做经典的搜索已经非常的强大,不管做结构化的搜索,还是做非结构化的文本匹配,甚至是地理位置的搜索,做完搜索之后还可以做分析和统计,已经做的非常强大。

在进入到 8.X 之后,Elastic 社区已经真正成为原生的向量数据库,从零开始写基于 HNW 的索引,还有整套的搜索的算法,它是原生的向量数据库,除提供基本的向量搜索以外,很大的特色是要继承原 ES 非常强大的搜索和统计的能力,做到混合搜索和计算的能力,能够提供非常强大的混合搜索,这是 Elastic 社区向量数据库的最大的特色。除此以外,不仅帮助存储和搜索,还会有全栈的链路帮助比如创建 Embedding,帮助做推理,可以用上传模型,也可以对接在线的服务,特别是阿里云上的服务

image.png

ES 要达到目标,肯定离不开对于向量搜索的各种各样的优化措施。简单介绍 ES 向量数据库做很多的优化,从向量数据开始,ES 会采用大量的硬件加速完成,因为向量它是计算密集型,不仅会用 Java的 PNAMA 项目,确定性的调用 CPU 的指令做比较昂贵的向量计算,甚至在场景,手动写 C 的代码,在 Java 里调 c 的代码,完成最为昂贵的计算的部分,充分利用硬件的能力。

第二会增加单个查询的并发程度,以往 ES 的搜索模型是不一样的,原 ES 更加关注多少个并发,但现在要增加单个查询的并发,主要因为计算的昂贵程度,并且因为现在的计算的体系架构里边多核心是越越多,比如 Arm 的系统体系架构的核心可能上百个核心,可以让大家堆自己的硬件,做到更高的查询,与之配套的是在多个并发查询之间也会做非常智能的协同,能够提前终止没必要的并发的查询,尽快的返回客户结果,最后也是向量数据库的标配,ES 同样也支持向量的量化,因为现在应用到生产情况下,必须要平衡精度和速度和成本,向量的量化基本上经常被讨论,现在会支持把 Float 压缩到 Int8 和 Int4,而且可以自动化的完成

image.png

ES 要做最好的混合搜索,现在支持哪些混合,比如 BM25,传统的稠密向量和稀疏向量,三路都可以进行混合,提供非常强大

image.png

采用比较流行的 RRF 的算法。简单介绍 RRF,因为 RRF 算法用的比较多,它的效果不错,不需要特别的调优,可以看到任意多路的结果,都可以进行归并。它的逻辑比较简单,主要是按照它的排名,比如 BM25,它会有一、二、三、四排名,在另外一路的召回里边也会有排名,多路合并就是把它的排名取个倒数,把整体加起就能得到个最后的分数。算法比较简单,但比较高效,也不需要为特定的场景做优化,又能取得比较好的结果,这就是采用的原因。

image.png

五、推理 API

下面介绍的推理的 API,因为最近阿里的 AI 搜索团队已经把推理平台 API 实现。提交到Elasticsearch 社区的代码里边。推理的 API 就是解耦层,能够解耦 ES 通常查询的链路还有推理的链路,在后续做 RAG 场景下面推理可能会有很多个选择,比如把推理部署到 ES 内部,或者在阿里云上有自己的推理的模型部署,或者直接调用阿里云自己的在线的推理服务,有很多的选择,有这一层通用的结构层,可以做到非常干净和整洁的逻辑的架构,可以插拔的适配到不同的需要适配的 AI 推理的模型上面,它对于 ES 在整个 RAG 场景下是至关重要的一点。现在阿里云上的 ES 已经可以完美和 AI 搜索的很多的比如 Embedding 模型Rerank 模型,还有大语言的主权等已经可以非常完美的进行工作

image.png

最后讲方向性的东西,AI 搜索很重要,开源生态的结合,不仅和ES 结合,还会其他的相量引擎结合,同样前端的编排的框架也会进行整合,在模型方面也会适配比较著名的开源大模型,在大数据底座接入方面,也会阿里云上的数仓数据湖做到对接,在多模态也会不仅仅局限于文本,也会涉及到图片语音,视觉的其他的方面。同样,在整个最后的召回里,甚至会采用 Agent,能够更好的理解用户的搜索习惯和用途,能够更加接近搜索和推理,它会比单纯的 RAG 更好,甚至会紧抓最新的前沿, Graph RAG,借助于知识图谱的能力进一步的提升整个 RAG 的效果

 

 

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
打赏
0
1
1
0
1025
分享
相关文章
Archon – 开源 AI 智能体框架,自主生成代码构建 AI 智能体
Archon 是一个开源的 AI 智能体框架,能够自主生成代码并优化智能体性能,支持多智能体协作、领域知识集成和文档爬取等功能,适用于企业、教育、智能家居等多个领域。
92 10
Archon – 开源 AI 智能体框架,自主生成代码构建 AI 智能体
Spring AI与DeepSeek实战二:打造企业级智能体
本文介绍如何基于Spring AI与DeepSeek模型构建企业级多语言翻译智能体。通过明确的Prompt设计,该智能体能自主执行复杂任务,如精准翻译32种ISO标准语言,并严格遵循输入格式和行为限制。代码示例展示了如何通过API实现动态Prompt生成和翻译功能,确保服务的安全性和可控性。项目已开源,提供更多细节和完整代码。 [GitHub](https://github.com/zlt2000/zlt-spring-ai-app) | [Gitee](https://gitee.com/zlt2000/zlt-spring-ai-app)
86 11
弹性算力革命:企业级GPU云服务如何重构AI与图形处理的效能边界
企业级GPU云服务基于云计算技术,为企业提供强大的GPU资源,无需自购硬件。它广泛应用于人工智能、大数据、3D建模、动画制作、GIS及医疗影像等领域,加速深度学习训练、图形处理和科学计算,提升效率并降低成本。企业可按需获取计算资源,灵活应对业务高峰,优化成本结构,推动业务发展。
16 1
容器化AI模型的安全防护:构建可信的AI服务
在AI模型广泛应用的背景下,容器化AI模型的安全防护至关重要。主要安全威胁包括数据窃取、模型窃取、对抗样本攻击和模型后门攻击等。为应对这些威胁,需采取多层次防护措施:容器安全(如使用可信镜像、限制权限)、模型安全(如加密、水印)、数据安全(如加密、脱敏)和推理安全(如输入验证、异常检测)。此外,利用开源工具如Anchore Engine、Falco和ART等,可进一步加强防护。遵循安全开发生命周期、最小权限原则和深度防御等最佳实践,确保AI服务的安全性和可信度。
PySpur:零代码构建AI工作流!开源可视化拖拽平台,支持多模态与RAG技术
PySpur 是一款开源的轻量级可视化 AI 智能体工作流构建器,支持拖拽式界面,帮助用户快速构建、测试和迭代 AI 工作流,无需编写复杂代码。它支持多模态数据处理、RAG 技术、文件上传、结构化输出等功能,适合非技术背景的用户和开发者快速上手。
150 5
容器化机器学习流水线:构建可复用的AI工作流
本文介绍了如何构建容器化的机器学习流水线,以提高AI模型开发和部署的效率与可重复性。首先,我们探讨了机器学习流水线的概念及其优势,包括自动化任务、确保一致性、简化协作和实现CI/CD。接着,详细说明了使用Kubeflow Pipelines在Kubernetes上构建流水线的步骤,涵盖安装、定义流水线、构建组件镜像及上传运行。容器化流水线不仅提升了环境一致性和可移植性,还通过资源隔离和扩展性支持更大规模的数据处理。
Elasticsearch:使用阿里云 AI 服务进行向量化和重新排名
本文介绍了如何将阿里云 AI 功能与 Elasticsearch 集成,以提高语义搜索的相关性。
226 0
金鸡电影节创投大会AI短片《天线》:构建基于现实世界的想象空间
金鸡电影节创投大会AI短片《天线》:构建基于现实世界的想象空间
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
129 5
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
这篇文章是关于Elasticsearch的学习指南,包括了解Elasticsearch、版本对应、安装运行Elasticsearch和Kibana、安装head插件和elasticsearch-ik分词器的步骤。
476 0
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等