Knowledge Catalog (이전 명칭: Dataplex Universal Catalog)는 조직 전체의 데이터 애셋에 대한 메타데이터를 관리합니다. 이 메타데이터는 에이전트가 사용자 질문에 답하는 데 필요한 데이터를 검색, 이해, 쿼리하는 데 사용하는 컨텍스트를 제공합니다.
Knowledge Catalog는 리소스를 자동으로 관리하고, 기술 스키마를 추적하고, 설명과 데이터 프로필을 생성하지만, 유용한 비즈니스 컨텍스트는 다음과 같은 다른 위치에 있는 경우가 많습니다.
- 내부 문서 및 위키
- 코드 저장소
- Google Chat 및 Slack과 같은 커뮤니케이션 채널
AI 에이전트를 빌드하여 이러한 소스에서 컨텍스트를 추출하고 메타데이터를 대규모로 지속적으로 보강할 수 있습니다. 이 튜토리얼에서는 dataplex-labs 저장소의 샘플 코드를 사용하여 다음 작업을 실행하는 에이전트를 빌드하는 방법을 보여줍니다.
- 컨텍스트 추출: 기술 메타데이터를 보강하기 위해 기술 자료, 문서, 코드 또는 채팅에서 비즈니스 컨텍스트를 추출합니다.
- 문서 생성: 추출된 컨텍스트 및 기타 정보 소스를 기반으로 BigQuery 테이블의 문서를 생성합니다.
- 검색 및 검색 개선: 생성된 문서를 Knowledge Catalog에 게시하여 검색을 통해 항목을 더 쉽게 찾고 이해할 수 있도록 합니다.
시작하기 전에
Knowledge Catalog 보강 에이전트를 실행하려면 다음 요구사항을 충족해야 합니다.
필요한 역할
보강 에이전트를 사용하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요. Google Cloud iam.gserviceaccount.com
-
샘플 BigQuery 리소스 관리:
BigQuery 데이터 편집자 (
roles/bigquery.dataEditor) -
카탈로그 메타데이터 검색:
Dataplex 뷰어 (
roles/dataplex.viewer) -
카탈로그 메타데이터 관리:
Dataplex 카탈로그 편집자 (
roles/dataplex.catalogEditor) -
Vertex AI 기능 (Gemini LLM API) 액세스:
Vertex AI 사용자 (
roles/aiplatform.user) -
서비스 API 사용:
서비스 사용량 소비자 (
roles/serviceusage.serviceUsageConsumer)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
이러한 사전 정의된 역할에는 보강 에이전트를 사용하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.
필수 권한
보강 에이전트를 사용하려면 다음 권한이 필요합니다.
-
bigquery.projects.get/createDatasets -
dataplex.projects.search -
dataplex.entryGroups.get/updateEntries -
aiplatform.endpoints.predict -
serviceusage.services.use
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
API 사용 설정
Knowledge Catalog 보강 에이전트를 사용하려면 프로젝트에서 다음 API를 사용 설정하세요.
- BigQuery API
- Knowledge Catalog API
- Vertex AI API
- Service Usage API
API 사용 설정에 필요한 역할
API를 사용 설정하려면 serviceusage.services.enable 권한이 포함된 서비스 사용량 관리자 IAM 역할(roles/serviceusage.serviceUsageAdmin)이 필요합니다. 역할 부여 방법
알아보기.
종속 항목 설치
샘플을 실행하려면 다음 Python 패키지 및 도구가 필요합니다.
google-adk(에이전트 개발 키트 (ADK))google-cloud-dataplexKnowledge Catalog Python 클라이언트google-auth애플리케이션 기본 사용자 인증 정보 관리mcp[cli]샘플 MCP 서버 빌드gcloud인증 및 구성 Google Cloud CLI를 설치하려면 Google Cloud SDK 문서를 참고하세요.
환경 설정
gcloud를 구성하고 로그인합니다.gcloud auth application-default login gcloud config set core/project PROJECT_ID다음을 바꿉니다.
PROJECT_ID를 프로젝트의 ID로 바꿉니다.
dataplex-labs저장소를 클론하고 샘플 소스 디렉터리로 이동합니다.git clone https://github.com/GoogleCloudPlatform/dataplex-labs.git cd dataplex-labs/knowledge_catalog_enrichment_agent/src종속 항목을 설치하려면 Python 가상 환경과 필요한 환경 변수를 설정하는 제공된 스크립트를 사용합니다.
source env.sh --install클라우드 프로젝트의
us리전에kc_sample_analytics라는 샘플 BigQuery 데이터 세트를 만들려면create_data.py스크립트를 실행합니다.python3 ../sample/data/create_data.py샘플에는
sample/docs디렉터리에 여러 문서도 포함되어 있습니다. 이러한 문서는 로컬 기술 자료를 구성합니다. 보강 에이전트는 이 기술 자료를 사용하여 정보를 추출하고 문서를 생성합니다.
메타데이터 다운로드
다운로드 도구를 실행하여 BigQuery 데이터 세트 및 테이블의 Knowledge Catalog에서 메타데이터 스냅샷을 추출하는 것으로 시작합니다. 이렇게 하면 로컬 메타데이터 아티팩트가 생성됩니다.
--dir 인수는 메타데이터 파일이 작성되는 디렉터리를 지정합니다.
python3 -m enrichment.download \
--dir ../sample/metadata.initial \
--dataset ${KC_ENRICH_SAMPLE_PROJECT}.kc_sample_analytics
스크립트는 다음 이름 지정 규칙을 사용하여 sample/metadata 디렉터리의 테이블당 하나의 Markdown 파일을 만듭니다. <project_id>.<dataset_id>.<table_id>.md
메타데이터 보강
로컬 Markdown 파일을 만든 후 보강 에이전트를 실행합니다. 에이전트는 각 파일을 반복하고 테이블과 관련된 정보를 찾고 인용과 함께 결과를 요약하여 업데이트된 Markdown 파일을 생성합니다.
--dir: 로컬 메타데이터 파일이 포함된 디렉터리를 지정합니다.--output-dir: 업데이트된 메타데이터 파일의 대상 디렉터리를 지정합니다.--config-dir: 에이전트 안내, MCP 도구, 기술이 포함된 디렉터리를 지정합니다.
python3 -m enrichment.enrich \
--dir ../sample/metadata.initial \
--output-dir ../sample/metadata.new \
--config-dir ../sample/config
메타데이터 검토
보강된 메타데이터 파일에는 에이전트가 생성한 문서가 포함되어 있습니다. Knowledge Catalog에 변경사항을 게시하기 전에 필요에 따라 파일을 검토하고 수정합니다.
git diff --no-index ../sample/metadata.initial ../sample/metadata.new
메타데이터 게시
게시 도구를 실행하여 보강된 메타데이터를 Knowledge Catalog에 배포합니다.
python3 -m src.enrichment.publish --dir ../sample/metadata.new
데이터 맞춤설정
이전 단계에서는 --config-dir 인수를 사용하여 에이전트가 구성에 사용할 ../sample/config 디렉터리를 가리키도록 했습니다. 이것이 에이전트가 정보를 찾을 위치와 다양한 소스와 상호작용하는 방법을 아는 방법입니다.
샘플에는 에이전트가 로컬 MCP 서버를 사용하여 로컬 기술 자료 (sample/docs)의 파일에 액세스하도록 안내하는 기본 구성이 포함되어 있습니다. 환경에서 이 워크플로를 적용하려면 이러한 구성 파일을 맞춤설정하여 에이전트를 내부 위키, 코드 저장소, Google Drive 또는 기타 시스템에 연결하면 됩니다.
sample/config/ 디렉터리에는 다음 파일이 포함되어 있습니다.
sample/config/
├─ instructions.md
├─ mcp.json
└─ skills/
└─ kb-search/
└─ SKILL.md
instructions.md: 특정 기술 자료를 검색하도록 안내하는 등 조직과 관련된 세부정보로 에이전트의 기준 안내를 보강합니다.mcp.json: 에이전트가 로컬 디렉터리에서 파일을 읽는 도구와 같은 정보 소스의 도구에 액세스하는 데 사용할 수 있는 MCP 서버를 구성합니다.SKILL.md: 에이전트가 특정 도구를 사용하여 정보 소스와 상호작용하는 방법을 설명합니다(예:list_contents,read_file,search_content를 사용하여 로컬 문서에서 정보를 찾는 방법).
샘플 Knowledge Catalog 코드 살펴보기
보강 흐름 섹션의 download 및 publish 도구는 Knowledge Catalog API를 사용하여 메타데이터를 읽고 씁니다.
이 섹션에서는 이러한 API가 작동하는 방식을 설명하므로 샘플을 자체 통합에 맞게 조정할 수 있습니다.
메타데이터 검색 및 가져오기
샘플은 다음 API를 사용하여 메타데이터를 검색하고 가져옵니다.
SearchEntries데이터 세트의 항목 및 위치 메타데이터를 가져옵니다.ListEntries카탈로그 EntryGroup 내에서 BigQuery 테이블을 열거합니다.GetEntry각 BigQuery 테이블의 특정 메타데이터를 가져옵니다.
다음 코드는 데이터 세트를 검색하여 항목 그룹을 찾고, 포함된 모든 테이블을 나열하고, 특정 메타데이터를 가져오는 방법을 보여줍니다.
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]
)
)
테이블 메타데이터 업데이트
다음 코드는 생성된 문서를 테이블의 개요 관점에 게시하고 메타데이터를 업데이트하는 방법을 보여줍니다.
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],
)
)
다음 단계
- 메타데이터 작업에 대해 자세히 알아봅니다.
- Gemini CLI를 사용하여 데이터 컨텍스트를 테스트합니다.
- 관점 관리 및 메타데이터 보강에 대해 알아봅니다.
- Python용 Knowledge Catalog 클라이언트 라이브러리에서 사용할 수 있는 다른 클래스와 메서드를 살펴봅니다.
- 다른 Knowledge Catalog 사용 사례를 사용해 봅니다.