Elasticsearch 向量数据库,原生支持 Google Cloud Vertex AI 平台

作者:来自 Elastic Valerio Arvizzigno

Elasticsearch 将作为第一个第三方原生语义对齐引擎,支持 Google Cloud 的 Vertex AI 平台和 Google 的 Gemini 模型。这使得联合用户能够基于企业数据构建完全可定制的生成式 AI 体验,并借助 Elasticsearch 的顶级搜索 AI 能力提供支持。

Elastic 欣然宣布,Elasticsearch 向量数据库现已集成进 Google Cloud 的 Vertex AI 平台,作为原生支持的信息检索引擎。这项集成让用户能够结合 Google Gemini 模型的多模态能力,以及 Elasticsearch 所提供的先进 AI 驱动语义搜索与混合搜索能力。

开发者现在可以在一个统一的流程中构建 RAG 应用,将聊天体验基于私有数据进行语义对齐,方式灵活、低代码。无论你是为客户或内部员工构建 AI 智能体,还是在软件中集成 LLM 生成能力,Vertex AI 平台都能以极简配置将 Elasticsearch 的相关性能力触手可及。该集成使得 Gemini 模型在生产场景中的应用变得更加简单高效,加速从原型验证(PoC)到实际落地的全过程。

在本文中,我们将逐步演示如何将 Elasticsearch 与 Google Cloud 的 Vertex AI 平台集成,实现数据语义对齐,并构建完全可定制的生成式 AI 应用。让我们一起探索其中的奥秘。

Google Cloud 的 Vertex AI 与 Gemini 模型,结合 Elasticsearch 实现基于你数据的语义对齐

使用 Vertex AI 服务和工具来构建生成式 AI 应用的用户,现在可以通过全新的 “Grounding(语义对齐)” 选项,将私有数据自动引入对话交互中。Elasticsearch 现已成为该功能的一部分,并可通过以下两种方式使用:

  • Vertex AI LLM API:在生成阶段直接增强 Google 的 Gemini 模型(推荐方式);

  • Grounded Generation API:在 Vertex AI Agent Builder 生态中用于构建智能体体验。

通过此次集成,Elasticsearch —— 全球下载量与部署量最多的向量数据库 —— 将你的关键企业数据引入面向内部或客户的聊天系统中,这是生成式 AI 实际落地到业务流程中的关键。

上述 API 使开发者能够在代码中使用这项新的合作特性。然而,提示词设计(prompt engineering)和测试仍然是开发流程中不可或缺的一步,是产品开发前期探索的核心。为此,Elasticsearch 支持在 Vertex AI Studio 控制台工具中便捷评估,助力快速实验和迭代。

只需在 UI 中的 “Customize Grounding(自定义语义对齐)” 标签页内,配置 Elastic 端点及所需参数(如搜索的索引、检索的文档数量、搜索模板等),即可轻松启用。现在,你可以基于私有知识开始生成内容了!

准备就绪的生产级 GenAI 应用程序轻松构建

Elastic 和 Google Cloud 致力于提供面向开发者、全面且高效的体验。在 Vertex AI 上构建 GAI 应用时,借助 LLM API 和 Grounding Generation API 原生连接 Elastic,可以降低复杂性和开发负担,无需额外 API 和数据编排,只需一次统一调用即可实现数据落地。

我们来看一下它在两种场景中的具体应用方式。

第一个示例是通过 LLM API 执行的:

curl -X POST \-H "Authorization: Bearer $(gcloud auth print-access-token)" \-H "Content-Type: application/json" \https://us-central1-aiplatform.googleapis.com/v1beta1/projects/<PROJECT_ID>/locations/us-central1/publishers/google/models/gemini-2.0-flash-001:generateContent \-d '
{"contents": [{"role": "user","parts": [{"text": "What's my company car policy?"}]}],"tools": [{"retrieval": {"externalApi": {"api_spec": "ELASTIC_SEARCH","endpoint": "https://<my-elastic-cluster>.gcp.elastic-cloud.com:9243","apiAuth": {"apiKeyConfig": {"apiKeyString": "ApiKey <API_KEY>"}},"elasticSearchParams": {"index": "<my-index>","searchTemplate": "<my-search-template>"}}}}]
}

在上述示例中,通过 API 的检索字段向 Gemini 2.0 Flash 发出内容生成请求时,我们可以为该请求设置一个上下文检索引擎。将 api_spec 设置为 "ELASTIC_SEARCH",即可启用其他配置参数,例如 API Key、集群 endpoint(用于将请求路由到你的 Elastic 集群)、用于检索数据的索引,以及用于搜索逻辑的 Search 模板。

