이 글에서 배울 내용:
- 버텍스 AI 파이프라인이란 무엇인가.
- 사실 확인(및 기타 다양한 용도)을 위해 Bright Data SERP API를 통합하는 이유.
- Bright Data SERP API를 활용하여 최신 웹 검색 컨텍스트를 가져오는 사실 확인 파이프라인을 Vertex AI에서 구축하는 방법.
자, 시작해 보겠습니다!
Vertex AI 파이프라인이란?
Vertex AI Pipelines는 Google Cloud의 관리형 서비스로, 엔드투엔드 머신 러닝 워크플로우를 자동화, 조정 및 재현합니다.
이 서비스를 사용하면 데이터 처리, 훈련, 배포와 같은 복잡한 ML 프로세스를 추적, 버전 관리 및 서버리스 환경에서 실행할 수 있는 일련의 모듈식 구성 요소로 분해할 수 있습니다.
요약하면, Vertex AI Pipelines는 MLOps 라이프사이클을 단순화하여 반복 가능하고 확장 가능한 ML 시스템을 더 쉽게 구축할 수 있게 합니다.
Vertex AI에서 팩트체킹 파이프라인 구축: 이유와 방법
LLM은 확실히 강력하지만, 그 지식은 정적입니다. 따라서 2024년에 훈련된 LLM은 어제의 주식 시장 움직임, 지난밤의 스포츠 결과 등을 알지 못합니다. 이는 “부실한” 또는 “환각적인” 답변으로 이어집니다.
이를 해결하기 위해 인터넷에서 실시간 데이터를 활용해 LLM을 ‘그라운딩(grounding)’하는 시스템을 구축할 수 있습니다. LLM이 응답을 생성하기 전에 외부 정보를 제공하여 출력이 최신 사실에 기반하도록 보장하는 것이죠. 바로 RAG(검색 강화 생성, Retrieval-Augmented Generation)의 핵심입니다!
현재 Gemini는 Gemini 모델을 Google 검색과 연결하는 그라운딩 도구를 제공합니다. 그러나 해당 도구는 생산 환경에 적합하지 않으며 확장성 문제가 있고 그라운딩 데이터 소스에 대한 완전한 통제권을 부여하지 않습니다. 저희 GEO/SEO 콘텐츠 최적화 에이전트에서 해당 도구의 실제 작동 모습을 확인해 보세요.
보다 전문적이고 유연한 대안은 Bright Data의 SERP API입니다. 이 API를 사용하면 프로그래밍 방식으로 검색 엔진에 쿼리를 실행하고 전체 SERP 콘텐츠를 가져올 수 있습니다. 즉, LLM 워크플로에 통합 가능한 최신 검증 가능한 콘텐츠의 신뢰할 수 있는 출처를 제공합니다. 문서 탐색을 통해 모든 기능을 확인해 보세요.
예를 들어, 사실 확인 파이프라인의 일환으로 SERP API를 Vertex AI Pipelines에 통합할 수 있습니다. 이 파이프라인은 다음 세 단계로 구성됩니다:
- 쿼리 추출: LLM이 입력 텍스트를 읽고 주요 사실 주장을 식별하여 Google 검색 가능한 쿼리로 변환합니다.
- 웹 검색 컨텍스트 가져오기: 이 구성 요소는 해당 쿼리를 받아 Bright Data SERP API를 호출하여 실시간 검색 결과를 가져옵니다.
- 사실 확인: 최종 LLM 단계에서 원본 텍스트와 검색된 컨텍스트를 활용해 사실 확인 보고서를 생성합니다.
참고: 이는 데이터/ML 파이프라인에서 SERP API의 수많은 활용 사례 중 하나에 불과합니다.
Bright Data의 웹 검색용 SERP API를 Vertex AI 파이프라인에 통합하는 방법
이 섹션에서는 Vertex AI Pipelines에서 사실 확인 파이프라인을 구현하는 데 필요한 각 단계를 안내합니다. 이는 사실적인 웹 검색 컨텍스트를 가져오기 위해 Bright Data의 SERP API를 활용합니다.
사실 확인은 Vertex AI 파이프라인 노드에서 SERP API를 활용할 수 있는 수많은 사용 사례(예: 뉴스 발견, 콘텐츠 요약, 트렌드 분석, 연구 지원) 중 하나일 뿐입니다. 따라서 이 구현을 다른 다양한 시나리오에 쉽게 적용할 수 있습니다.
이를 명확히 한 후, 아래 단계를 따르세요!
필수 조건
이 튜토리얼 섹션을 따라하려면 다음이 준비되어 있어야 합니다:
- Google Cloud Console 계정
- 활성 API 키가 있는 Bright Data 계정 (관리자 권한이 있는 것이 이상적).
API 키를 확인하는 방법은 공식 Bright Data 가이드를 참고하세요. 곧 필요할 수 있으니 안전한 곳에 보관하세요.
1단계: 새 Google Cloud 프로젝트 생성 및 구성
Google Cloud Console에 로그인하여 새 프로젝트를 생성하세요. 또한 과금 기능이 활성화되어 있는지 확인하세요 (무료 체험판 사용도 가능합니다).
이 예시에서는 Google Cloud 프로젝트 이름을 “Bright Data SERP API Pipeline”으로 지정하고 프로젝트 ID를 bright-data-pipeline으로 설정합니다:

