Google Vertex AI Search(前称Generative AI App Builder上的Enterprise Search)是Google Cloud提供的 Vertex AI 机器学习平台的一部分。Vertex AI Search让企业能够快速为客户和员工构建由生成式 AI 驱动的搜索引擎。它由多种Google Search技术提供支持,包括语义搜索——通过使用自然语言处理和机器学习技术推断内容中的关系以及用户查询意图,从而比传统关键词搜索技术提供更相关的结果。Vertex AI Search 还受益于 Google 在理解用户搜索方式和内容相关性排序方面的专业知识。
本 notebook 演示如何配置Vertex AI Search可通过Google Cloud Console以及 API 访问,以用于企业工作流集成。
Vertex AI Search 并使用 Vertex AI Search 检索器。Vertex AI Search 检索器封装了 Python 客户端库,并使用它访问搜索服务 API。
有关 VertexAISearchRetriever 所有特性和配置的详细文档,请访问 API 参考。
集成详情
设置
安装
你需要安装langchain-google-community 和 google-cloud-discoveryengine 包来使用 Vertex AI Search 检索器。
配置对 Google Cloud 和 Vertex AI Search 的访问
Vertex AI Search 自 2023 年 8 月起已全面开放,无需白名单。 使用检索器之前,需完成以下步骤:创建搜索引擎并填充非结构化数据存储
- 按照 Vertex AI Search 入门指南中的说明设置 Google Cloud 项目和 Vertex AI Search。
- 使用 Google Cloud Console 创建非结构化数据存储
- 使用来自
gs://cloud-samples-data/gen-app-builder/search/alphabet-investor-pdfsCloud Storage 文件夹的示例 PDF 文档填充它。 - 确保使用
Cloud Storage(无元数据)选项。
- 使用来自
设置访问 Vertex AI Search API 的凭证
Vertex AI Search 检索器使用的 Vertex AI Search 客户端库为以编程方式向 Google Cloud 进行身份验证提供了高级语言支持。 客户端库支持应用默认凭证(ADC);库会在一组定义的位置查找凭证,并使用这些凭证对 API 请求进行身份验证。 通过 ADC,无需修改应用代码,即可在各种环境(如本地开发或生产环境)中为应用提供凭证。 如果在 Google Colab 中运行,请使用google.colab.google.auth 进行身份验证;否则请遵循其中一种支持的方法,确保正确设置应用默认凭证。
配置并使用 Vertex AI Search 检索器
Vertex AI Search 检索器在langchain_google_community.VertexAISearchRetriever 类中实现。get_relevant_documents 方法返回 langchain.schema.Document 文档列表,其中每个文档的 page_content 字段填充了文档内容。
根据 Vertex AI Search 中使用的数据类型(网站、结构化或非结构化),page_content 字段的填充方式如下:
- 启用高级索引的网站:与查询匹配的
extractive answer(提取式答案)。metadata字段填充了提取片段或答案所来源文档的元数据(如有)。 - 非结构化数据源:与查询匹配的
extractive segment(提取式片段)或extractive answer(提取式答案)。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 Search 数据类型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 获取实时答案。

