作者:來自 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