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.pswp.cn/diannao/77523.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/77523.shtml
英文地址,請注明出處:http://en.pswp.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. …