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

news2025/4/16 4:57:05

作者:来自 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.coloradmin.cn/o/2335689.html

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

相关文章

蓝桥杯基础数论入门

一.试除法 首先我们要了解&#xff0c;所有大于1的自然数都能进行质因数分解。试除法作用如下&#xff1a; ​质数判断 试除法通过验证一个数是否能被小于它的数&#xff08;一般是用2到用根号x&#xff09;整除来判断其是否为质数。根据定义&#xff0c;质数只能被1和自身整除…

Spring 事件机制与观察者模式的深度解析

一、引言 在软件设计中&#xff0c;观察者模式&#xff08;Observer Pattern&#xff09;是一种非常经典且实用的设计模式。它允许一个对象&#xff08;Subject&#xff09;在状态发生改变时通知所有依赖它的对象&#xff08;Observers&#xff09;&#xff0c;从而实现对象之…

【软考系统架构设计师】信息安全技术基础知识点

1、 信息安全包括5个基本要素&#xff1a;机密性、完整性、可用性、可控性与可审查性。 机密性&#xff1a;确保信息不暴露给未授权的实体或进程。&#xff08;采取加密措施&#xff09; 完整性&#xff1a;只有得到允许的人才能修改数据&#xff0c;并且能够判断出数据是否已…

2025年第十六届蓝桥杯省赛真题解析 Java B组(简单经验分享)

之前一年拿了国二后&#xff0c;基本就没刷过题了&#xff0c;实力掉了好多&#xff0c;这次参赛只是为了学校的加分水水而已&#xff0c;希望能拿个省三吧 >_< 目录 1. 逃离高塔思路代码 2. 消失的蓝宝思路代码 3. 电池分组思路代码 4. 魔法科考试思路代码 5. 爆破思路…

01-算法打卡-数组-二分查找-leetcode(704)-第一天

1 数组基础理论 数组是存放在连续内存空间上的相同数据结构的集合。数组可以通过下标索引快速获取数据&#xff0c;因为数组的存储空间是连续的所以在删除、更新数据的时候需要移动其他元素的地址。 下图是一个数组的案例图形&#xff1a;【内存连续、索引小标从0开始可…

怎么看英文论文 pdf沉浸式翻译

https://arxiv.org/pdf/2105.09492 Immersive Translate Xournal打开

RabbitMQ 深度解析:从基础到高级应用的全面指南

&#x1f430; RabbitMQ 深度解析&#xff1a;从基础到高级应用的全面指南 前言&#x1f4d8; 一、RabbitMQ 简介⚙️ 二、核心特性可靠性 &#x1f512;灵活路由 &#x1f504;高可用性 &#x1f310;多协议支持 &#x1f30d;多语言客户端 &#x1f4bb;插件机制 &#x1f50…

【图灵Python爬虫逆向】题七:千山鸟飞绝

题目背景 题目地址&#xff1a;https://stu.tulingpyton.cn/problem-detail/7/ 这一题为中等难度 打开控制台时会发现进入无限debug&#xff0c;可以通过右键点击"一律不在此处暂停"来绕过这个障碍。 一、请求与响应分析 1. 请求参数分析 首先观察网络请求&…

ubuntu 2404 安装 vcs 2018

参考ubuntu 2204 安装 vcs 2018 系统信息 Ubuntu 24.04.2 LTS ubuntu和 安装后的 vcs 花费了 22G , 其中 "安装后的 vcs" 占13G预先配置 过程 和 2204 安装 vcs 2018 不同, 其他相同 // vm-tools 的安装, 不是虚拟机不需要 sudo apt-get update sudo apt-get inst…

潇洒浪: Dify 上传自定义文件去除内容校验 File validation failed for file: re.json

Dify上传文件 添加其他文件类型如 my.myselfsuffix 上传成功 执行报错 File validation failed for file: re.json 解决办法 Notepad++ 搜索dify源码

