이 문서에서는 Dataflow를 사용하여 PostgreSQL용 AlloyDB 추출, 변환, 로드 (ETL) 파이프라인을 만드는 방법을 보여줍니다. Google Cloud Dataflow는 데이터 처리 파이프라인을 개발하고 실행하기 위한 완전 관리형 Google Cloud 서비스입니다.
Python을 사용하여 basic_ingestion_pipeline.py
수집 파이프라인을 만드는 Apache Beam 및 AlloyDB를 사용한 벡터 임베딩 수집 Colab을 기반으로 하는 문서의 안내를 사용할 수 있습니다. 이 문서의 정보를 적용할 수 있는 사용 사례로는 시맨틱 검색 또는 검색 증강 생성 (RAG)이 있습니다.
이 안내에서는 다음 Dataflow 파이프라인 구성요소를 설명합니다.
- AlloyDB 및 Dataflow 연결 설정
- Apache Beam
VertexAITextEmbeddings
핸들러와 Vertex AI 텍스트 임베딩 모델을 사용하여 PostgreSQL용 AlloyDB에서 임베딩 생성 - Dataflow에서 스트리밍 파이프라인 만들기
시작하기 전에
Colab을 사용하여 Dataflow 파이프라인을 만들기 전에 다음 기본 요건을 완료하세요.
- Dataflow 파이프라인을 만들도록 환경을 구성합니다.
PostgreSQL용 AlloyDB 및 기타 필수 API를 사용 설정합니다.
gcloud services enable alloydb.googleapis.com cloudresourcemanager.googleapis.com \ servicenetworking.googleapis.com
Dataflow 사용자 계정에 AlloyDB 관리자 (roles/alloydb.admin) 역할을 부여합니다.
PostgreSQL용 AlloyDB 인스턴스 및 파이프라인 구성요소 설정
먼저 PostgreSQL용 AlloyDB 인스턴스에 연결하도록 파이프라인을 구성합니다. 이 구성에는 AlloyDB 언어 커넥터를 사용하여 연결하기 위한 Google Cloud 프로젝트 ID, PostgreSQL용 AlloyDB 인스턴스 URI, 사용자, 비밀번호 정의가 포함됩니다. 연결 설정에 대한 자세한 내용은 데이터베이스 설정을 참고하세요.
검색 증강 생성 (RAG) 전용 Apache Beam 모듈은 다음 작업의 클래스를 제공합니다.
- PostgreSQL용 AlloyDB에서 데이터 수집
- 임베딩 생성
- 이러한 벡터 임베딩을 PostgreSQL용 AlloyDB에 다시 작성
파이프라인 로직을 빌드하기 전에 필요한 클래스를 파이프라인 코드에 가져옵니다. 파이프라인 구성요소에 대한 자세한 내용은 파이프라인 구성요소 가져오기를 참고하세요.
샘플 데이터 만들기
Apache Beam 및 AlloyDB를 사용한 벡터 임베딩 수집 Colab에서는 파이프라인을 실행하기 위한 샘플 products_data
데이터를 제공합니다. 파이프라인은 이 샘플 데이터를 임베딩 모델과 함께 입력으로 사용하여 임베딩을 생성합니다.
자세한 내용은 샘플 데이터 만들기를 참고하세요.
임베딩을 저장할 테이블 만들기
파이프라인은 생성된 삽입을 default_dataflow_product_embeddings
테이블에 저장합니다. 테이블 스키마 만들기에 대한 자세한 내용은 기본 스키마로 테이블 만들기를 참고하세요.
선택사항: 임베딩 수집을 위한 데이터 준비
데이터 세트를 기반으로 임베딩 모델이 임베딩으로 변환해야 하는 메타데이터와 텍스트로 데이터를 분할할 수 있습니다. MLTransform()
및 VectorDatabaseWriteTransform()
클래스는 임베딩 모델이 지원하는 크기로 입력 데이터를 처리합니다. 사용 중인 삽입 모델의 사양에 따라 메타데이터를 포함하고 입력 데이터를 포맷합니다.
데이터 준비에 대한 자세한 내용은 제품 데이터를 청크에 매핑하기를 참고하세요.
임베딩을 생성하도록 임베딩 핸들러 구성
VertexAITextEmbeddings()
클래스는 벡터 임베딩을 만드는 텍스트 임베딩 모델을 정의합니다. 이 임베딩 모델은 청크로 나눈 데이터를 임베딩으로 변환합니다.
자세한 내용은 삽입 핸들러 구성을 참고하세요.
Huggingface SentenceTransformers 프레임워크로 생성된 사전 학습된 모델을 사용하여 벡터 임베딩을 생성할 수도 있습니다. 자세한 내용은 HuggingFace로 임베딩 생성을 참고하세요.
수집 파이프라인 만들기
Apache Beam 및 AlloyDB를 사용한 벡터 삽입 수집 Colab에 제공된 basic_ingestion_pipeline.py
파이프라인은 PostgreSQL용 AlloyDB 설정, PostgreSQL용 AlloyDB에 데이터 로드, 선택적 데이터 청킹, 삽입 핸들러 구성 등 이전 섹션의 구성을 통합합니다.
수집 파이프라인은 다음 작업을 실행합니다.
- 제품 데이터 테이블을 만듭니다.
- 데이터를 청크로 변환합니다.
- 임베딩을 생성합니다.
- 변환된 임베딩을 PostgreSQL용 AlloyDB의
products_data
테이블에 씁니다.
직접 로컬 실행기 또는 Dataflow와 같은 클라우드 기반 실행기를 사용하여 이 파이프라인을 실행할 수 있습니다.
수집 파이프라인을 만드는 방법에 대한 자세한 내용은 파이프라인을 Python 파일에 저장을 참고하세요.
Dataflow 파이프라인 실행
명령줄에서 Dataflow 파이프라인을 실행할 수 있습니다. 프로젝트 ID, PostgreSQL용 AlloyDB 연결 세부정보, Cloud Storage 버킷 위치, 실행 환경 세부정보, 네트워크 정보, 수집 파이프라인 이름 (basic_ingestion_pipeline.py
)과 같은 사용자 인증 정보를 전달합니다.
Apache Beam 및 AlloyDB를 사용한 벡터 임베딩 수집 Colab에서는 PostgreSQL용 AlloyDB 인스턴스와 Dataflow 작업이 동일한 VPC 네트워크 및 서브넷에서 실행됩니다.
Dataflow에서 파이프라인을 실행하는 방법에 대한 자세한 내용은 Dataflow에서 파이프라인 실행을 참고하세요.
Google Cloud 콘솔의 Dataflow 대시보드에서 파이프라인이 실행되는 동안 실행 그래프, 로그, 측정항목을 볼 수 있습니다.
선택사항: 스트리밍 Dataflow 파이프라인 실행
유사성 검색이나 추천 엔진과 같이 자주 변경될 것으로 예상되는 데이터의 경우 Dataflow 및 Pub/Sub를 사용하여 스트리밍 파이프라인을 만드는 것이 좋습니다.
이 파이프라인은 데이터 배치를 처리하는 대신 Pub/Sub 주제에서 수신되는 메시지를 지속적으로 읽고, 메시지를 청크로 변환하고, 지정된 모델 (예: Hugging Face 또는 Vertex AI)을 사용하여 임베딩을 생성하고, AlloyDB for PostgreSQL 테이블을 업데이트합니다.
자세한 내용은 Pub/Sub에서 임베딩 업데이트 스트리밍을 참고하세요.
PostgreSQL용 AlloyDB에서 벡터 임베딩 확인
파이프라인이 실행된 후 파이프라인이 PostgreSQL용 AlloyDB 데이터베이스에 삽입을 썼는지 확인합니다.
자세한 내용은 작성된 임베딩 확인을 참고하세요.