O Knowledge Catalog (antigo Dataplex Universal Catalog) gerencia metadados de recursos de dados em toda a organização. Esses metadados fornecem o contexto que os agentes usam para descobrir, entender e consultar os dados necessários para responder às perguntas dos usuários.
Embora o Knowledge Catalog gerencie recursos, rastreie esquemas técnicos e gere descrições e perfis de dados automaticamente, o contexto comercial valioso geralmente reside em outros locais, como:
- Documentos e wikis internos
- Repositórios de código
- Canais de comunicação, como o Google Chat e o Slack
É possível criar agentes de IA para extrair contexto dessas fontes e enriquecer continuamente seus metadados em escala. Este tutorial usa um exemplo de código do dataplex-labs repositório para mostrar como criar um agente que faz o seguinte:
- Extrair contexto:extrai o contexto comercial de bases de conhecimento, documentos, códigos ou chats para enriquecer metadados técnicos.
- Gerar documentação:gera documentação para tabelas do BigQuery com base no contexto extraído e em outras fontes de informação.
- Melhorar a pesquisa e a descoberta:publica a documentação gerada no Knowledge Catalog, facilitando a localização e a compreensão das entradas por meio da pesquisa.
Antes de começar
Para executar o agente de enriquecimento do Knowledge Catalog, é necessário atender aos seguintes requisitos:
Funções exigidas
Para receber as permissões necessárias a fim de usar o agente de enriquecimento, peça que o administrador conceda a você os seguintes papéis do IAM no Google Cloud projeto iam.gserviceaccount.com:
-
Para gerenciar exemplos de recursos do BigQuery:
Editor de dados do BigQuery (
roles/bigquery.dataEditor) -
Para pesquisar metadados do catálogo:
Leitor do Dataplex (
roles/dataplex.viewer) -
Para gerenciar metadados do catálogo:
Editor de catálogo do Dataplex (
roles/dataplex.catalogEditor) -
Para acessar os recursos da Vertex AI (APIs LLM do Gemini):
Usuário da Vertex AI (
roles/aiplatform.user) -
Para consumir APIs de serviço:
Consumidor do Service Usage (
roles/serviceusage.serviceUsageConsumer)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esses papéis predefinidos contêm as permissões necessárias para usar o agente de enriquecimento. Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As permissões a seguir são necessárias para usar o agente de enriquecimento:
-
bigquery.projects.get/createDatasets -
dataplex.projects.search -
dataplex.entryGroups.get/updateEntries -
aiplatform.endpoints.predict -
serviceusage.services.use
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Ativar APIs
Para usar o agente de enriquecimento do Knowledge Catalog, ative as seguintes APIs no seu projeto:
- API BigQuery
- API Knowledge Catalog
- API Vertex AI
- API Service Usage
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (roles/serviceusage.serviceUsageAdmin), que contém a permissão serviceusage.services.enable. Saiba como conceder
papéis.
Instalar dependências
Você precisa dos seguintes pacotes e ferramentas do Python para executar o exemplo:
google-adk(Kit de Desenvolvimento de Agente, ADK)google-cloud-dataplexBiblioteca de cliente Python do Knowledge Cataloggoogle-authgerencia o Application Default Credentialsmcp[cli]para criar um exemplo de servidor MCPgcloudpara autenticação e configuração. Para instalar a Google Cloud CLI, consulte a documentação do SDK Google Cloud.
Configurar o ambiente
Configure
gcloude faça login:gcloud auth application-default login gcloud config set core/project PROJECT_IDSubstitua:
PROJECT_IDpelo ID do projeto
Clone o repositório
dataplex-labse navegue até o diretório de origem de amostra:git clone https://github.com/GoogleCloudPlatform/dataplex-labs.git cd dataplex-labs/knowledge_catalog_enrichment_agent/srcPara instalar dependências, use o script fornecido que configura um ambiente virtual Python e as variáveis de ambiente necessárias:
source env.sh --installPara criar um exemplo de conjunto de dados do BigQuery chamado
kc_sample_analyticsna regiãousdo projeto na nuvem, execute o scriptcreate_data.py:python3 ../sample/data/create_data.pyO exemplo também inclui vários documentos no diretório
sample/docs. Esses documentos formam uma base de conhecimento local. O agente de enriquecimento usa essa base de conhecimento para extrair informações e produzir documentação.
Fazer download dos metadados
Comece executando a ferramenta de download para extrair um snapshot de metadados do Knowledge Catalog para o conjunto de dados do BigQuery e as tabelas dele. Isso cria artefatos de metadados locais.
O argumento --dir especifica o diretório em que os arquivos de metadados são gravados.
python3 -m enrichment.download \
--dir ../sample/metadata.initial \
--dataset ${KC_ENRICH_SAMPLE_PROJECT}.kc_sample_analytics
O script cria um arquivo Markdown por tabela no diretório sample/metadata usando a seguinte convenção de nomenclatura: <project_id>.<dataset_id>.<table_id>.md.
Enriquecer os metadados
Depois de criar os arquivos Markdown locais, execute o agente de enriquecimento. O agente itera em cada arquivo, encontra informações relevantes para as tabelas e resume as descobertas com citações para gerar arquivos Markdown atualizados.
--dir: especifica o diretório que contém os arquivos de metadados locais.--output-dir: especifica o diretório de destino para os arquivos de metadados atualizados.--config-dir: especifica o diretório que contém instruções do agente, ferramentas e habilidades do MCP.
python3 -m enrichment.enrich \
--dir ../sample/metadata.initial \
--output-dir ../sample/metadata.new \
--config-dir ../sample/config
Analisar os metadados
Os arquivos de metadados enriquecidos contêm a documentação produzida pelo agente. Analise e modifique os arquivos conforme necessário antes de publicar as mudanças no Knowledge Catalog.
git diff --no-index ../sample/metadata.initial ../sample/metadata.new
Publicar os metadados
Execute a ferramenta de publicação para implantar os metadados enriquecidos no Knowledge Catalog.
python3 -m src.enrichment.publish --dir ../sample/metadata.new
Personalizar para seus dados
Na etapa anterior, você usou o argumento --config-dir para direcionar o agente ao diretório ../sample/config para a configuração. É assim que o agente sabe onde encontrar informações e como interagir com diferentes fontes.
O exemplo vem com uma configuração padrão que instrui o agente a usar um servidor MCP local para acessar arquivos na base de conhecimento local (sample/docs). Para aplicar esse fluxo de trabalho no seu ambiente, personalize esses arquivos de configuração para conectar o agente aos wikis internos, repositórios de código, Google Drive ou outros sistemas.
O diretório sample/config/ contém os seguintes arquivos:
sample/config/
├─ instructions.md
├─ mcp.json
└─ skills/
└─ kb-search/
└─ SKILL.md
instructions.md: aumenta as instruções de linha de base do agente com detalhes relevantes para sua organização, como instruir a pesquisa em uma base de conhecimento específica.mcp.json: configura servidores MCP que o agente pode usar para acessar ferramentas para suas fontes de informação, como uma ferramenta para ler arquivos de um diretório local.SKILL.md: descreve como o agente deve usar ferramentas específicas para interagir com uma fonte de informação, como usarlist_contents,read_fileesearch_contentpara encontrar informações em documentos locais.
Conferir o exemplo de código do Knowledge Catalog
As ferramentas download e publish na seção de fluxo de enriquecimento usam APIs do Knowledge Catalog para ler e gravar metadados.
Esta seção aborda como essas APIs funcionam para que você possa adaptar o exemplo às suas próprias integrações.
Pesquisar e recuperar metadados
O exemplo usa as seguintes APIs para pesquisar e recuperar metadados:
SearchEntriespara recuperar os metadados de entrada e metadados de local do conjunto de dados.ListEntriespara enumerar tabelas do BigQuery em um EntryGroup do catálogo.GetEntrypara buscar os metadados específicos de cada tabela do BigQuery.
O código a seguir mostra como pesquisar um conjunto de dados para localizar o grupo de entradas, listar todas as tabelas contidas e recuperar os metadados específicos delas:
import google.cloud.dataplex_v1 as dataplex
BIGQUERY_TABLE_TYPE = "projects/dataplex-types/locations/global/entryTypes/bigquery-table"
OVERVIEW_ASPECT_TYPE = "projects/dataplex-types/locations/global/aspectTypes/overview"
catalog = dataplex.CatalogServiceClient()
dataset_reference = '...' # project_id.dataset_id
project_id, dataset_id = dataset_reference.split('.')
# 1. Search for dataset to determine its location
search_response = catalog.search_entries(
request=dataplex.SearchEntriesRequest(
name=f"projects/{project_id}/locations/global",
query=f"type=dataset name={dataset_id}",
page_size=1
)
)
dataset_entry = search_response.results[0].dataplex_entry
location_id = dataset_entry.entry_source.location
# 2. List resources in the underlying group
entry_group_name = f"projects/{project_id}/locations/{location_id}/entryGroups/@bigquery"
entry_filter = f'parent_entry="{dataset_entry.name}"'
list_response = catalog.list_entries(
request=dataplex.ListEntriesRequest(
parent=entry_group_name,
entry_filter=entry_filter,
)
)
# 3. Retrieve metadata for each table in the list
for table_entry in list_response.entries:
entry = catalog.get_entry(
request=dataplex.GetEntryRequest(
name=table_entry.name,
view="CUSTOM",
aspect_types=[OVERVIEW_ASPECT_TYPE]
)
)
Atualizar metadados de tabela
O código a seguir mostra como publicar a documentação gerada no aspecto de visão geral de uma tabela e atualizar os metadados dela:
import google.cloud.dataplex_v1 as dataplex
import google.protobuf.field_mask_pb2 as field_mask_pb2
import google.protobuf.json_format as jsonpb
OVERVIEW_ASPECT_TYPE = "projects/dataplex-types/locations/global/aspectTypes/overview"
OVERVIEW_ASPECT_KEY = "dataplex-types.global.overview"
catalog = dataplex.CatalogServiceClient()
table_reference = "..." # project_id.dataset_id.table_id
project_id, dataset_id, table_id = table_reference.split('.')
entry_data = {
"name": f"bigquery.googleapis.com/projects/{project_id}/datasets/{dataset_id}/tables/{table_id}",
"aspects": {
OVERVIEW_ASPECT_KEY: {
"aspectType": OVERVIEW_ASPECT_TYPE,
"data": {
"content": "...", # content parsed from local markdown file
"contentType": "MARKDOWN"
}
}
}
}
entry = dataplex.Entry()
jsonpb.ParseDict(entry_data, entry._pb)
catalog.update_entry(
request=dataplex.UpdateEntryRequest(
entry=entry,
update_mask=field_mask_pb2.FieldMask(paths=["aspects"]),
aspect_keys=[OVERVIEW_ASPECT_KEY],
)
)
A seguir
- Saiba mais sobre como trabalhar com metadados.
- Use a CLI do Gemini para testar o contexto de dados.
- Saiba como gerenciar aspectos e enriquecer metadados.
- Confira outras classes e métodos disponíveis na biblioteca de cliente do Knowledge Catalog para Python.
- Confira outros casos de uso do Knowledge Catalog.