python-66-前后端分离之图书管理系统的Vue前端项目逐行分析

文章目录 1 App.vue的数据表格1.1 template部分1.1.1 div标签1.1.2 h1标签1.1.3 el-button标签1.1.4 el-table标签1.1.5 el-table-column标签1.1.6 表格中放置按钮1.2 script部分1.2.1 加载库和函数1.2.2 创建响应式数组1.2.3 创建getBooks函数1.2.4 onMounted函数1.2.5 创建ha…

【实战手册】8000w数据迁移实践:MySQL到MongoDB的完整解决方案

🔥 本文将带你深入解析大规模数据迁移的实践方案,从架构设计到代码实现,手把手教你解决数据迁移过程中的各种挑战。 📚博主其他匠心之作,强推专栏: 小游戏开发【博主强推 匠心之作 拿来即用无门槛】文章目录 一、场景引入1. 问题背景2. 场景分析为什么需要消息队列?为…

OpenAI为抢跑AI,安全底线成牺牲品?

几年前&#xff0c;如果你问任何一个AI从业者&#xff0c;安全测试需要多长时间&#xff0c;他们可能会淡定地告诉你&#xff1a;“至少几个月吧&#xff0c;毕竟这玩意儿可能改变世界&#xff0c;也可能毁了它。”而现在&#xff0c;OpenAI用实际行动给出了一个新答案——几天…

OpenCV 图形API(25)图像滤波-----均值滤波(模糊处理)函数blur()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 使用归一化的方框滤波器模糊图像。 该函数使用以下核来平滑图像&#xff1a; K 1 k s i z e . w i d t h k s i z e . h e i g h t [ 1 1 ⋯ …

轻量级开源文件共享系统PicoShare本地部署并实现公网环境文件共享

&#xfeff;## 前言 本篇文章介绍&#xff0c;如何在 Linux 系统本地部署轻量级文件共享系统 PicoShare&#xff0c;并结合 Cpolar 内网穿透实现公网环境远程传输文件至本地局域网内文件共享系统。 PicoShare 是一个由 Go 开发的轻量级开源共享文件系统&#xff0c;它没有文…

UE5蓝图之间的通信------接口

一、创建蓝图接口 二、双击创建的蓝图接口&#xff0c;添加函数&#xff0c;并重命名新函数。 三、在一个蓝图&#xff08;如玩家角色蓝图&#xff09;中实现接口&#xff0c;如下图&#xff1a; 步骤一&#xff1a;点击类设置 步骤二&#xff1a;在细节面板已经实现的接口中…

银河麒麟服务器操作系统V10安装Nvidia显卡驱动和CUDA(L40)并安装ollama运行DeepSeek【开荒存档版】

前期说明 麒麟官方适配列表查找没有L40,只有海光和兆芯适配麒麟V10,不适配Intel芯片 但是我在英伟达驱动列表查到是适配的! 反正都算是X86,我就直接开始干了,按照上面安装系统版本为:银河麒麟kylinos V10 sp3 2403 输入nkvers可以查看麒麟系统具体版本: 安装Nvid…

学习八股的随机思考

随时有八股思考都更新一下&#xff0c;理解的学一下八股。谢谢大家的阅读&#xff0c;有错请大家指出。 bean的生命周期 实际上只有四步 实例化 ----> 属性赋值 ---> 初始化 ---> 销毁 但是在实例化前后 初始化前后 会存在一些前置后置的处理&#xff0c;目的是增…

山东大学软件学院创新项目实训开发日志(10)之测试前后端连接

在正式开始前后端功能开发前&#xff0c;在队友的帮助下&#xff0c;成功完成了前后端测试连接&#xff1a; 首先在后端编写一个测试相应程序&#xff1a; 然后在前端创建vue 并且在index.js中添加一下元素&#xff1a; 然后进行测试&#xff0c;测试成功&#xff1a; 后续可…