同样的结果也可以通过 Grounding Generation API 实现,只需设置 groundingSpec 参数即可:

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-discoveryengine.googleapis.com/v1alpha/projects/<PROJECT_ID>/locations/global:generateGroundedContent -d '
{"contents": [{"role": "user","parts": [{"text": "What do I need to patch a hole in my drywall?"}]}],"groundingSpec": {"groundingSources": [{"elasticSource": {"endpoint": "https://<my-elastic-cluster>.gcp.elastic-cloud.com:9243","index": "<my-index>","searchTemplate": "<my-search-template","apiKey": "projects/<PROJECT_ID>/secrets/api-key/versions/latest"}}]}
}
'

无论使用哪种方式,响应都会返回在 Elasticsearch(及其相关数据源)中找到的最相关的私有文档,以支持你的查询。

不过,简单性不应被误解为无法个性化以满足你的具体需求和使用场景。正因如此,我们的设计允许你灵活地调整搜索配置,从而完美适配你的使用场景。

完全可定制的搜索尽在指尖:搜索模板

为了为你的搜索场景提供最大的定制化能力,我们与 Google Cloud 合作,在我们广为人知的 搜索模板 基础上构建了这一体验。Elasticsearch 的搜索模板是创建动态、可重用和易维护搜索查询的极佳工具。它们允许你预定义并重用查询结构,尤其适用于需要使用不同参数执行相似查询的情况,不仅节省开发时间,还能降低出错概率。模板中可以包含变量占位符,使查询具备动态性,能适应不同的搜索需求。

在使用 Vertex AI API 和 Elasticsearch 进行 grounding 时,你必须引用一个目标搜索模板(如前面的代码片段所示),搜索逻辑就在这个模板中实现,并由 Elasticsearch 执行。Elastic 的高级用户可以异步管理、配置和更新搜索策略,并根据特定的索引、模型和数据进行定制,而 Vertex AI 用户、Web 应用开发者或 AI 工程师只需要在 grounding API 中指定模板名称即可。

这种设计提供了完全的自定义能力,在 Google Cloud AI 环境中将 Elasticsearch 强大的检索能力交到你手中,同时为不同类型的开发者(即使对 Elastic 不熟悉)保证了模块化、透明度和易用性。

无论你需要 BM25 搜索、语义搜索,还是两者之间的混合方式(你已经了解 retrievers 了吗?可以在单次 Search API 调用中组合使用不同的检索技术),你都可以在搜索模板中定义自定义逻辑,而 Vertex AI 会自动利用它。

这也适用于你选择的 embedding 模型和 reranking 模型,无论是用来管理向量,还是排序结果。根据你的使用场景,你可以选择将模型部署在 Elastic 的 ML 节点上,通过 Inference API 使用第三方服务端点,或者在本地部署模型。这些都可以通过搜索模板实现,我们将在下一节中讲解其工作方式。

从参考模板开始,再构建你自己的模板

为了帮助你快速入门,我们提供了一组兼容的搜索模板示例,作为初始参考;你可以在此基础上进行修改并构建你自己的自定义模板:

  • 使用 ELSER 模型的语义搜索(稀疏向量 + 分块)

  • 使用 e5 多语言模型的语义搜索(稠密向量 + 分块)

  • 使用 Vertex AI 文本嵌入模型的混合搜索

你可以在这个 GitHub 仓库中找到它们。

我们来看一个示例:使用 Google Cloud 的 Vertex AI API 在产品目录上创建 embeddings。首先,我们需要在 Elasticsearch 中创建如下所示的搜索模板:

PUT _scripts/google-template-knn
{"script": {"lang": "mustache","source": {"_source": {"excludes": [ "title_embedding", "description_embedding", "images" ]},"size": "{{num_hits}}","knn" : [{ "field": "description_embedding","k": 5,"num_candidates": 10,"query_vector_builder": {"text_embedding": {"model_id": "googlevertexai_embeddings_004","model_text": "{{query}}"}},"boost": 0.4},{"field": "title_embedding","k": 5,"num_candidates": 10,"query_vector_builder": {"text_embedding": {"model_id": "googlevertexai_embeddings_004","model_text": "{{query}}"}},"boost": 0.6}]}  }
}

在这个示例中,我们将在一次搜索中对两个字段执行 KNN 搜索:title_embedding(包含产品名称的向量字段)和 description_embedding(包含其描述表示的字段)。