프로젝트 생성 후 해당 프로젝트를 선택하여 작업을 시작하세요. 다음과 같은 화면이 표시됩니다:

이 페이지에서 프로젝트 이름, 프로젝트 번호, 프로젝트 ID를 확인할 수 있습니다. 튜토리얼 후반부에 프로젝트 번호와 ID가 모두 필요하므로 메모하여 안전한 곳에 보관하세요.
Google Cloud 프로젝트 준비가 완료되었으므로, 다음 단계는 필요한 API를 활성화하는 것입니다. 검색창에 “APIs & Services”를 입력하여 해당 페이지로 이동한 후 “Enable APIs and services” 버튼을 클릭하세요:

다음 API를 검색하여 활성화하세요:
이 두 API는 Vertex AI 워크벤치에서 Vertex AI를 사용하고 개발하는 데 필수적입니다.
참고: 파이프라인은 일반적으로 기본적으로 활성화된 다른 여러 API에도 의존합니다. 문제가 발생할 경우 다음 API도 활성화되었는지 확인하세요:
- “Cloud Resource Manager API”
- “Cloud Storage API”
- “서비스 사용량 API”
- “Compute Engine API”
- “Gemini for Google Cloud API”
- “Cloud Logging API”
이 중 하나라도 비활성화된 경우 계속하기 전에 수동으로 활성화하세요.
완료! 이제 Google Cloud 프로젝트가 생성되었습니다.
2단계: Cloud Storage 버킷 설정
Vertex AI 파이프라인을 실행하려면 Cloud Storage 버킷이 필요합니다. 파이프라인 실행 중에 생성되는 중간 데이터, 모델 파일, 로그, 메타데이터와 같은 파이프라인 아티팩트를 Vertex AI가 저장해야 하기 때문입니다. 즉, 구성된 버킷은 파이프라인 구성 요소가 데이터를 읽고 쓰는 작업 공간 역할을 합니다.
버킷을 생성하려면 Google Cloud Console에서 “Cloud Storage”를 검색하세요. 첫 번째 결과를 열고 왼쪽 메뉴에서 “버킷”을 선택한 후 “생성” 버튼을 누르세요:

버킷 생성 양식에서:
bright-data-pipeline-artifacts와같이 전역적으로 고유한 이름을 지정하세요.- 위치 유형과 리전을 선택하세요. 간편함을 위해 “미국(미국 내 여러 리전)” 옵션을 선택하는 것이 좋습니다.
생성 후 버킷 이름을 기록해 두세요. 파이프라인 구성 시 나중에 필요할 것입니다. 다음과 같은 화면이 표시됩니다:

이 경우 버킷 이름은 다음과 같습니다:
bright-data-pipeline-artifacts
버킷 URI는 다음과 같습니다:
gs://bright-data-pipeline-artifacts
“us” 멀티 리전을 선택했으므로 지원되는 모든 us-* 리전에서 이 버킷에 접근할 수 있습니다. 여기에는 us-central1, us-east1, …, us-west1 … 등이 포함됩니다. us-central1을 설정하는 것이 좋습니다.
이제 버킷 내 데이터 읽기/쓰기 권한을 Vertex AI에 부여해야 합니다. 버킷 이름을 클릭하여 상세 페이지로 이동한 후 “권한” 탭으로 이동하세요:
“접근 권한 부여” 버튼을 클릭하고 다음과 같이 새 권한 규칙을 추가하세요:

- 주체:
<YOUR_GC_PROJECT_NUMBER>[email protected] - 역할:
스토리지 관리자
(중요: 프로덕션 환경에서는 필요한 최소한의 역할만 할당하세요. 전체 “스토리지 관리자” 권한 사용은 본 설정의 단순화를 위한 것입니다.)

