Google Vertex AI 搜索(前身为Generative AI App Builder上的Enterprise Search)是Google Cloud提供的 Vertex AI 机器学习平台的一部分。Vertex AI 搜索让组织能够快速为客户和员工构建由生成式 AI 驱动的搜索引擎。它基于多种Google 搜索技术,包括语义搜索,该技术通过使用自然语言处理和机器学习技术来推断内容中的关系以及用户查询输入的意图,从而提供比传统基于关键词的搜索技术更相关的结果。Vertex AI 搜索还受益于 Google 在理解用户搜索方式方面的专业知识,并考虑内容相关性来排序显示的结果。
本笔记本演示了如何配置Vertex AI 搜索可在Google Cloud 控制台中使用,也可通过 API 用于企业工作流集成。
Vertex AI 搜索 并使用 Vertex AI 搜索检索器。Vertex AI 搜索检索器封装了 Python 客户端库,并使用它来访问 搜索服务 API。
有关所有 VertexAISearchRetriever 功能和配置的详细文档,请访问 API 参考。
集成详情
设置
安装
您需要安装langchain-google-community 和 google-cloud-discoveryengine 包才能使用 Vertex AI 搜索检索器。
配置对 Google Cloud 和 Vertex AI 搜索的访问权限
自 2023 年 8 月起,Vertex AI 搜索无需允许名单即可普遍使用。 在使用检索器之前,您需要完成以下步骤:创建搜索引擎并填充非结构化数据存储
- 按照 Vertex AI 搜索入门指南 中的说明设置 Google Cloud 项目和 Vertex AI 搜索。
- 使用 Google Cloud 控制台创建非结构化数据存储
- 使用
gs://cloud-samples-data/gen-app-builder/search/alphabet-investor-pdfsCloud Storage 文件夹中的示例 PDF 文档填充它。 - 确保使用
Cloud Storage (without metadata)选项。
- 使用
设置访问 Vertex AI 搜索 API 的凭据
Vertex AI 搜索检索器使用的 Vertex AI 搜索客户端库 提供了高级语言支持,用于以编程方式向 Google Cloud 进行身份验证。 客户端库支持应用默认凭据 (ADC);这些库会在一组定义的位置中查找凭据,并使用这些凭据向 API 进行身份验证。 使用 ADC,您可以在各种环境(如本地开发或生产环境)中向应用程序提供凭据,而无需修改应用程序代码。 如果在 Google Colab 中运行,请使用google.colab.google.auth 进行身份验证,否则请按照支持的方法之一操作,以确保您的应用默认凭据已正确设置。
配置和使用 Vertex AI 搜索检索器
Vertex AI 搜索检索器在langchain_google_community.VertexAISearchRetriever 类中实现。get_relevant_documents 方法返回一个 langchain.schema.Document 文档列表,其中每个文档的 page_content 字段填充了文档内容。
根据 Vertex AI 搜索中使用的数据类型(网站、结构化或非结构化),page_content 字段的填充方式如下:
- 具有高级索引的网站:与查询匹配的
抽取式答案。metadata字段填充了从中提取片段或答案的文档的元数据(如果有)。 - 非结构化数据源:与查询匹配的
抽取式片段或抽取式答案。metadata字段填充了从中提取片段或答案的文档的元数据(如果有)。 - 结构化数据源:包含从结构化数据源返回的所有字段的字符串 JSON。
metadata字段填充了文档的元数据(如果有)
抽取式答案与抽取式片段
抽取式答案是随每个搜索结果返回的逐字文本。它直接从原始文档中提取。抽取式答案通常显示在网页顶部附近,为最终用户提供与其查询上下文相关的简短答案。抽取式答案可用于网站和非结构化搜索。 抽取式片段是随每个搜索结果返回的逐字文本。抽取式片段通常比抽取式答案更详细。抽取式片段可以显示为查询的答案,可用于执行后处理任务,并作为大型语言模型生成答案或新文本的输入。抽取式片段可用于非结构化搜索。 有关抽取式片段和抽取式答案的更多信息,请参阅产品文档。 注意:抽取式片段需要启用企业版功能。 创建检索器实例时,您可以指定多个参数来控制访问哪个数据存储以及如何处理自然语言查询,包括抽取式答案和片段的配置。必需参数是
project_id- 您的 Google Cloud 项目 ID。location_id- 数据存储的位置。global(默认)useu
search_engine_id- 您要使用的搜索应用的 ID。(混合搜索必需)data_store_id- 您要使用的数据存储的 ID。
project_id、search_engine_id 和 data_store_id 参数可以在检索器的构造函数中显式提供,也可以通过环境变量提供 - PROJECT_ID、SEARCH_ENGINE_ID 和 DATA_STORE_ID。
您还可以配置多个可选参数,包括:
max_documents- 用于提供抽取式片段或抽取式答案的最大文档数get_extractive_answers- 默认情况下,检索器配置为返回抽取式片段。- 将此字段设置为
True以返回抽取式答案。仅当engine_data_type设置为0(非结构化)时使用。
- 将此字段设置为
max_extractive_answer_count- 每个搜索结果中返回的最大抽取式答案数。- 最多返回 5 个答案。仅当
engine_data_type设置为0(非结构化)时使用。
- 最多返回 5 个答案。仅当
max_extractive_segment_count- 每个搜索结果中返回的最大抽取式片段数。- 目前将返回一个片段。仅当
engine_data_type设置为0(非结构化)时使用。
- 目前将返回一个片段。仅当
filter- 基于数据存储中与文档关联的元数据对搜索结果进行过滤的表达式。query_expansion_condition- 确定在何种条件下应进行查询扩展的规范。0- 未指定的查询扩展条件。在这种情况下,服务器行为默认为禁用。1- 禁用查询扩展。仅使用精确的搜索查询,即使 SearchResponse.total_size 为零。2- 由搜索 API 构建的自动查询扩展。
engine_data_type- 定义 Vertex AI 搜索数据类型0- 非结构化数据1- 结构化数据2- 网站数据3- 混合搜索
GoogleCloudEnterpriseSearchRetriever 迁移指南
在以前的版本中,此检索器称为 GoogleCloudEnterpriseSearchRetriever。
要更新到新的检索器,请进行以下更改:
- 更改导入:
from langchain.retrievers import GoogleCloudEnterpriseSearchRetriever->from langchain_google_community import VertexAISearchRetriever。 - 将所有类引用从
GoogleCloudEnterpriseSearchRetriever更改为VertexAISearchRetriever。
实例化
配置和使用用于非结构化数据的检索器(带抽取式片段)
配置和使用用于非结构化数据的检索器(带抽取式答案)
配置和使用用于结构化数据的检索器
配置和使用用于具有高级网站索引的网站数据的检索器
配置和使用用于混合数据的检索器
配置和使用用于多轮搜索的检索器
带后续问题的搜索基于生成式 AI 模型,与常规的非结构化数据搜索不同。用法
遵循上述示例,我们使用invoke 发出单个查询。
API 参考
有关所有VertexAISearchRetriever 功能和配置的详细文档,请访问 API 参考。
将这些文档连接到 Claude、VSCode 等,通过 MCP 获取实时答案。

