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

相关推荐
闪电麦坤958 分钟前
SQL:Constraint(约束)
数据库·sql
Francek Chen9 分钟前
【PySpark大数据分析概述】03 PySpark大数据分析
大数据·分布式·数据挖掘·数据分析·pyspark
_沉浮_16 分钟前
Spring AI使用tool Calling和MCP
java·人工智能·spring
果冻人工智能31 分钟前
我们准备好迎接AI的下一次飞跃了吗?
人工智能
观无35 分钟前
.NET-EFCore基础知识
数据库·.net
^_^ 纵歌38 分钟前
mongodb和clickhouse比较
数据库·clickhouse·mongodb
_玖-幽41 分钟前
Python 数据分析01 环境搭建教程
大数据·python·jupyter
刘大猫2642 分钟前
Arthas profiler(使用async-profiler对应用采样,生成火焰图)
java·人工智能·后端
果冻人工智能1 小时前
猿群结伴强大,但AI代理不行:为什么多智能体系统会失败?
人工智能
周末程序猿1 小时前
机器学习|MCP(Model Context Protocol)实战
人工智能·机器学习·mcp