“저장”을 클릭하여 새 역할을 확인하면, 프로젝트의 Compute Engine 서비스가 Cloud Storage 버킷의 객체에 접근하고 관리할 수 있는 권한이 부여됩니다.
해당 권한이 없으면 Vertex AI 파이프라인이 실행 중 데이터를 읽거나 쓸 수 없어 아래와 같은 403 Forbidden 오류가 발생합니다:
google.api_core.exceptions.Forbidden: 403 GET https://storage.googleapis.com/storage/v1/b/bright-data-pipeline-artifacts?fields=name&prettyPrint=false: <YOUR_GC_PROJECT_NUMBER>[email protected]는 Google Cloud Storage 버킷에 대한 storage.buckets.get 권한이 없습니다. 리소스에 대한 'storage.buckets.get' 권한이 거부되었습니다(또는 존재하지 않을 수 있음).
대단합니다! Google Cloud Storage 버킷이 구성되었습니다.
3단계: IAM 권한 구성
Cloud Storage 버킷과 마찬가지로, 프로젝트의 Compute Engine 서비스 계정에 적절한 IAM 권한을 부여해야 합니다.
이러한 권한을 통해 Vertex AI가 사용자를 대신하여 파이프라인 작업을 생성하고 관리할 수 있습니다. 해당 권한이 없으면 파이프라인이 Google Cloud 프로젝트 내에서 실행을 시작하거나 제어할 권한이 없습니다.
설정을 위해 Google Cloud Console에서 “IAM 및 관리자”를 검색하여 해당 페이지를 엽니다.
“접근 권한 부여” 버튼을 클릭한 후, 컴퓨트 엔진 기본 서비스 계정(예: <YOUR_GC_PROJECT_NUMBER>[email protected])에 다음 두 가지 역할을 추가하세요:
- “서비스 계정 사용자”
- “Vertex AI 사용자”

역할을 할당한 후 “저장” 버튼을 누르세요. 이렇게 하면 Vertex AI 파이프라인이 프로젝트의 컴퓨팅 리소스를 사용하고 관리형 워크로드를 실행할 수 있습니다.
간단히 말해, 이는 Google Cloud에 Vertex AI 파이프라인이 프로젝트의 컴퓨팅 서비스 계정을 대신하여 작업할 권한이 있음을 알리는 것입니다. 이러한 권한이 없으면 파이프라인 작업을 시작할 때 아래와 같은 403 Forbidden 오류가 발생합니다:
403 POST https://us-central1-aiplatform.googleapis.com/v1/projects/bright-data-pipeline/locations/us-central1/pipelineJobs?pipelineJobId=XXXXXXXXXXXXXXXXXXXXXXX&%24alt=json%3Benum-encoding%3Dint: 리소스 '//aiplatform.googleapis.com/projects/bright-data-pipeline/locations/us-central1'에 대한 'aiplatform.pipelineJobs.create' 권한이 거부되었습니다(또는 해당 리소스가 존재하지 않을 수 있음). [{'@type': 'type.googleapis.com/google.rpc.ErrorInfo', 'reason': 'IAM_PERMISSION_DENIED', 'domain': 'aiplatform.googleapis.com', 'metadata': {'resource': 'projects/bright-data-pipeline/locations/us-central1', 'permission': 'aiplatform.pipelineJobs.create'}}]
모든 설정이 완료되었습니다! 이제 IAM이 구성되어 Vertex AI 파이프라인 실행을 준비했습니다.
4단계: Vertex AI 워크벤치 시작하기
개발을 간소화하기 위해 로컬 설정 없이 클라우드에서 직접 Vertex AI 파이프라인을 구축할 것입니다.
구체적으로 Google Cloud의 Vertex AI 플랫폼 내에서 제공되는 완전 관리형 JupyterLab 기반 개발 환경인 Vertex AI Workbench를 사용하게 됩니다. 이 환경은 프로토타이핑부터 모델 배포까지 전체 데이터 사이언스 워크플로를 지원하도록 설계되었습니다.
참고: 진행하기 전에 Vertex AI Workbench 작동에 필요한 “Notebooks API”가 활성화되어 있는지 확인하세요.
Vertex AI Workbench에 접근하려면 Google Cloud Console에서 “Vertex AI Workbench”를 검색하여 해당 페이지를 엽니다. 그런 다음 “인스턴스” 탭에서 “새로 만들기”를 클릭하여 새 인스턴스를 시작합니다:

참고: Vertex AI Workbench는 새 인스턴스에 대해 Jupyter 4를 지원하지만, 현재 모든 환경은 기본적으로 JupyterLab 3을 사용합니다. 이 버전에는 최신 NVIDIA GPU 및 Intel 라이브러리와 드라이버가 미리 설치되어 있습니다. 따라서 이 튜토리얼에서는 JupyterLab 3을 선택해야 합니다.
인스턴스 생성 양식에서 기본 머신 유형( n1-standard-4)을 포함한 모든 기본 구성 값을 그대로 유지하세요. 이 머신은 본 가이드에 충분히 적합합니다.
“생성”을 클릭하세요. 인스턴스가 프로비저닝되고 시작되는 데 몇 분이 소요될 수 있음을 유의하십시오. 준비가 완료되면 “인스턴스” 테이블에 “JupyterLab 열기” 링크가 표시된 새 항목이 나타납니다. 이를 클릭하세요:

Google Cloud에서 완전히 호스팅되는 클라우드 기반 JupyterLab 환경으로 이동합니다:

여기서 “노트북” 아래의 “Python 3 (ipykernel)”을 클릭하여 새 노트북을 생성하세요. 이 노트북은 Bright Data와 통합된 Vertex AI 파이프라인을 작성하고 테스트할 개발 환경으로 사용됩니다:

훌륭합니다! 이제 Vertex AI 데이터 파이프라인의 로직을 코딩하고 구축할 준비가 되었습니다.
단계 #5: 필요한 Python 라이브러리 설치 및 초기화
노트북에서 이 프로젝트에 필요한 모든 Python 라이브러리를 설치하기 위해 다음 셀을 추가하고 실행하세요:
!pip install kfp google-cloud-aiplatform google-genai brightdata-sdk --quiet --upgrade
환경 설정이 완료될 때까지 몇 분 정도 소요될 수 있으니 기다려 주세요.
각 라이브러리의 기능과 필요한 이유는 다음과 같습니다:
kfp: Kubeflow Pipelines SDK로, Python을 통해 머신러닝 파이프라인을 프로그래밍 방식으로 정의, 컴파일 및 실행할 수 있게 합니다. 파이프라인 구성 요소를 생성하기 위한 데코레이터와 클래스를 제공합니다.google-cloud-aiplatform: Python용 Vertex AI SDK입니다. 모델 훈련, 엔드포인트 배포, 파이프라인 실행 등 Google Cloud의 Vertex AI 서비스와 직접 상호작용하는 데 필요한 기능을 제공합니다.google-genai: Google의 생성형 AI SDK로, Gemini 및 기타 생성형 모델(Vertex AI 내에서도 사용 가능)을 활용하고 오케스트레이션할 수 있습니다. 파이프라인에 LLM 작업이 포함되어 있어 유용합니다. (참고: Vertex AI SDK는 현재 사용 중단됨).brightdata-sdk: Bright Data SDK로, 파이프라인 내에서 직접 Bright Data의 SERP API 또는 기타 웹 데이터 소스를 통해 실시간 데이터를 연결하고 가져오는 데 사용됩니다.
모든 라이브러리를 설치한 후, 전용 셀에서 다음 코드로 라이브러리를 임포트하고 Vertex AI SDK를 초기화하세요:
import kfp
from kfp.dsl import component, pipeline, Input, Output, Artifact
from kfp import compiler
from google.cloud import aiplatform
from typing import List
# 프로젝트 비밀 정보로 대체
PROJECT_ID = "<YOUR_GC_PROJECT_ID>"
REGION = "<YOUR_REGION>" # (예: "us-central1")
BUCKET_URI = "<YOUR_BUCKET_URI>" # (예: "gs://bright-data-pipeline-artifacts")
# Vertex AI SDK 초기화
aiplatform.init(project=PROJECT_ID, location=REGION, staging_bucket=BUCKET_URI)
aiplatform.init() 함수는 Python 환경이 Vertex AI와 통신할 수 있도록 구성합니다. 이 함수는 프로젝트, 리전 및 스테이징 버킷을 설정하여 파이프라인 생성, 작업 훈련 또는 모델 배포와 같은 이후의 모든 Vertex AI 작업이 자동으로 올바른 컨텍스트를 사용하도록 합니다.
간단히 말해, 이 한 줄의 코드는 노트북 세션을 Google Cloud 프로젝트에 연결하고 Vertex AI에 파이프라인 아티팩트와 임시 데이터를 저장할 위치를 알려줍니다. 잘하셨습니다!
6단계: 쿼리 추출 컴포넌트 정의
Vertex AI 파이프라인은 구성 요소로 구축되며, 구성 요소는 특정 작업을 수행하는 Python 함수입니다. 앞서 설명한 대로 이 파이프라인에는 세 가지 구성 요소가 있습니다.
첫 번째인 extract_queries 컴포넌트부터 시작해 보겠습니다!
extract_queries 구성 요소:
- 사실 확인 대상 텍스트를 입력으로 받습니다.
google-genai라이브러리를 통해 Gemini 모델을 사용하여 해당 텍스트의 사실 주장을 검증하는 데 도움이 될 수 있는 검색 가능한 Google 검색어 목록을 생성합니다.- 해당 목록을 Python 배열(
List[str])로 반환합니다.
다음과 같이 구현하세요:
@component(
base_image="python:3.10",
packages_to_install=["google-genai"],)
def extract_queries(
input_text: str,
project: str,
location: str,)
-> List[str]:
from google import genai
from google.genai.types import GenerateContentConfig, HttpOptions
from typing import List
import json
# Vertex 통합으로 Google Gen AI SDK 초기화
client = genai.Client(
vertexai=True,
project=project,
location=location,
http_options=HttpOptions(api_version="v1")
)
# 출력 스키마 (문자열 배열)
response_schema = {
"type": "ARRAY",
"items": {
"type": "STRING"
}
}
# 쿼리 추출기 프롬프트
prompt = f"""
당신은 전문 팩트체커입니다. 당신의 임무는 다음 텍스트를 읽고 주요 사실 주장을 검증하는 데 필요한 구체적이고 구글 검색 가능한 질의 목록을 추출하는 것입니다.
반환값은 *오직* Python 문자열 리스트여야 하며, 다른 것은 포함하지 마십시오.
예시:
입력: "에펠탑은 1889년 구스타브 에펠이 건설했으며 높이는 300미터입니다."
출력: ["에펠탑은 언제 건설되었는가", "에펠탑을 누가 건설했는가", "에펠탑의 높이는 얼마인가"]
사실 확인 대상 텍스트:
---
"{input_text}"
---
"""
response = client.models.generate_content(
model="gemini-2.5-flash",
contents=prompt,
config=GenerateContentConfig(
# 모델이 문자열 JSON 배열을 반환하도록 강제
response_mime_type="application/json",
response_schema=response_schema,
),
)
# 'response.text'에는 스키마에 부합하는 JSON 문자열이 안정적으로 포함됩니다 (예: '["query_1", ..., "query_n"]')
query_list: List[str] = json.loads(response.text.strip())
return query_list
KFP 컴포넌트는 자체적으로 완결되어야 합니다. 즉, 모든 임포트는 컴포넌트 함수 내부에서 선언해야 하며 전역적으로 선언해서는 안 됩니다.
genai.Client() 의 vertexai=True, project=project, location=location 매개변수는 google-genai 클라이언트를 Vertex AI 환경과 연결하는 데 필수적입니다. 이 매개변수들은 구성된 모델이 파이프라인과 동일한 리전 및 프로젝트에서 실행되도록 보장합니다.
모델 선택과 관련해서는 가볍고 빠른 Gemini 2.5 Flash를 사용해야 합니다. 필요한 경우 정확도를 높이기 위해 다른 Gemini 모델을 설정할 수도 있습니다.
구성 요소 하나 완료, 두 개 남았습니다!
7단계: SERP API 기반 웹 검색 컨텍스트 검색기 구성 요소 생성
Google에서 검색 가능한 쿼리 목록을 생성했으니, 이제 웹에서 컨텍스트를 검색할 차례입니다. 이를 위해 Bright Data의 SERP API를 사용하세요. 이 API는 구조화되고 확장 가능한 방식으로 검색 결과(기본값: Google)를 프로그래밍 방식으로 스크래핑할 수 있게 해줍니다.
Python에서 SERP API에 접근하는 가장 쉬운 방법은 공식 오픈소스 Bright Data SDK를 이용하는 것입니다. 이 라이브러리는 SERP API를 포함한 Bright Data 제품 호출을 위한 간편한 메서드를 제공합니다. 자세한 내용은 문서를 참조하세요.
특히 fetch_web_search_context 구성 요소는:
- 이전 단계에서 생성된 검색어 목록을 인수로 받습니다.
- Bright Data SDK를 사용하여 각 쿼리에 대해 SERP API를 병렬로 호출합니다.
- 검색 결과를 가져옵니다(기본값은 Google).
- 모든 결과를 JSON 아티팩트(파이프라인 내 다른 컴포넌트가 사용할 수 있는 파일)로 저장합니다.
전용 노트북 셀에 다음과 같이 해당 컴포넌트를 생성합니다:
@component(
base_image="python:3.10",
packages_to_install=["brightdata-sdk"],)
def fetch_web_search_context(
queries: List[str],
api_key: str,
output_file: Output[Artifact],
):
"""
쿼리 목록을 받아 각 쿼리를 Bright Data SDK로 검색하고,
모든 결과를 JSON 파일 아티팩트로 작성합니다.
"""
from brightdata import bdclient
import json
# Bright Data SDK 클라이언트 초기화
client = bdclient(api_token=api_key)
# 입력된 쿼리에 대해 SERP API 호출
results = client.search(
queries,
data_format="markdown"
)
# 결과를 아티팩트 파일에 기록
with open(output_file.path, "w") as f:
json.dump(results, f)
SERP API는 LLM에 입력하기에 이상적인 마크다운 형식으로 콘텐츠를 반환하도록 구성되었습니다.
또한 이 컴포넌트의 출력은 상당히 클 수 있으므로 아티팩트로 저장하는 것이 가장 좋습니다. 아티팩트는 Google Cloud Storage 버킷에 저장되며, Vertex AI 파이프라인 내 컴포넌트 간에 메모리 과부하나 데이터 전송 한도 초과 없이 효율적으로 데이터를 전달할 수 있게 합니다.
이제 시작합니다! Bright Data의 강력한 웹 검색 기능 덕분에, 이제 다음 구성 요소의 입력으로 사용할 수 있는 Google 기반 검색 컨텍스트를 확보했습니다. 다음 구성 요소에서는 LLM이 사실 확인을 수행할 것입니다.
8단계: 팩트체커 구성 요소 구현
쿼리 추출 구성 요소와 유사하게, 이 단계에서도 LLM을 호출합니다. 그러나 쿼리를 생성하는 대신, 이 구성 요소는 이전 단계에서 수집한 웹 검색 결과를 맥락적 증거로 활용하여 원본 입력 텍스트를 팩트체크합니다.
본질적으로 검색 결과 페이지( SERP) 기반 RAG 스타일 워크플로를 실행하여 검색된 웹 콘텐츠가 모델의 검증 과정을 안내합니다.
새 노트북 셀에서 fact_check_with_web_search_context 컴포넌트를 다음과 같이 정의하세요:
@component(
base_image="python:3.10",
packages_to_install=["google-genai"],)
def fact_check_with_web_search_context(
input_text: str,
web_search_context_file: Input[Artifact],
project: str,
location: str,)
-> str:
import json
from google import genai
# 아티팩트에서 웹 검색 컨텍스트 로드
with open(web_search_context_file.path, "r") as f:
web_search_context = json.load(f)
client = genai.Client(
vertexai=True,
project=project,
location=location
)
prompt = f"""
당신은 AI 팩트체커입니다. 원본 텍스트와 JSON 검색 컨텍스트를 비교하고
Markdown 형식의 팩트체크 보고서를 생성하세요.
[원본 텍스트]
"{input_text}"
[웹 검색 컨텍스트]
"{json.dumps(web_search_context)}"
"""
response = client.models.generate_content(
model="gemini-2.5-pro",
contents=prompt
)
return response.text
이 작업은 더 복잡하며 여러 증거 출처에 대한 추론이 필요합니다. 따라서 Gemini 2.5 Pro와 같은 더 강력한 모델을 사용하는 것이 좋습니다.
훌륭합니다! 이제 Vertex AI 파이프라인을 구성하는 세 가지 구성 요소를 모두 정의했습니다.
단계 #9: 파이프라인 정의 및 컴파일
세 가지 구성 요소를 하나의 Kubeflow 파이프라인으로 연결합니다. 각 구성 요소는 순차적으로 실행되며, 한 단계의 출력이 다음 단계의 입력으로 사용됩니다.
파이프라인 정의 방법:
@pipeline(
name="bright-data-fact-checker-pipeline",
description="텍스트 문서의 사실 확인을 위해 SERP 컨텍스트를 가져옵니다."
)
def fact_check_pipeline(
input_text: str,
bright_data_api_key: str,
project: str = PROJECT_ID,
location: str = REGION,
):
# 1단계: 입력 텍스트에서 검증 가능한 Google 검색어 추출
step1 = extract_queries(
input_text=input_text,
project=project,
location=location
)
# 2단계: 검색 쿼리에 대한 Bright Data SERP 결과 가져오기
step2 = fetch_web_search_context(
queries=step1.output,
bright_data_api_key=bright_data_api_key
)
# 3단계: 이전에 가져온 웹 검색 컨텍스트를 사용해 팩트체크 수행
step3 = fact_check_with_web_search_context(
input_text=input_text,
web_search_context_file=step2.outputs["output_file"],
project=project,
location=location
)
본질적으로 이 함수는 이전에 구축한 세 가지 구성 요소를 연결합니다. 먼저 팩트체킹 쿼리를 생성한 후, Bright Data의 SERP API를 사용하여 각 쿼리에 대한 검색 결과를 가져옵니다. 마지막으로 수집된 증거를 바탕으로 주장을 검증하기 위해 Gemini 모델을 실행합니다.
다음으로, Vertex AI가 실행할 수 있는 JSON 사양으로 파이프라인을 컴파일해야 합니다:
compiler.Compiler().compile(
pipeline_func=fact_check_pipeline,
package_path="fact_check_pipeline.json"
)
이 명령어는 Python 파이프라인 정의를 fact_check_pipeline.json 이라는 JSON 파이프라인 사양 파일로 변환합니다.
이 JSON 파일은 Vertex AI Pipelines가 워크플로우를 조정하는 방법을 이해하기 위해 신뢰하는 청사진입니다. 모든 구성 요소, 입력 및 출력, 종속성, 컨테이너 이미지, 실행 순서를 설명합니다.
Vertex AI에서 이 JSON 파일을 실행하면 Google Cloud가 자동으로 인프라를 프로비저닝하고, 각 구성 요소를 올바른 순서로 실행하며, 단계 간 데이터 전달을 처리합니다. 파이프라인 완료!
10단계: 파이프라인 실행
다음과 같이 명백히 잘못된 진술로 Vertex AI 파이프라인을 테스트한다고 가정해 보겠습니다:
“파리는 독일의 수도이며, 독일은 엔화를 통화로 사용한다.”
Jupyter 노트북에 다음 셀을 추가하세요. 이 코드는 파이프라인을 실행하는 로직을 정의합니다:
TEXT_TO_CHECK = """
Paris is the capital of Germany, which uses the yen as its currency.
"""
# Bright Data API 키로 대체하세요
BRIGHT_DATA_API_KEY = "<YOUR_BRIGHT_DATA_API_KEY>"
print("파이프라인 작업 시작 중...")
# 파이프라인 작업 정의
job = aiplatform.PipelineJob(
display_name="fact-check-pipeline-run",
template_path="fact_check_pipeline.json",
pipeline_root=BUCKET_URI,
parameter_values={
"input_text": TEXT_TO_CHECK,
"bright_data_api_key": BRIGHT_DATA_API_KEY
})
# 작업 실행
job.run()
print("n작업 제출 완료! Vertex AI UI에서 진행 상황을 확인할 수 있습니다.")
이 코드는 새 Vertex AI 파이프라인 작업을 생성합니다. 이전에 컴파일한 파이프라인 JSON(fact_check_pipeline.json), 파이프라인 루트로 지정된 스토리지 버킷, 그리고 이번 실행에 필요한 매개변수(검증할 입력 텍스트 및 Bright Data API 키)를 지정합니다.
이 셀을 실행하면 Vertex AI가 클라우드에서 전체 파이프라인을 자동으로 조정합니다.
보안 참고: 이 예시는 단순화를 위해 Bright Data API 키를 노트북에 직접 하드코딩했지만, 이는 실제 운영 환경에서는 안전하지 않습니다. 실제 배포 시에는 API 키와 같은 민감한 자격 증명을 Google Cloud Secret Manager를 사용하여 저장하고 검색하여 (예: 로그에) 실수로 노출되는 것을 방지해야 합니다.
파이프라인을 실행하려면 Jupyter 노트북에서 모든 셀을 선택한 후 “▶” 버튼을 누르세요. 마지막 셀에 다음과 같은 출력이 표시됩니다:

