Files
sam-kd/chatbot/docs/vertex.md
hskwon aca1767eb9 초기 커밋: 5130 레거시 시스템
- URL 하드코딩 → .env APP_URL 기반 동적 URL로 변경
- DB 연결 하드코딩 → .env 기반으로 변경
- MySQL strict mode DATE 오류 수정
2025-12-10 20:14:31 +09:00

4.2 KiB

GCP Vertex AI(구체적으로는 Vertex AI Agent Builder 또는 Vertex AI Search)를 사용하여 Notion의 데이터를 읽어들이고, 이를 기반으로 답변하는 검색 엔진이나 챗봇을 구축할 수 있습니다. 다만, Google Drive나 Jira처럼 '버튼 하나로 연결되는(Native Connector)' 방식이 아직 Notion에 대해서는 완전하게 제공되지 않을 수 있으므로, 질문하신 대로 API를 활용한 커스텀 연동 방식이 가장 일반적입니다. 이 과정을 "RAG (검색 증강 생성) 파이프라인 구축" 관점에서 정리해 드리겠습니다.

  1. 전체적인 데이터 흐름 (아키텍처) Notion의 데이터를 Vertex AI가 이해하기 위해서는 **[Notion] -> [중간 처리] -> [Vertex AI 저장소]**의 과정을 거쳐야 합니다.
  2. 구체적인 구현 방법: API 기법 가장 확실하고 유연한 방법은 Notion API와 Vertex AI Discovery Engine API를 결합하는 것입니다. 단계 1: Notion에서 데이터 추출 (Extraction) Notion에 있는 페이지와 텍스트를 가져오기 위해 Notion API를 사용합니다. API: Notion REST API (Retrieve block children, Retrieve a page 등) 기능: 특정 데이터베이스나 페이지의 텍스트, 표, 속성(메타데이터)을 긁어옵니다. 형식: 추출된 데이터는 보통 Markdown이나 JSON 형태로 받아집니다. 단계 2: 데이터 전처리 (Transformation) Vertex AI가 읽기 좋은 형태로 데이터를 가공합니다. JSONL 변환: Vertex AI Search는 JSONL(JSON Lines) 형식을 매우 선호합니다. 구조화: 각 Notion 페이지를 하나의 JSON 객체로 만들고, id(페이지ID), content(본문 내용), title(제목), url(Notion 링크) 등의 필드로 정리합니다. 예시 데이터 포맷 (JSONL): {"id": "notion_page_123", "jsonData": "{"title": "프로젝트 기획안", "content": "이 프로젝트의 목적은..."}"} 단계 3: Vertex AI로 데이터 수집 (Ingestion) 가공된 데이터를 Vertex AI의 **Data Store(데이터 저장소)**에 넣습니다. 두 가지 방법이 있습니다. Cloud Storage (GCS) 경유: JSONL 파일을 Google Cloud Storage 버킷에 업로드하고, Vertex AI 콘솔에서 해당 버킷을 바라보게 설정합니다. (가장 쉬움) Discovery Engine API 직접 호출: 실시간성이 중요하다면, 코드를 짜서 Discovery Engine API의 userEvents:write 또는 documents:import 메서드를 통해 데이터를 직접 밀어넣습니다.
  3. 대안: 타사 ETL 도구 활용 (No-Code 접근) 개발 리소스를 줄이고 싶다면 Airbyte나 Fivetran 같은 데이터 파이프라인 도구를 사용할 수 있습니다. 방식: [Notion] -> Airbyte(커넥터) -> [Google BigQuery] -> [Vertex AI Search] 장점: Notion API를 직접 코딩하지 않아도 데이터를 주기적으로 동기화할 수 있습니다. Vertex AI는 BigQuery에 있는 데이터를 바로 소스로 사용할 수 있습니다.
  4. Vertex AI를 통한 활용 (결과물) 위 과정을 통해 데이터가 Vertex AI에 색인(Indexing)되면 다음과 같은 작업이 가능합니다. 시맨틱 검색 (Semantic Search): 키워드가 정확히 일치하지 않아도, 문맥을 이해하여 Notion 내의 관련 문서를 찾아줍니다. 요약 및 답변 생성: "이번 달 마케팅 회의록 요약해 줘"라고 물으면, Notion의 회의록 내용을 읽고 LLM(Gemini)이 답변을 생성합니다. 출처 표기: 답변과 함께 해당 정보가 있는 Notion 페이지 링크를 제공할 수 있습니다. 요약 표 구분 API 직접 개발 (Custom) ETL 도구 활용 (BigQuery) 난이도 높음 (Python 등 코딩 필요) 중간 (설정 위주) 실시간성 높음 (API 호출 즉시 반영 가능) 보통 (스케줄링 주기에 따름) 비용 API 호출 비용 + GCS 비용 도구 라이선스 비용 + BigQuery 비용 추천 대상 정교한 전처리가 필요한 경우 빠른 구축과 유지보수 편의성 중시

제가 사용자를 위해 할 수 있는 다음 단계: 현재 Notion 데이터의 양이 어느 정도인지, 혹은 개발자(엔지니어)가 직접 API 코딩이 가능한 상황인지 알려주시면, "Python을 사용한 Notion to Vertex AI 데이터 파이프라인 예제 코드" 구조를 잡아드릴까요?