你可以使用 excludes 语法避免返回不必要的字段给 LLM,这些字段可能会对其处理造成干扰,从而影响最终答案的质量。在我们的示例中,我们排除了包含向量和图片 URL 的字段。

向量是在查询时通过提交的输入动态生成的,使用的是 Vertex AI embeddings API 的推理端点 googlevertexai_embeddings_004,该端点之前已定义如下:

PUT /_inference/text_embedding/googlevertexai_embeddings_004
{"service": "googlevertexai","service_settings": {"service_account_json": "<your_service_account_key>","model_id": "text-embedding-004","location": "us-central1","project_id": "<your_gcp_project>"}
}

你可以在这里找到关于如何使用 Elastic 的 Inference API 的更多信息。

现在我们已经准备好测试我们的模板化搜索了:

GET product-catalog-with-embeddings/_search/template
{"id": "google-template-knn","params": {"query": "What do I need to patch a hole in my drywall?","index_name": "product-catalog-with-embeddings","num_hits": 3}
}

参数字段会替换我们在模板脚本中用双大括号设置的变量。目前,Vertex AI 的 LLM 和 Grounded Generation API 可以向 Elastic 发送以下输入变量:

  • “query” —— 用户要搜索的查询内容

  • “index_name” —— 要搜索的索引名称

  • “num_hits” —— 我们希望在最终输出中检索到的文档数量

以下是一个示例输出:

{"_index": "product-catalog-with-embeddings","_id": "9ZQCm5IBcrGI1ivqV-f_","_score": 0.4925191,"_ignored": ["description.keyword","images.keyword"],"_source": {"description": "DAP Eclipse Rapid Wall Repair Patch is a new, revolutionary product solution for repairing drywall damage. No more waiting for spackling to dry or messy sanding. DAP Eclipse allows you to patch drywall damage and paint immediately, allowing you to finish your project faster. This all-in-1, mess free solution not only provides a permanent, long-lasting repair but also superior impact resistance for areas that may see reoccurring impact, such as behind a door.","availability": "InStock","model_id": "googlevertexai_embeddings_004","title": "4 in. Eclipse Wall Repair Patch (2-Pack)","url": "https://www.myDIYwebsite.com/p/DAP-4-in-Eclipse-Wall-Repair-Patch-2-Pack-7079809164/317967195","price": 23.96,"product_id": 317967195,"currency": "USD","brand": "DAP"}

上述查询正是 Google Cloud 的 Vertex AI 在后台运行时会调用的 Elasticsearch 查询模板。Gemini 模型将使用这些返回的文档来支撑它的回答:当你问 “What do I need to patch my drywall?” 时,聊天代理不会给出笼统的建议,而是会推荐具体的产品!

端到端的 GenAI 体验:Elastic 携手 Google Cloud

Elastic 与 Google Cloud 合作,打造可用于生产环境的端到端 GenAI 体验和解决方案。正如我们刚才看到的,Elastic 是首个直接集成到 Vertex AI 平台 UI 和 SDK 中的独立软件供应商(ISV),通过我们强大的向量检索功能,实现与 Gemini 模型无缝集成的上下文提示和智能代理。此外,Elastic 还与 Vertex AI 以及 Google AI Studio 的 embedding、重排序和生成模型集成,在 Google Cloud 环境中即可完成向量的创建与排序,确保符合 Responsible AI  原则。

通过支持多模态方式,我们共同促进了适用于多种数据格式的应用构建。

你可以通过我们的 Playground 来调优、测试并导出你的 GenAI 搜索代码。

但这不仅仅是构建搜索应用:Elastic 利用 Gemini 模型增强 IT 运维,例如在 Elastic AI 助手、攻击发现和自动导入功能中,减少安全分析师和 SRE 在低价值任务上的日常疲劳,让他们可以专注于提升业务。Elastic 还支持对 Vertex AI 使用情况的全面监控,跟踪响应时间、令牌和资源等指标和日志,以确保最佳性能。通过这种方式,我们共同管理完整的 GenAI 生命周期,从数据摄取和嵌入生成到使用混合搜索进行关联,同时确保 GenAI 工具的强大可观察性和安全性,依托 LLM 驱动的操作。

探索更多并试用!

你有兴趣试试吗?该功能目前已在公共预览中提供!

如果你还没有,开始使用 Elastic Search AI 平台并探索我们的能力的最简单方法之一是通过你的免费 Elastic Cloud 试用,或通过 Google Cloud Marketplace 订阅。

本文中描述的任何功能或功能的发布及时间由 Elastic 完全自主决定。任何当前不可用的功能可能无法按时交付或根本不交付。Elastic、Elasticsearch 及相关商标是 Elasticsearch N.V. 在美国及其他国家的商标、徽标或注册商标。所有其他公司和产品名称是其各自所有者的商标、徽标或注册商标。

Elasticsearch 与行业领先的 Gen AI 工具和服务提供商有本地集成。查看我们的网络研讨会,了解如何超越 RAG 基础,或如何构建生产就绪应用 Elastic 向量数据库。

为了构建最适合你的用例的搜索解决方案,现在就开始免费云试用,或在本地机器上尝试 Elastic。

原文:Elasticsearch vector database for native grounding in Google Cloud’s Vertex AI Platform - Elasticsearch Labs

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

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

相关文章

408 计算机网络 知识点记忆(7)

前言 本文基于王道考研课程与湖科大计算机网络课程教学内容&#xff0c;系统梳理核心知识记忆点和框架&#xff0c;既为个人复习沉淀思考&#xff0c;亦希望能与同行者互助共进。&#xff08;PS&#xff1a;后续将持续迭代优化细节&#xff09; 往期内容 408 计算机网络 知识…

10-MySQL-性能优化思路

1、优化思路 当我们发现了一个慢SQL的问题的时候,需要做性能优化,一般我们是为了提高SQL查询更快,一个查询的流程由下图的各环节组成,每个环节都会消耗时间,要减少消耗时候需要从各个环节都分析一遍。 2 连接配置优化 第一个环节是客户端连接到服务端,这块可能会出现服务…

Docker:安装与部署 Nacos 的技术指南

1、简述 Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一个动态服务发现、配置管理和服务治理的综合解决方案,适用于微服务架构。 Nacos 主要功能: 服务发现与注册:支持 Dubbo、Spring Cloud 等主流微服务框架的服务发现与注册。动态配置管理:支持…

【非机动车检测】用YOLOv8实现非机动车及驾驶人佩戴安全帽检测

非机动车及驾驶人佩戴安全帽检测任务的意义主要包括以下几点&#xff1a; 保障行车安全&#xff1a;非机动车包括自行车、电动车等&#xff0c;佩戴安全帽能够有效保护骑车人头部&#xff0c;减少因交通事故造成的头部伤害风险&#xff0c;提高行车安全系数。 符合交通法规&am…

壹起航:15年深耕互联网营销,助力中国工厂出海获客

在全球化浪潮下&#xff0c;越来越多的中国工厂渴望拓展海外市场&#xff0c;但面临品牌建立、稳定询盘获取及营销成本降低等多重挑战。壹起航凭借15年的丰富经验&#xff0c;整合外贸建站、SEO优化及海外短视频营销&#xff0c;为中国工厂提供一站式出海解决方案。 一、外贸独…

Emacs 折腾日记(二十)——修改emacs的一些默认行为

上一篇我们完成了emacs输入法的配置以及将emacs配置成了使用vim的操作方式。但是emacs目前有些默认行为我不太喜欢&#xff0c;这节我们一起来修改它 备份设置 我们打开emacs的配置文件所在路径&#xff0c;发现有大量的~结尾的文件&#xff0c;这是emacs的备份文件。这里&am…

聊透多线程编程-线程基础-4.C# Thread 子线程执行完成后通知主线程执行特定动作

在多线程编程中&#xff0c;线程之间的同步和通信是一个常见的需求。例如&#xff0c;我们可能需要一个子线程完成某些任务后通知主线程&#xff0c;并由主线程执行特定的动作。本文将基于一个示例程序&#xff0c;详细讲解如何使用 AutoResetEvent 来实现这种场景。 示例代码…

【网络安全 | 项目开发】Web 安全响应头扫描器(提升网站安全性)

原创项目,未经许可,不得转载。 文章目录 项目简介工作流程示例输出技术栈项目代码使用说明项目简介 安全响应头是防止常见 Web 攻击(如点击劫持、跨站脚本攻击等)的有效防线,因此合理的配置这些头部信息对任何网站的安全至关重要。 Web 安全响应头扫描器(Security Head…

使用libcurl编写爬虫程序指南

用户想知道用Curl库编写的爬虫程序是什么样的。首先&#xff0c;我需要明确Curl本身是一个命令行工具和库&#xff0c;用于传输数据&#xff0c;支持多种协议。而用户提到的“Curl库”可能指的是libcurl&#xff0c;这是一个客户端URL传输库&#xff0c;可以用在C、C等编程语言…

使用pip3安装PyTorch与PyG,实现NVIDIA CUDA GPU加速

使用python3的pip3命令安装python依赖库。 # python3 -V Python 3.12.3 # # pip3 -V pip 25.0.1 from /root/.pyenv/versions/3.12.3/lib/python3.12/site-packages/pip (python 3.12)Usage: pip3 install [options] <package> ...pip3 install [options] -r <re…

五种常用的web加密算法

文章目录 五种常用Web加密算法实战及原理详解1. AES (高级加密标准)原理详解应用场景实战代码&#xff08;Node.js&#xff09; 2. RSA (非对称加密)原理详解应用场景实战代码&#xff08;Node.js&#xff09; 3. SHA-256 (安全哈希算法)原理详解应用场景实战代码&#xff08;浏…

深入解析 C++ 设计模式:原理、实现与应用

一、引言 在 C 编程的广袤领域中&#xff0c;设计模式犹如闪耀的灯塔&#xff0c;为开发者指引着构建高效、可维护软件系统的方向。设计模式并非神秘莫测的代码魔法&#xff0c;实际上&#xff0c;我们在日常编程中或许早已与之打过交道。简单来说&#xff0c;设计模式常常借助…

Python刷题笔记

Python刷题笔记 1、输出格式化 第一种格式化的输出&#xff1a; name "jack" age 17 salary 20031.8752 print("你的名字是&#xff1a;%s,今年 %d 岁,工资 %7.2f" % (name,age,salary) ) --------------------------------------- 你的名字是&#…

【Kubernetes】Kubernetes 如何进行日志管理?Fluentd / Loki / ELK 适用于什么场景?

由于 Kubernetes 运行在容器化的环境中&#xff0c;应用程序和系统日志通常分布在多个容器和节点上&#xff0c;传统的日志管理方法&#xff08;例如直接访问每个节点的日志文件&#xff09;在 Kubernetes 中不适用。 因此&#xff0c;Kubernetes 引入了集中式日志管理方案&am…

Ansible(8)——循环与条件任务

目录 一、循环迭代任务&#xff1a; 1、简单循环&#xff1a; 2、循环字典列表&#xff1a; 3、Ansible 2.5 之前的循环关键字&#xff1a; 4、在循环中使用 register 变量&#xff1a; 二、条件任务&#xff1a; 1、使用条件句的常见场景&#xff1a; 2、条件任务语法…

adb|scrcpy的安装和配置方法|手机投屏电脑|手机声音投电脑|adb连接模拟器或手机

adb|scrcpy的安装和配置方法手机投屏电脑|手机声音投电脑|adb连接模拟器或手机或电视 引言 在数字设备交织的现代生活中&#xff0c;adb&#xff08;Android Debug Bridge&#xff09;与 scrcpy 宛如隐匿的强大工具&#xff0c;极大地拓展了我们操控手机、模拟器乃至智能电视等…

vue3项目集成electron

一、环境准备 1. 确保已安装 Node.js (建议版本 16.x 或更高) 2. 创建或进入现有 Vue 项目目录 cd your-vue-project 二、添加 Electron 支持 在项目根目录执行: vue add electron-builder 执行后会在 `src` 目录下生成 `background.js` 主进程文件。 三、主进程配置 (ba…

循环神经网络 - 参数学习之随时间反向传播算法

本文中&#xff0c;我们以同步的序列到序列模式为例来介绍循环神经网络的参数学习。 循环神经网络中存在一个递归调用的函数 &#x1d453;(⋅)&#xff0c;因此其计算参数梯度的方式和前馈神经网络不太相同。在循环神经网络中主要有两种计算梯度的方式&#xff1a;随时间反向…

体验OceanBase的 并行导入功能

在数据库的日常使用中&#xff0c;会经常遇到以下场景&#xff1a; ‌数据复制‌&#xff1a;将一个或多个表中的数据复制到目标表中&#xff0c;可能是复制全部数据&#xff0c;也可能仅复制部分数据。数据合并&#xff1a;将数据从一个表转移到另一个表&#xff0c;或者将多…

Kafka和RocketMQ相比有什么区别?那个更好用?

Kafka和RocketMQ相比有什么区别?那个更好用? Kafka 和 RocketMQ 都是广泛使用的消息队列系统&#xff0c;它们有很多相似之处&#xff0c;但也有一些关键的区别。具体选择哪个更好用&#xff0c;要根据你的应用场景和需求来决定。以下是它们之间的主要区别&#xff1a; 1. …