AI 에이전트는 추론할 수 있지만 특정 회사에 대한 지식은 전혀 없습니다. 에이전트에게 '1분기 수익이 얼마야?'라고 묻는다고 상상해 보세요. 안내가 없으면 에이전트는 공식 보고서부터 정리되지 않은 테스트 데이터에 이르기까지 데이터베이스에서 '수익'이라는 이름의 수십 개 테이블 중에서 선택할 수 있습니다. 에이전트가 가장 비슷한 이름의 테이블을 선택하면 검증되지 않은 소스를 기반으로 그럴듯하지만 잘못된 답변을 반환할 수 있습니다.
메타데이터 보강은 이 컨텍스트 문제를 해결하는 방법입니다. 이 튜토리얼에서는 이 컨텍스트를 제공하는 관점을 설정하고 Gemini CLI를 사용하여 데이터 컨텍스트를 테스트하고 에이전트가 신뢰할 수 있는 인증된 데이터에 답변을 정확하게 기반으로 할 수 있는지 확인합니다.
목표
- 테스트를 위한 실제 데이터 레이크를 만듭니다.
- Knowledge Catalog 관점을 사용하여 '골드' 데이터에 라벨을 지정하고 테스트 데이터와 구분합니다.
- Gemini CLI를 사용하여 로컬에서 데이터 컨텍스트를 테스트합니다.
시작하기 전에
시작하기 전에 다음 작업을 실행하세요.
- 이 튜토리얼의 Google Cloud 프로젝트를 선택합니다.
- 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.
이 튜토리얼을 완료하려면 BigQuery, Knowledge Catalog, Terraform에 대한 기본적인 이해도 있어야 합니다.
개발 환경 준비
이 튜토리얼에서는 클라우드에서 실행되는 명령줄 환경인 Google Cloud Shell을(를) 사용합니다.
콘솔의 오른쪽 상단 툴바에서 Cloud Shell 활성화 를 클릭합니다. Google Cloud 환경을 프로비저닝하고 연결하는 데 몇 분 정도 소요됩니다.
Cloud Shell에서 향후 모든 명령어가 특정 Google Cloud 프로젝트를 타겟팅하도록
PROJECT_ID및REGION변수를 설정합니다.export PROJECT_ID=$(gcloud config get-value project) gcloud config set project $PROJECT_ID export REGION="us-central1"필요한 Google Cloud 서비스를 사용 설정합니다.
gcloud services enable \ artifactregistry.googleapis.com \ bigqueryunified.googleapis.com \ cloudaicompanion.googleapis.com \ cloudbuild.googleapis.com \ cloudresourcemanager.googleapis.com \ datacatalog.googleapis.com \ run.googleapis.comGoogle Cloud DevRel Demos 저장소를 클론합니다.
GitHub에서 인프라 코드와 스크립트를 다운로드합니다. 스파스 체크아웃을 사용하여 이 튜토리얼에 필요한 특정 폴더만 가져옵니다.
# Perform a shallow clone to get only the latest repository structure without the full history git clone --depth 1 --filter=blob:none --sparse https://github.com/GoogleCloudPlatform/devrel-demos.git cd devrel-demos # Specify and download only the folder you need for this tutorial git sparse-checkout set data-analytics/governance-context cd data-analytics/governance-context
데이터 레이크 빌드
실제와 비슷하게 만들려면 공식 데이터와 신뢰할 수 없는 정리되지 않은 데이터를 혼합해야 합니다. Terraform과 튜토리얼 저장소의 사전 구성된 Terraform 구성 파일을 사용하여 빠르게 설정합니다.
Terraform 구성은 두 가지 작업을 처리합니다.
finance_mart.fin_monthly_closing_internal및analyst_sandbox.tmp_data_dump_v2_final_real을 비롯한 Knowledge Catalog 관점 유형 (메타데이터 템플릿), BigQuery 데이터 세트, 테이블을 설정합니다.- 샘플 데이터를 테이블에 로드합니다.
terraform디렉터리를 열고 초기화합니다.cd terraform terraform init구성을 적용합니다. 최대 1분 정도 걸릴 수 있습니다.
terraform apply -var="project_id=${PROJECT_ID}" -var="region=${REGION}" -auto-approve
이제 관리되지 않는 데이터 레이크가 있습니다. AI 에이전트에게 데이터 레이크의 테이블은 열이 있는 객체일 뿐이므로 정확히 동일하게 보입니다. 이 문제를 해결하려면 다음 단계에서 거버넌스를 적용해야 합니다.
거버넌스 적용
이것이 설정의 가장 중요한 부분입니다. 현재 두 테이블은 AI 에이전트에게 동일하게 보입니다. 이를 구분하려면 에이전트에게 필요한 컨텍스트를 제공하는 인증된 메타데이터 라벨과 같은 관점을 적용합니다. 이 섹션에서는 메타데이터를 생성하는 스크립트와 테이블에 적용하는 스크립트, 이렇게 두 개의 스크립트를 사용합니다.
거버넌스 페이로드 생성
Terraform은 이미 관점 유형을 설정했으므로 이제 이를 채울 데이터를 생성해야 합니다.
./generate_payloads.sh 스크립트를 실행하여 aspect_payloads/ 디렉터리를 만듭니다. 이 디렉터리에는 다음 단계에서 적용하는 다양한 거버넌스 시나리오를 정의하는 4개의 YAML 파일이 포함되어 있습니다.
튜토리얼 디렉터리의 루트로 다시 이동하여 ./generate_payloads.sh 스크립트를 실행합니다.
cd ..
chmod +x ./generate_payloads.sh
./generate_payloads.sh
관점 적용
apply_governance.sh스크립트를 실행하기 전에 테이블에 연결될 데이터를 살펴보세요. 다음 명령어를 실행하여 내부 재무 데이터에 정의된 메타데이터를 확인합니다.cat aspect_payloads/fin_internal.yamlYAML 파일은 테이블의 비즈니스 컨텍스트를 정의합니다.
your-project-id.us-central1.official-data-product-spec: data: product_tier: GOLD_CRITICAL data_domain: FINANCE usage_scope: INTERNAL_ONLY update_frequency: DAILY_BATCH is_certified: true데이터를
is_certified: true로 명시적으로 표시하고GOLD_CRITICAL등급을 할당하는 방법을 확인하세요. 이렇게 하면 AI 에이전트가 따라야 할 명확하고 구조화된 규칙이 제공됩니다.apply_governance.sh스크립트를 실행합니다. 이 스크립트는 BigQuery 테이블을 반복하고gcloudCLI를 사용하여 YAML 페이로드의 메타데이터를 각 테이블에 '스탬프'합니다.chmod +x ./apply_governance.sh ./apply_governance.sh
메타데이터 확인
계속하기 전에 스크립트가 관점을 올바르게 적용했는지 확인하세요.
- 콘솔에서 Knowledge Catalog 페이지를 엽니다. Google Cloud 상단의 검색창을 사용해 찾을 수 있습니다.
fin_monthly_closing_internal을 검색합니다. 결과에서 테이블 이름을 선택하여 세부정보 페이지를 엽니다.- (선택사항) 태그 및 관점 섹션에서
official-data-product-spec관점을 찾습니다. 값이 적용한 '골드 내부' 시나리오와 일치하는지 확인합니다.
이제 메타데이터를 사용하여 이러한 테이블을 구분하고 AI 에이전트가 동일한 작업을 실행할 수 있는 방법을 제공했습니다.
Gemini CLI로 데이터 컨텍스트 테스트
전체 웹 애플리케이션을 빌드하기 전에 모델 컨텍스트 프로토콜 (MCP) 환경을 사용하여 거버넌스 로직을 로컬에서 테스트할 수 있습니다. 이 설정에서 Gemini CLI 는 클라이언트 (대화하는 인터페이스) 역할을 하고 Knowledge Catalog 확장 프로그램 은 로컬 서버 역할을 합니다.
Knowledge Catalog 확장 프로그램 설치
Cloud Shell에서 Knowledge Catalog 확장 프로그램을 설치합니다.
export DATAPLEX_PROJECT="${PROJECT_ID}"
gemini extensions install https://github.com/gemini-cli-extensions/dataplex
규칙 정의
GEMINI.md 구성 파일에는 '안전한 데이터가 필요합니다'와 같은 선언적 규칙을 올바른 거버넌스 라벨이 있는 테이블만 반환하는 정확한 검색으로 전환하는 로직이 있습니다.
현재 구성 파일은 템플릿일 뿐입니다. CLI를 실행할 때 관리되는 데이터를 올바르게 타겟팅하도록 규칙에 특정 Google Cloud 프로젝트 ID를 추가해야 합니다.
구성 파일에
PROJECT_ID를 추가합니다.envsubst < GEMINI.md > GEMINI.md.tmp && mv GEMINI.md.tmp GEMINI.md변경사항을 확인하고 데이터 컨텍스트가 작동하는 방식을 이해하려면
GEMINI.md파일을 빠르게 살펴보세요.cat GEMINI.md파일이 규칙을 1단계와 2단계로 분할하는 것을 확인하세요. 이렇게 하면 엄격한 작업 순서가 적용됩니다. 에이전트는 먼저 데이터 자체를 터치하기 전에 (2단계) 올바른 거버넌스 라벨 (1단계)을 찾아야 합니다. 이 '검색 우선' 로직은 에이전트가 테이블 이름을 추측하거나 검증되지 않은 소스에서 답변을 생성하는 것을 방지합니다.
2단계에 실제 Google Cloud 프로젝트 ID가 포함되어 있는지 확인합니다. 올바르지 않으면 에이전트가 데이터를 찾을 위치를 알 수 없습니다.
Gemini CLI 시작 및 시나리오 테스트
새 Gemini 세션을 시작합니다. 프로젝트 폴더에 있으므로 CLI는 로컬 GEMINI.md를 시스템 컨텍스트로 자동 감지하고 로드합니다.
gemini
설치 확인
Knowledge Catalog 확장 프로그램이 활성 상태인지 확인합니다. dataplex가 구성된 MCP 서버 도구 목록에 표시되어야 합니다.
/mcp desc
사용해 보기
이제 데이터 컨텍스트가 실제로 작동하는지 확인할 차례입니다. 이러한 프롬프트를 CLI에 하나씩 붙여넣습니다.
시나리오 1: '골드' 표준 데이터 찾기
Gemini CLI가 중요한 이사회 회의에 가장 신뢰할 수 있는 데이터를 찾을 수 있는지 확인합니다.
We are preparing the deck for an internal Board of Directors meeting next week. I need the numbers to be absolutely finalized, trustworthy, and kept strictly confidential. Which table is safe to use?
CLI는 원시 데이터를 건너뛰고 fin_monthly_closing_internal을 찾아야 합니다. 이는 '완료된' 및 '기밀' 데이터 요청을 이전에 적용한 GOLD_CRITICAL 및 INTERNAL_ONLY 태그와 일치시켜 수행합니다.
시나리오 2: 공개
데이터를 외부적으로 공유한다고 가정해 보세요. CLI가 내부 비밀을 누출하지 않도록 해야 합니다.
I need to share our quarterly financial summary with an external consulting firm. It is critical that we do not leak any raw or internal metrics. Which dataset is officially scrubbed and explicitly approved for external sharing?
내부 테이블에 가장 자세한 정보가 있더라도 CLI는 이를 무시해야 합니다. EXTERNAL_READY로 태그된 테이블이 하나뿐이므로 fin_quarterly_public_report를 가리켜야 합니다.
시나리오 3: 실시간 운영 요구사항
데이터 과학자는 최신 정보가 필요한 경우가 많습니다. Gemini CLI가 일괄 처리와 실시간 스트림의 차이점을 이해하는지 확인합니다.
My dashboard needs to show what's happening right now with our ad spend. I can't wait for the overnight load. What do you recommend?
CLI는 mkt_realtime_campaign_performance를 찾아야 합니다. 메타데이터에서 REALTIME_STREAMING 업데이트 빈도를 식별합니다.
시나리오 4: 샌드박스 탐색
때로는 '완벽'보다 '충분히 좋음'이 더 나을 수 있습니다. Gemini CLI가 일부 실험적 ML 작업을 위한 원시 샌드박스 데이터를 찾을 수 있는지 확인합니다.
I'm just playing around with some new ML models and need a lot of raw data. It doesn't need to be perfect, just a sandbox environment.
CLI는 tmp_data_dump_v2_final_real을 찾아야 합니다. BRONZE_ADHOC 등급과 일치하고 is_certified: false로 명시적으로 표시되어 있으므로 올바른 선택임을 알고 있습니다.
테스트를 마치면 CLI 세션을 종료할 수 있습니다.
/quit
정리
반복 청구를 방지하려면 다음 단계를 따르세요.
Terraform 리소스를 폐기합니다.
cd ~/devrel-demos/data-analytics/governance-context/terraform terraform destroy -var="project_id=${PROJECT_ID}" -var="region=${REGION}" -auto-approveKnowledge Catalog 확장 프로그램을 제거하고 로컬 데모 파일을 삭제합니다.
gemini extensions uninstall dataplex cd ~ rm -rf ~/devrel-demos
결론
견고한 데이터 기반을 구축하고 메타데이터를 사용하여 엄격한 컨텍스트를 적용했으며 Gemini CLI를 사용하여 모든 것이 로컬에서 작동하는지 확인했습니다.