ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

全面掌握 Vertex AI Search:Google Cloud 生成式 AI 搜索的资源地图与实战指南

全面掌握 Vertex AI Search:Google Cloud 生成式 AI 搜索的资源地图与实战指南 全面掌握 Vertex AI SearchGoogle Cloud 生成式 AI 搜索的资源地图与实战指南【免费下载链接】generative-aiSample code and notebooks for Generative AI on Google Cloud, with Gemini Enterprise Agent Platform项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai导读Vertex AI Search简称 VAIS是 Google Cloud 上由大语言模型驱动的全托管企业级搜索平台本指南以仓库search/目录的 README 为核心骨架完整梳理该目录下 Notebook 教程与可运行样例Samples两大资源线一方面深入讲解《创建 Datastore 与 Search Engine》的端到端流程另一方面系统介绍 Cloud Function 封装、Web 应用部署、自动 RAG 评测等生产级用法。读完本文你将掌握如何创建并填充搜索数据仓库、创建与之关联的搜索应用、提交查询并获取带引用的摘要以及如何在云函数、Web 应用等场景中集成 Vertex AI Search。什么是 Vertex AI Search根据仓库 vais-building-blocks/README.md 的定义Vertex AI Search 是一个完全托管的平台底层由大语言模型驱动可用于为公开或私有的网站、移动应用构建 AI 赋能的搜索与推荐体验。它的关键能力包括多类型数据源支持结构化structured、非结构化unstructured、网站数据site data以及 Jira、Salesforce、Confluence 等第三方应用的数据内置 LLM 集成能够针对你的数据给出复杂问题的答案即grounded in your data基于你的数据进行有依据的回答天然支持 RAG检索增强生成与 Grounding 场景开箱即用的多种检索形态包括文档与企业内网搜索Document Intranet Search、推荐Recommendations、Grounding 与 RAG详见 cloud-function/README.md 中的描述。图片说明Vertex AI Search 在控制台中提供的搜索选项概览是理解其能力边界与配置项的第一步。资源地图总览search/目录以两种形式组织资源覆盖从入门到生产的不同需求资源类型内容定位Notebooks3 个 Jupyter Notebook逐步跟随的教程式学习可一键在 Colab / Vertex AI Workbench 运行Samples11 个示例工程面向真实场景的可复用代码覆盖 Gemini Enterprise、云函数、调优、Web 应用等Notebookscreate_datastore_and_search.ipynb创建并填充 Datastore、创建搜索应用、提交查询、search_data_blending_with_gemini_summarization.ipynb混合数据仓库的查询与 Gemini 摘要、search_filters_metadata.ipynb过滤器与元数据使用SamplesGemini Enterprise、批量问答、Cloud Function、自定义 Embeddings、自定义 Ranking、Ranking API、检索增强生成、调优Tuning、VAIS Building Blocks、搜索选项Vertex AI Search Options、Web 应用。说明README 中提及的search_data_blending_with_gemini_summarization.ipynb、search_filters_metadata.ipynb以及bulk-question-answering/、retrieval-augmented-generation/样例目录在当前仓库的快照中未包含具体文件下文以其在 README 中的定位说明为准。Notebooks 教程详解创建 Datastore 并驱动 Search Engine端到端实操create_datastore_and_search.ipynb 是search/目录中最核心的入门教程由 Kara Greenfield 编写2023 年 11 月创建、2024 年 10 月更新目标非常明确创建并填充一个 Vertex AI Search Datastore → 创建连接该 Datastore 的搜索应用Search Engine→ 通过搜索引擎提交查询。本小节完整还原该 Notebook 的代码并补充参数含义。第一步安装依赖与认证在 Colab 中运行时需先安装官方 Python 客户端库并在安装后重启内核在 Vertex AI Workbench 中运行则无需此步骤%pip install --upgrade --user -q google-cloud-discoveryengine认证环节区分运行环境Colab 使用google.colab.auth.authenticate_user()本地环境则设置 Application Default Credentials!gcloud auth application-default login --project {PROJECT_ID}随后配置笔记本环境声明项目与区域from google.api_core.client_options import ClientOptions from google.cloud import discoveryengine PROJECT_ID YOUR_PROJECT_ID # param {type:string} LOCATION globalLOCATION通常为global若使用其他区域如us-central1客户端将自动指向{location}-discoveryengine.googleapis.com端点见下文所有create_*函数中的ClientOptions分支。第二步创建 Datastorecreate_data_store函数通过DataStoreServiceClient创建数据仓库核心参数包括industry_vertical行业垂直领域示例中使用GENERIC通用content_config内容配置示例使用CONTENT_REQUIRED表示数据仓库必须包含内容data_store_id仓库 ID只能包含小写字母、数字和连字符。def create_data_store(project_id, location, data_store_name, data_store_id): client_options ( ClientOptions(api_endpointf{location}-discoveryengine.googleapis.com) if location ! global else None ) client discoveryengine.DataStoreServiceClient(client_optionsclient_options) data_store discoveryengine.DataStore( display_namedata_store_name, industry_verticaldiscoveryengine.IndustryVertical.GENERIC, content_configdiscoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED, ) operation client.create_data_store( requestdiscoveryengine.CreateDataStoreRequest( parentclient.collection_path(project_id, location, default_collection), data_storedata_store, data_store_iddata_store_id, ) ) # 防止仓库实例化耗时较长时抛错中断执行 try: response operation.result(timeout90) except: print(long-running operation error.)调用示例注意命名规范仓库名只能含小写字母、数字与连字符DATASTORE_NAME alphabet-contracts DATASTORE_ID f{DATASTORE_NAME}-id create_data_store(PROJECT_ID, LOCATION, DATASTORE_NAME, DATASTORE_ID)第三步导入文档填充 Datastoreimport_documents使用DocumentServiceClient将 GCS 中的文档批量导入。关键点parent指向数据仓库的default_branch完整资源名形如projects/{project}/locations/{location}/dataStores/{data_store_id}/branches/{branch}gcs_source使用data_schemacontent输入 URI 为{gcs_uri}/*的通配形式reconciliation_mode支持FULL全量与INCREMENTAL增量两种模式示例采用INCREMENTAL。def import_documents(project_id, location, data_store_id, gcs_uri): client_options ( ClientOptions(api_endpointf{location}-discoveryengine.googleapis.com) if location ! global else None ) client discoveryengine.DocumentServiceClient(client_optionsclient_options) parent client.branch_path( projectproject_id, locationlocation, data_storedata_store_id, branchdefault_branch, ) source_documents [f{gcs_uri}/*] request discoveryengine.ImportDocumentsRequest( parentparent, gcs_sourcediscoveryengine.GcsSource( input_urissource_documents, data_schemacontent ), reconciliation_modediscoveryengine.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL, ) operation client.import_documents(requestrequest) response operation.result() metadata discoveryengine.ImportDocumentsMetadata(operation.metadata) return operation.operation.nameNotebook 使用 Google Cloud 公开样例数据Alphabet 投资者 PDF 文档source_documents_gs_uri gs://cloud-samples-data/gen-app-builder/search/alphabet-investor-pdfs import_documents(PROJECT_ID, LOCATION, DATASTORE_ID, source_documents_gs_uri)第四步创建 Search Engine搜索应用创建引擎的目的是将搜索层级search_tier设为 enterprise并启用高级 LLM 功能——Notebook 明确指出search_tier为 enterprise 是获得 extractive answers抽取式答案的前提而 LLM 附加组件add-on是搜索摘要summary的前提def create_engine(project_id, location, engine_name, engine_id, data_store_id): client_options ( ClientOptions(api_endpointf{location}-discoveryengine.googleapis.com) if location ! global else None ) client discoveryengine.EngineServiceClient(client_optionsclient_options) engine discoveryengine.Engine( display_nameengine_name, solution_typediscoveryengine.SolutionType.SOLUTION_TYPE_SEARCH, industry_verticaldiscoveryengine.IndustryVertical.GENERIC, data_store_ids[data_store_id], search_engine_configdiscoveryengine.Engine.SearchEngineConfig( search_tierdiscoveryengine.SearchTier.SEARCH_TIER_ENTERPRISE, search_add_ons[discoveryengine.SearchAddOn.SEARCH_ADD_ON_LLM], ), ) request discoveryengine.CreateEngineRequest( parentclient.collection_path(project_id, location, default_collection), engineengine, engine_idengine.display_name, ) operation client.create_engine(requestrequest) response operation.result(timeout90)调用时可直接复用 Datastore 的命名ENGINE_NAME DATASTORE_NAME ENGINE_ID DATASTORE_ID create_engine(PROJECT_ID, LOCATION, ENGINE_NAME, ENGINE_ID, DATASTORE_ID)第五步查询 Search EngineNotebook 特别提示引擎创建后需要一段时间才能被查询若刚创建即收到404 Engine {ENGINE_NAME} is not found错误请等待几分钟后重试。search_sample函数展示了完整的SearchRequest构造方式其 serving config 资源名为projects/{project_id}/locations/{location}/collections/default_collection/engines/{engine_id}/servingConfigs/default_search搜索请求的关键配置项配置块字段说明ContentSearchSpec.SnippetSpecreturn_snippetTrue返回摘要片段snippetContentSearchSpec.SummarySpecsummary_result_count5生成摘要时参考的结果数量include_citationsTrue摘要附带引用来源ignore_adversarial_queryTrue忽略对抗性/恶意查询ignore_non_summary_seeking_queryTrue忽略不寻求摘要的查询QueryExpansionSpecconditionAUTO自动进行查询扩展SpellCorrectionSpecmodeAUTO自动进行拼写纠正def search_sample(project_id, location, engine_id, search_query): client_options ( ClientOptions(api_endpointf{location}-discoveryengine.googleapis.com) if location ! global else None ) client discoveryengine.SearchServiceClient(client_optionsclient_options) serving_config ( fprojects/{project_id}/locations/{location}/collections/default_collection/ fengines/{engine_id}/servingConfigs/default_search ) content_search_spec discoveryengine.SearchRequest.ContentSearchSpec( snippet_specdiscoveryengine.SearchRequest.ContentSearchSpec.SnippetSpec( return_snippetTrue ), summary_specdiscoveryengine.SearchRequest.ContentSearchSpec.SummarySpec( summary_result_count5, include_citationsTrue, ignore_adversarial_queryTrue, ignore_non_summary_seeking_queryTrue, ), ) request discoveryengine.SearchRequest( serving_configserving_config, querysearch_query, page_size10, content_search_speccontent_search_spec, query_expansion_specdiscoveryengine.SearchRequest.QueryExpansionSpec( conditiondiscoveryengine.SearchRequest.QueryExpansionSpec.Condition.AUTO, ), spell_correction_specdiscoveryengine.SearchRequest.SpellCorrectionSpec( modediscoveryengine.SearchRequest.SpellCorrectionSpec.Mode.AUTO ), ) response client.search(request) return response执行查询并直接打印 LLM 生成的摘要文本query Who is the CEO of Google? response search_sample(PROJECT_ID, LOCATION, ENGINE_ID, query) print(response.summary.summary_text)另外两个 Notebook 教程README 还列出了两个进阶 Notebook当前仓库快照中未包含对应文件以下以其定位描述为准search_data_blending_with_gemini_summarization.ipynb学习如何调用混合数据仓库mixed datastore的搜索应用获取搜索片段snippets并用 Gemini 对响应进行摘要适合需要聚合多源数据并生成总结的场景search_filters_metadata.ipynb学习如何在搜索请求中使用过滤器filters与元数据metadata用于实现细粒度的结果限定例如按类别、日期或自定义字段筛选。Samples 样例工程深入解析Cloud Function把搜索封装成 HTTP APIcloud-function/ 目录提供了用 Google Cloud Functions 访问 Vertex AI Search的完整实现另附 Python 子目录 cloud-function/python 的源码版本支持本地运行以便快速实验迭代。架构三层Vertex AI Search 是托管在 Google Cloud 上的 API → 通过 Google Cloud Function 暴露成自己的 API → 你的自定义应用或 UI 调用该云函数。部署前需收集三个关键值注意区分DATA_STORE_ID是数据仓库 ID 而非应用 IDPROJECT_ID YOUR_PROJECT_ID # 字母数字 LOCATION global # 或其他可用区域 DATA_STORE_ID YOUR_DATA_STORE_ID # 不是 app id字母数字三个核心配置枚举在配置 Vertex AI Search 时需决定并记录数据源类型ENGINE_DATA_TYPEUNSTRUCTURED非结构化、STRUCTURED结构化、WEBSITE网站、BLENDED混合返回的块类型ENGINE_CHUNK_TYPEDOCUMENT_WITH_SNIPPETS文档片段、DOCUMENT_WITH_EXTRACTIVE_SEGMENTS文档抽取式段落、CHUNK块、NONE摘要类型SUMMARY_TYPENONE仅返回结果、VERTEX_AI_SEARCH由 Vertex AI Search 提供的 LLM 附加摘要能力。在 cloud-function/python/main.py 中这些配置以环境变量形式注入并设置了合理的默认值project_id os.getenv(PROJECT_ID, your-project) location os.getenv(LOCATION, global) data_store_id os.getenv(DATA_STORE_ID, your-data-store) engine_data_type os.getenv(ENGINE_DATA_TYPE, UNSTRUCTURED) engine_chunk_type os.getenv(ENGINE_CHUNK_TYPE, CHUNK) summary_type os.getenv(SUMMARY_TYPE, VERTEX_AI_SEARCH)客户端封装vertex_ai_search_client.py 提供了VertexAISearchConfigdataclass 配置对象含枚举合法性校验与默认值回退与VertexAISearchClient搜索客户端。值得关注的两点实现细节_get_serving_config()使用serving_config_path(..., serving_configdefault_config)拼装资源路径与 Notebook 中直接使用default_search字符串的方式互为补充build_search_request()根据engine_chunk_type动态装配SnippetSpec与ExtractiveContentSpecmax_extractive_answer_count1、return_extractive_segment_scoreTrue按summary_type装配SummarySpec实现一份配置、多种检索形态结果解析层_parse_document_result/_parse_chunk_result支持结构化数据、抽取式答案含页码与相关性得分、snippet 片段与 chunk 四种输出并对 HTML 内容做标签剥离与实体反转义_strip_content为下游 LLM 提供干净文本。HTTP 入口vertex_ai_search通过functions_framework.http暴露接受 JSON body 或查询参数中的search_term返回 JSON 结果并内置 CORS预检缓存 3600 秒与统一错误响应处理。推荐的应用场景RAG / Grounding当源数据超过 LLM 上下文窗口容量时检索质量直接决定生成质量——先检索相关结果及其文本块snippet 或 segment再由 Gemini 基于检索结果生成有依据的答案或摘要Agent 工具知识库无论是简单的聊天机器人还是多智能体系统基于搜索的 RAG 都是刚需搜索质量越高基于源数据的 Agent 回答越可靠。Web App可部署的搜索演示应用web-app/ 是一个基于 Flask Cloud Run 的演示应用展示如何对文档语料库进行搜索并额外演示通过 Enterprise Knowledge Graph API 检索公开 Cloud Knowledge Graph。其依赖的 Google Cloud 产品包括 Vertex AI Search含 Recommendations、Cloud Run 与 Enterprise Knowledge Graph。环境准备完整步骤见 web-app/README.mdpip install -r requirements.txt gcloud init # 创建新项目并启用计费 gcloud services enable discoveryengine.googleapis.com gcloud services enable enterpriseknowledgegraph.googleapis.com gcloud services enable run.googleapis.com gcloud auth application-default login # 为 Cloud Run 服务账号授予发现引擎只读权限 gcloud projects add-iam-policy-binding [PROJECT_ID or PROJECT_NUMBER] \ --memberserviceAccount:[PROJECT_NUMBER]-computedeveloper.gserviceaccount.com \ --roleroles/discoveryengine.viewer配置与部署四步在consts.py中填入自己的PROJECT_ID与LOCATION配置搜索若用预置 widget从 Cloud Console 的Integration Widget页复制configId填入WIDGET_CONFIGS注意将授权类型设为Public Access并把部署后的应用域名加入Allowed Domains若用自定义 UI把引擎 ID即 Cloud Console URL 中/engines/后的字符串如website-search-engine_1681248733152填入CUSTOM_UI_ENGINE_IDS配置推荐Recommendations把推荐引擎的 datastore id 与 engine id 填入RECOMMENDATIONS_DATASTORE_IDs配置图片搜索可选需先启用 Advanced Website Indexing 并完成域名验证再把引擎 ID 填入IMAGE_SEARCH_DATASTORE_IDs。部署与本地联调gcloud run deploy vertex-ai-search-demo --source . flask --app main run # 本地测试VAIS Building Blocks功能积木式 Notebook 集合vais-building-blocks/ 的定位介于单次 API 调用与完整应用之间——每一个 Notebook 都是一个可组合的积木用于实现更高层级的目标例如以元数据方式摄取非结构化文档并基于其生成准确答案。该目录刻意优先使用 REST API以降低理解门槛。7 个 Notebook 分别演示ingesting_unstructured_documents_with_metadata.ipynb带元数据摄取非结构化文档parsing_and_chunking_with_BYO.ipynbBYO自带解析器的解析与分块能力custom_attributes_by_url_pattern.ipynb基于 URL 模式定义网站数据仓库的自定义属性query_level_boosting_filtering_and_facets.ipynb查询级加权、过滤与分面Facetsinline_ingestion_of_documents.ipynb文档的内联摄取manual_recrawl_urls_with_trigger.ipynb基于事件触发高级网站数据仓库的手动重新爬取record_user_events.ipynb记录数据仓库中的实时用户事件。检索质量增强Embeddings、Ranking 与调优custom-embeddings/custom_embeddings.ipynb学习如何为 Vertex AI Search 使用自定义 Embeddings在默认语义向量之外注入符合业务语义的向量表征custom-ranking/clearbox.ipynb学习如何使用自定义排序Custom Ranking按业务规则重排搜索结果ranking-api/ranking_api_beir_evaluation.ipynb使用 Ranking API并基于 BEIR 基准评估排序质量tuning/vertexai-search-tuning.ipynb学习如何对 Vertex AI Search 进行调优优化相关性表现。Vertex AI Search Options理解可用选项vertexai-search-options/ 帮助你了解 Vertex AI Search 提供的不同选项与形态包含 vertexai_search_options.ipynb选项总览与 vertex_ai_search_website_summary.ipynb网站数据仓库的摘要能力演示配合上文展示的search_options.png界面截图食用更佳。Gemini Enterprise 与自动 RAG 评测gemini-enterprise/展示如何将 Gemini Enterprise 与 Vertex AI Search 结合内含intro_gemini_enterprise.ipynb、gemini_enterprise_eval.ipynb、gemini_enterprise_session.ipynb、gemini_enterprise_prompt_management.ipynb、mcp_with_gemini_enterprise.ipynb、oss_model_with_gemini_enterprise.ipynb等 Notebook以及 ge-demo-generator演示生成器、ge-migration-agent迁移 Agent和 group-licensingGo 实现的企业许可同步服务等工程目录auto-rag-eval/这是一个自动化的 RAG 评测基准生成工具利用 Vertex AI Agent Platform 与 Gemini 模型从文档语料生成高质量的问答对缓解人工构建基准耗时数周、覆盖不全的问题。其快速开始只需几条命令pip install -r requirements.txt gcloud storage cp gs://github-repo/search/auto-rag-eval/qa_profiles.json . # 编辑 .envPROJECT_ID / LOCATION / DATA_STORE_ID gcloud auth application-default login python main.py --docs 2 --chunks 2 --clues 2 --profiles 2main.py的核心参数包括--docs处理的文档数默认 2、--chunks每文档块数默认 2、--clues每块线索数默认 2、--profiles每条线索的问答画像数默认 2、--chunks-to-merge合并块数默认 3、--llm-model默认gemini-3.5-flash、--top-k-chunks上下文检索 top-k默认 3等。生成结果可通过transform_benchmark.py转换为 ADK 评测框架格式{query, expected_tool_use, reference}。其流水线包含文档选择 → 块处理 → 线索生成 → 上下文检索与蒸馏 → 问答画像与问答生成 → 多 Agent 评审3 个 AI 评审者共识决策→ 增量保存等多个阶段并强调生成结果仍需领域专家人工校验后再用于生产评测。从入门到生产一条完整的选型路径结合上述资源可以归纳出三条递进的落地路径快速起步验证可行性跟随 create_datastore_and_search.ipynb 完成建仓库 → 导文档 → 建引擎 → 查询摘要全流程确认 Vertex AI Search 对你的语料是否有效功能深化打磨检索质量通过 VAIS Building Blocks 系列 Notebook 补齐元数据、分块、自定义属性、加权过滤分面、内联摄取、事件记录等能力再按需引入自定义 Embeddings、自定义 Ranking 或 Ranking API并用vertexai-search-tuning.ipynb调优相关性需要 LLM 摘要与混合数据源时参考两个进阶 Notebook 所述的能力当前仓库快照未包含文件生产封装对外提供能力用 cloud-function/python 把搜索封装为 HTTP API含枚举校验、结果清洗、CORS用 web-app/ 快速搭建带预置 Widget / 自定义 UI / 推荐 / 图片搜索的完整应用并部署到 Cloud Run最后用 auto-rag-eval 自动生成评测基准来持续度量检索与生成质量。结语search/目录是围绕 Vertex AI Search 构建的一套层次分明的学习与工程资源Notebooks 侧重可跟随的入门路径Samples 则覆盖云函数封装、Web 部署、检索增强、评测基准等生产关键环节。无论你是第一次接触企业级语义搜索还是正在为 Agent 或 RAG 系统搭建知识库检索层都可以从本文梳理的资源地图中找到对应的起点并借助仓库源码与测试深入理解其实现原理。【免费下载链接】generative-aiSample code and notebooks for Generative AI on Google Cloud, with Gemini Enterprise Agent Platform项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表