Skip to main content

Google Cloud Enterprise Search

Google Cloud Enterprise Search是Google Cloud提供的生成AI应用构建器套件中的一部分工具。

生成AI应用构建器允许开发人员,即使是那些具有有限机器学习技能的开发人员,快速轻松地利用Google的基础模型、搜索专业知识和对话式AI技术的强大功能,创建企业级生成AI应用程序。

企业搜索允许组织快速构建为客户和员工提供支持的生成AI搜索引擎。企业搜索基于各种Google搜索技术,包括语义搜索,通过使用自然语言处理和机器学习技术推断内容中的关系和用户查询输入的意图,帮助提供比传统基于关键字的搜索技术更相关的结果。企业搜索还从Google在理解用户搜索和考虑内容相关性方面的专业知识中受益。

Google Cloud通过Google Cloud控制台中的Gen App Builder和用于企业工作流集成的API提供企业搜索。

本笔记本演示了如何配置企业搜索并使用企业搜索检索器。企业搜索检索器封装了生成AI应用构建器Python客户端库,并使用它来访问企业搜索Search Service API

安装先决条件

您需要安装google-cloud-discoveryengine包才能使用企业搜索检索器。

pip install google-cloud-discoveryengine

配置访问Google Cloud和Google Cloud企业搜索

自2023年6月6日起,企业搜索已经对允许名单(这意味着客户需要获得访问权限)提供一般可用性。请联系您的Google Cloud销售团队获取访问和定价详细信息。我们正在预览即将推出的其他功能,这些功能将作为我们的Trusted Tester计划的一部分提供。请注册Trusted Tester并联系您的Google Cloud销售团队以获得加速试用。

在运行此笔记本之前,您需要执行以下操作:

  • 设置或创建Google Cloud项目并启用Gen App Builder
  • 创建并填充一个非结构化数据存储
  • 设置访问Enterprise Search API的凭据

设置或创建Google Cloud项目并启用Gen App Builder

请按照企业搜索入门指南中的说明设置/创建GCP项目并启用Gen App Builder。

创建并填充一个非结构化数据存储

使用Google Cloud控制台创建非结构化数据存储,并使用来自gs://cloud-samples-data/gen-app-builder/search/alphabet-investor-pdfs Cloud Storage文件夹的示例PDF文档填充它。确保使用Cloud Storage(不带元数据)选项。

设置访问企业搜索API的凭据

企业搜索检索器使用的生成AI应用构建器客户端库提供了对Gen App Builder进行编程身份验证的高级语言支持。客户端库支持应用程序默认凭据(ADC);这些库在一组定义的位置查找凭据,并使用这些凭据对请求进行身份验证。使用ADC,您可以在各种环境中(如本地开发或生产环境)使凭据可用于您的应用程序,而无需修改应用程序代码。

如果在Google Colab中运行,请使用google.colab.google.auth进行身份验证;否则,请按照支持的方法之一确保正确设置应用程序默认凭据。

import sys

if "google.colab" in sys.modules:
from google.colab import auth as google_auth

google_auth.authenticate_user()

配置和使用企业搜索检索器

企业搜索检索器实现在langchain.retriever.GoogleCloudEntepriseSearchRetriever类中。get_relevan_documents方法返回一个langchain.schema.Document文档列表,其中每个文档的page_content字段填充了与查询匹配的提取段提取答案metadata字段填充了从提取段或答案中提取的文档的元数据(如果有)。

提取答案是直接从原始文档中提取的逐字文本,每个搜索结果都会返回一个提取答案。提取答案通常显示在网页的顶部附近,为最终用户提供与其查询相关的简要答案。提取答案适用于网站和非结构化搜索。

提取段是直接从原始文档中提取的逐字文本,每个搜索结果都会返回一个提取段。提取段通常比提取答案更详细。提取段可以作为查询的答案显示,并可用于执行后处理任务以及作为大型语言模型生成答案或新文本的输入。提取段适用于非结构化搜索。

有关提取段和提取答案的更多信息,请参阅产品文档

在创建检索器实例时,您可以指定一些参数,用于控制访问哪个企业数据存储和如何处理自然语言查询,包括提取答案和段的配置。

强制参数包括:

  • project_id - 您的Google Cloud PROJECT_ID
  • search_engine_id - 您要使用的数据存储的ID。

可以通过检索器的构造函数显式提供project_idsearch_engine_id参数,也可以通过环境变量PROJECT_IDSEARCH_ENGINE_ID提供。

您还可以配置一些可选参数,包括:

  • max_documents - 用于提供提取段或提取答案的最大文档数
  • get_extractive_answers - 默认情况下,检索器配置为返回提取段。将此字段设置为True以返回提取答案
  • max_extractive_answer_count - 每个搜索结果返回的提取答案的最大数量。最多返回5个答案
  • max_extractive_segment_count - 每个搜索结果返回的提取段的最大数量。目前将返回一个段
  • filter - 允许您根据与搜索数据存储中的文档关联的元数据筛选搜索结果的筛选器表达式。
  • query_expansion_condition - 用于确定何时发生查询扩展的规范。 0 - 未指定查询扩展条件。在这种情况下,服务器行为默认为禁用。 1 - 禁用查询扩展。仅使用精确搜索查询,即使SearchResponse.total_size为零。 2 - 由Search API构建的自动查询扩展。

配置和使用带有提取段的检索器

from langchain.retrievers import GoogleCloudEnterpriseSearchRetriever

PROJECT_ID = "<YOUR PROJECT ID>" # 设置为您的项目ID
SEARCH_ENGINE_ID = "<YOUR SEARCH ENGINE ID>" # 设置为您的数据存储ID
retriever = GoogleCloudEnterpriseSearchRetriever(
project_id=PROJECT_ID,
search_engine_id=SEARCH_ENGINE_ID,
max_documents=3,
)
query = "What are Alphabet's Other Bets?"

result = retriever.get_relevant_documents(query)
for doc in result:
print(doc)

配置和使用带有提取答案的检索器

retriever = GoogleCloudEnterpriseSearchRetriever(
project_id=PROJECT_ID,
search_engine_id=SEARCH_ENGINE_ID,
max_documents=3,
max_extractive_answer_count=3,
get_extractive_answers=True,
)
query = "What are Alphabet's Other Bets?"

result = retriever.get_relevant_documents(query)
for doc in result:
print(doc)
}