이는 Vertex AI 팩트체킹 파이프라인이 성공적으로 실행 중임을 의미합니다. 와!
11단계: 파이프라인 실행 모니터링
파이프라인 작업 상태를 확인하려면 Google Cloud Console에서 프로젝트의 Vertex AI Pipelines 페이지로 이동하세요:
https://console.cloud.google.com/vertex-ai/pipelines?project={PROJECT_ID}
따라서 이 경우 URL은 다음과 같습니다:
https://console.cloud.google.com/vertex-ai/pipelines?project=bright-data-pipeline
브라우저에 URL을 붙여넣으면 다음과 같은 페이지가 표시됩니다:

“실행” 테이블의 첫 번째 항목을 클릭하면 파이프라인 작업 실행 페이지가 열립니다:

여기서 파이프라인을 구성하는 컴포넌트를 시각적으로 확인할 수 있습니다. 각 노드의 상태를 확인하고, 상세 로그를 조회하며, 파이프라인 실행 시 데이터가 시작부터 끝까지 흐르는 과정을 관찰할 수 있습니다.
12단계: 출력 탐색
파이프라인 실행이 완료되면 각 노드에 성공 완료를 나타내는 체크 표시가 나타납니다:

첫 번째 노드를 클릭하면 입력 텍스트에서 추출된 Google 검색 가능한 쿼리를 확인할 수 있습니다. 이 예시에서 생성된 쿼리는 다음과 같습니다:
"what is the capital of Germany""what currency does Germany use"
이러한 쿼리는 입력 진술의 사실 주장을 검증하는 데 완벽하게 적합합니다:

다음으로, 두 번째와 세 번째 노드 사이에 있는 아티팩트 노드를 클릭하세요. 구성된 Google Cloud Storage 버킷(이 경우 bright-data-pipeline-artifacts)에 저장된 JSON 파일 링크를 얻을 수 있습니다.
클라우드 콘솔에서 버킷으로 직접 이동하여 원하는 페이지에 접근할 수도 있습니다:

버킷 내부에는 각 컴포넌트별 폴더가 표시됩니다. 구체적으로 fetch_web_search_context 컴포넌트 폴더에는 SERP API를 통해 검색된 웹 검색 컨텍스트가 마크다운 형식 문자열 배열로 저장된 JSON 파일이 포함됩니다:

해당 파일을 다운로드하여 열면 다음과 같은 내용을 확인할 수 있습니다:

이 내용은 식별된 각 검색 쿼리에 대해 검색된 SERP의 마크다운 표현입니다.
Vertex AI 파이프라인 UI로 돌아가 출력 노드를 클릭하여 전체 결과를 확인하세요:

보시다시피 출력은 상세한 Markdown 사실 확인 보고서입니다. 동일한 출력은 파이프라인 실행용 버킷 폴더의 executor_output.json 파일에도 저장됩니다. 해당 파일을 다운로드하여 Visual Studio Code 같은 IDE에서 열어 확인하세요:

Markdown 문자열을 .md 파일(예: report.md)에 복사하여 더 명확하게 확인하세요:

이 보고서는 입력 진술 중 어떤 부분이 부정확했는지, 그리고 검증된 사실이 무엇인지에 대한 상세한 정보를 제공합니다.
자, 이제 완성되었습니다! 이는 RAG 기반 Vertex AI 파이프라인에서 컨텍스트 정보를 검색하는 Bright Data의 웹 검색 통합 기능의 강력한 성능을 보여줍니다.
다음 단계
이것은 Bright Data의 웹 검색 데이터 검색을 Vertex AI 파이프라인에서 활용하는 가능성을 보여주기 위한 간단한 예시일 뿐임을 잊지 마십시오. 실제 시나리오에서는 이러한 구성 요소들이 훨씬 더 길고 복잡한 파이프라인의 일부가 될 가능성이 높습니다.
입력 데이터는 비즈니스 문서, 내부 보고서, 데이터베이스, 파일 등 다양한 출처에서 제공될 수 있습니다. 또한 워크플로에는 사실 확인 보고서 작성 외에도 여러 단계가 포함될 수 있으며, 반드시 사실 확인 보고서만으로 종료되지는 않을 것입니다.
결론
이 블로그 게시물에서는 Bright Data의 SERP API를 활용하여 Vertex AI 파이프라인 내에서 웹 검색 컨텍스트를 검색하는 방법을 알아보았습니다. 여기에서 소개한 AI 워크플로는 데이터의 정확성을 보장하기 위해 체계적이고 신뢰할 수 있는 사실 확인 파이프라인을 구축하려는 모든 분에게 이상적입니다.
비슷한 고급 AI 워크플로를 구축하려면 Bright Data의 AI 인프라를 활용하여 실시간 웹 데이터를 수집, 검증, 변환하는 포괄적인 솔루션을 살펴보세요.
지금 바로 무료 Bright Data 계정을 생성하고 AI 활용이 가능한 웹 데이터 도구로 실험을 시작해 보세요!