Knowledge Catalog (anteriormente, Dataplex Universal Catalog) administra los metadatos de los recursos de datos en toda la organización. Estos metadatos proporcionan el contexto que los agentes usan para descubrir, comprender y consultar los datos necesarios para responder las preguntas de los usuarios.
Si bien Knowledge Catalog administra los recursos, hace un seguimiento de los esquemas técnicos y genera descripciones y perfiles de datos automáticamente, el valioso contexto comercial suele residir en otras ubicaciones, como las siguientes:
- Documentos internos y wikis
- Repositorios de código
- Canales de comunicación, como Google Chat y Slack
Puedes compilar agentes de IA para extraer contexto de estas fuentes y enriquecer continuamente tus metadatos a gran escala. En este instructivo, se usa código de muestra del repositorio dataplex-labs para mostrarte cómo compilar un agente que haga lo siguiente:
- Extrae contexto: Extrae contexto empresarial de bases de conocimiento, documentos, código o chats para enriquecer los metadatos técnicos.
- Generar documentación: Genera documentación para las tablas de BigQuery en función del contexto extraído y otras fuentes de información.
- Mejora la búsqueda y el descubrimiento: Publica la documentación generada en Knowledge Catalog, lo que facilita la búsqueda y la comprensión de las entradas.
Antes de comenzar
Para ejecutar el agente de enriquecimiento de Knowledge Catalog, debes cumplir con los siguientes requisitos:
Roles obligatorios
Para obtener los permisos que necesitas para usar el agente de enriquecimiento, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu Google Cloud proyecto iam.gserviceaccount.com:
-
Para administrar recursos de muestra de BigQuery, necesitas el rol de Editor de datos de BigQuery (
roles/bigquery.dataEditor). -
Para buscar metadatos del catálogo, haz lo siguiente:
Visualizador de Dataplex (
roles/dataplex.viewer) -
Para administrar los metadatos del catálogo, usa el editor del catálogo de Dataplex (
roles/dataplex.catalogEditor). -
Para acceder a las funciones de Vertex AI (APIs de LLM de Gemini), necesitas el rol de Usuario de Vertex AI (
roles/aiplatform.user). -
Para consumir APIs de servicios:
Consumidor de Service Usage (
roles/serviceusage.serviceUsageConsumer)
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Estos roles predefinidos contienen los permisos necesarios para usar el agente de enriquecimiento. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para usar el agente de enriquecimiento:
-
bigquery.projects.get/createDatasets -
dataplex.projects.search -
dataplex.entryGroups.get/updateEntries -
aiplatform.endpoints.predict -
serviceusage.services.use
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Habilita las APIs
Para usar el agente de enriquecimiento de Knowledge Catalog, habilita las siguientes APIs en tu proyecto:
- API de BigQuery
- API de Knowledge Catalog
- La API de Vertex AI
- API de Service Usage
Roles necesarios para habilitar las APIs
Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin), que contiene el permiso serviceusage.services.enable. Obtén más información para otorgar roles.
Instala dependencias
Necesitas los siguientes paquetes y herramientas de Python para ejecutar la muestra:
google-adk(Kit de desarrollo de agentes [ADK])google-cloud-dataplexCliente de Python de Knowledge Cataloggoogle-authadministra las credenciales predeterminadas de la aplicaciónmcp[cli]para compilar un servidor de MCP de muestragcloudpara la autenticación y la configuración. Para instalar Google Cloud CLI, consulta la documentación del SDK de Google Cloud.
Configura el entorno
Configura
gcloudy accede:gcloud auth application-default login gcloud config set core/project PROJECT_IDReemplaza lo siguiente:
PROJECT_IDcon el ID de tu proyecto
Clona el repositorio de
dataplex-labsy navega al directorio del código fuente de muestra:git clone https://github.com/GoogleCloudPlatform/dataplex-labs.git cd dataplex-labs/knowledge_catalog_enrichment_agent/srcPara instalar las dependencias, usa la secuencia de comandos proporcionada que configura un entorno virtual de Python y las variables de entorno necesarias:
source env.sh --installPara crear un conjunto de datos de BigQuery de muestra llamado
kc_sample_analyticsen la regiónusde tu proyecto de Cloud, ejecuta la secuencia de comandoscreate_data.py:python3 ../sample/data/create_data.pyLa muestra también incluye varios documentos en el directorio
sample/docs. Estos documentos forman una base de conocimiento local. El agente de enriquecimiento usa esta base de conocimiento para extraer información y producir documentación.
Descargar metadatos
Comienza por ejecutar la herramienta de descarga para extraer una instantánea de metadatos de Knowledge Catalog para el conjunto de datos de BigQuery y sus tablas. Esto crea artefactos de metadatos locales.
El argumento --dir especifica el directorio en el que se escriben los archivos de metadatos.
python3 -m enrichment.download \
--dir ../sample/metadata.initial \
--dataset ${KC_ENRICH_SAMPLE_PROJECT}.kc_sample_analytics
La secuencia de comandos crea un archivo Markdown por tabla en el directorio sample/metadata con la siguiente convención de nomenclatura: <project_id>.<dataset_id>.<table_id>.md.
Enriquece los metadatos
Después de crear los archivos Markdown locales, ejecuta el agente de enriquecimiento. El agente itera sobre cada archivo, busca información relevante para las tablas y resume los hallazgos junto con las citas para generar archivos Markdown actualizados.
--dir: Especifica el directorio que contiene los archivos de metadatos locales.--output-dir: Especifica el directorio de destino para los archivos de metadatos actualizados.--config-dir: Especifica el directorio que contiene las instrucciones del agente, las herramientas de MCP y las habilidades.
python3 -m enrichment.enrich \
--dir ../sample/metadata.initial \
--output-dir ../sample/metadata.new \
--config-dir ../sample/config
Revisa los metadatos
Los archivos de metadatos enriquecidos contienen la documentación producida por el agente. Revisa y modifica los archivos según sea necesario antes de publicar los cambios en Knowledge Catalog.
git diff --no-index ../sample/metadata.initial ../sample/metadata.new
Publica los metadatos
Ejecuta la herramienta de publicación para implementar los metadatos enriquecidos en Knowledge Catalog.
python3 -m src.enrichment.publish --dir ../sample/metadata.new
Personaliza la configuración para tus datos
En el paso anterior, usaste el argumento --config-dir para dirigir el agente al directorio ../sample/config para su configuración. Así es como el agente sabe dónde encontrar información y cómo interactuar con diferentes fuentes.
La muestra incluye una configuración predeterminada que le indica al agente que use un servidor de MCP local para acceder a los archivos de la base de conocimiento local (sample/docs). Para aplicar este flujo de trabajo en tu entorno, puedes personalizar estos archivos de configuración para conectar el agente a tus wikis internos, repositorios de código, Google Drive o cualquier otro sistema.
El directorio sample/config/ contiene los siguientes archivos:
sample/config/
├─ instructions.md
├─ mcp.json
└─ skills/
└─ kb-search/
└─ SKILL.md
instructions.md: Aumenta las instrucciones básicas del agente con detalles relevantes para tu organización, como indicarle que busque en una base de conocimiento específica.mcp.json: Configura los servidores de MCP que el agente puede usar para acceder a las herramientas de tus fuentes de información, como una herramienta para leer archivos de un directorio local.SKILL.md: Describe cómo el agente debe usar herramientas específicas para interactuar con una fuente de información, como usarlist_contents,read_fileysearch_contentpara encontrar información en documentos locales.
Explora el código de muestra de Knowledge Catalog
Las herramientas download y publish de la sección del flujo de enriquecimiento usan las APIs de Knowledge Catalog para leer y escribir metadatos.
En esta sección, se explica cómo funcionan estas APIs para que puedas adaptar la muestra a tus propias integraciones.
Cómo buscar y recuperar metadatos
En la muestra, se usan las siguientes APIs para buscar y recuperar metadatos:
SearchEntriespara recuperar la entrada y los metadatos de ubicación del conjunto de datosListEntriespara enumerar las tablas de BigQuery dentro de un EntryGroup del catálogo.GetEntrypara recuperar los metadatos específicos de cada tabla de BigQuery
En el siguiente código, se muestra cómo buscar un conjunto de datos para ubicar su grupo de entrada, enumerar todas las tablas que contiene y recuperar sus metadatos específicos:
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]
)
)
Actualizar metadatos de tablas
En el siguiente código, se muestra cómo publicar la documentación generada en el aspecto de resumen de una tabla y actualizar sus metadatos:
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],
)
)
¿Qué sigue?
- Obtén más información para trabajar con metadatos.
- Usa Gemini CLI para probar tu contexto de datos.
- Obtén más información para administrar aspectos y enriquecer metadatos.
- Explora otras clases y métodos disponibles en la biblioteca cliente de Knowledge Catalog para Python.
- Prueba otros casos de uso de Knowledge Catalog.