AlloyDB는 고성능, 원활한 통합 및 인상적인 확장성을 제공하는 완전 관리형 관계형 데이터베이스 서비스입니다. AlloyDB는 PostgreSQL과 100% 호환됩니다. AlloyDB의 LangChain 통합을 활용하여 AI 기반 경험을 구축하도록 데이터베이스 애플리케이션을 확장하세요.
이 노트북은 AlloyDB for PostgreSQL을 사용하여 AlloyDBLoader 클래스로 Document를 로드하는 방법을 다룹니다. GitHub에서 패키지에 대해 자세히 알아보세요. Open In Colab

시작하기 전에

이 노트북을 실행하려면 다음을 수행해야 합니다:

🦜🔗 라이브러리 설치

통합 라이브러리인 langchain-google-alloydb-pg를 설치합니다.
pip install -qU  langchain-google-alloydb-pg
Colab 전용: 다음 셀의 주석을 해제하여 커널을 재시작하거나 버튼을 사용하여 커널을 재시작하세요. Vertex AI Workbench의 경우 상단의 버튼을 사용하여 터미널을 재시작할 수 있습니다.
# # Automatically restart kernel after installs so that your environment can access the new packages
# import IPython

# app = IPython.Application.instance()
# app.kernel.do_shutdown(True)

🔐 인증

이 노트북에 로그인한 IAM 사용자로 Google Cloud에 인증하여 Google Cloud Project에 액세스하세요.
  • Colab을 사용하여 이 노트북을 실행하는 경우 아래 셀을 사용하고 계속 진행하세요.
  • Vertex AI Workbench를 사용하는 경우 여기에서 설정 지침을 확인하세요.
from google.colab import auth

auth.authenticate_user()

☁ Google Cloud Project 설정

이 노트북 내에서 Google Cloud 리소스를 활용할 수 있도록 Google Cloud 프로젝트를 설정하세요. 프로젝트 ID를 모르는 경우 다음을 시도해보세요:
  • gcloud config list를 실행하세요.
  • gcloud projects list를 실행하세요.
  • 지원 페이지를 참조하세요: 프로젝트 ID 찾기.
# @title Project { display-mode: "form" }
PROJECT_ID = "gcp_project_id"  # @param {type:"string"}

# Set the project id
! gcloud config set project {PROJECT_ID}

기본 사용법

AlloyDB 데이터베이스 변수 설정

AlloyDB Instances 페이지에서 데이터베이스 값을 찾으세요.
# @title Set Your Values Here { display-mode: "form" }
REGION = "us-central1"  # @param {type: "string"}
CLUSTER = "my-cluster"  # @param {type: "string"}
INSTANCE = "my-primary"  # @param {type: "string"}
DATABASE = "my-database"  # @param {type: "string"}
TABLE_NAME = "vector_store"  # @param {type: "string"}

AlloyDBEngine Connection Pool

AlloyDB를 vector store로 설정하기 위한 요구 사항 및 인수 중 하나는 AlloyDBEngine 객체입니다. AlloyDBEngine은 AlloyDB 데이터베이스에 대한 connection pool을 구성하여 애플리케이션에서 성공적인 연결을 가능하게 하고 업계 모범 사례를 따릅니다. AlloyDBEngine.from_instance()를 사용하여 AlloyDBEngine을 생성하려면 다음 5가지만 제공하면 됩니다:
  1. project_id : AlloyDB 인스턴스가 위치한 Google Cloud Project의 Project ID.
  2. region : AlloyDB 인스턴스가 위치한 Region.
  3. cluster: AlloyDB 클러스터의 이름.
  4. instance : AlloyDB 인스턴스의 이름.
  5. database : AlloyDB 인스턴스에서 연결할 데이터베이스의 이름.
기본적으로 IAM 데이터베이스 인증이 데이터베이스 인증 방법으로 사용됩니다. 이 라이브러리는 환경에서 가져온 Application Default Credentials (ADC)에 속한 IAM principal을 사용합니다. 선택적으로, 사용자 이름과 비밀번호를 사용하여 AlloyDB 데이터베이스에 액세스하는 기본 제공 데이터베이스 인증도 사용할 수 있습니다. AlloyDBEngine.from_instance()에 선택적 userpassword 인수를 제공하기만 하면 됩니다:
  • user : 기본 제공 데이터베이스 인증 및 로그인에 사용할 데이터베이스 사용자
  • password : 기본 제공 데이터베이스 인증 및 로그인에 사용할 데이터베이스 비밀번호.
참고: 이 튜토리얼은 async 인터페이스를 보여줍니다. 모든 async 메서드에는 해당하는 sync 메서드가 있습니다.
from langchain_google_alloydb_pg import AlloyDBEngine

engine = await AlloyDBEngine.afrom_instance(
    project_id=PROJECT_ID,
    region=REGION,
    cluster=CLUSTER,
    instance=INSTANCE,
    database=DATABASE,
)

AlloyDBLoader 생성

from langchain_google_alloydb_pg import AlloyDBLoader

# Creating a basic AlloyDBLoader object
loader = await AlloyDBLoader.create(engine, table_name=TABLE_NAME)

기본 테이블을 통해 Document 로드

loader는 첫 번째 열을 page_content로, 다른 모든 열을 metadata로 사용하여 테이블에서 Document 목록을 반환합니다. 기본 테이블은 첫 번째 열을 page_content로, 두 번째 열을 metadata(JSON)로 갖습니다. 각 행은 하나의 document가 됩니다.
docs = await loader.aload()
print(docs)

사용자 정의 테이블/metadata 또는 사용자 정의 page content 열을 통해 document 로드

loader = await AlloyDBLoader.create(
    engine,
    table_name=TABLE_NAME,
    content_columns=["product_name"],  # Optional
    metadata_columns=["id"],  # Optional
)
docs = await loader.aload()
print(docs)

page content 형식 설정

loader는 Document 목록을 반환하며, 행당 하나의 document로, page content는 지정된 문자열 형식(예: text(공백으로 구분된 연결), JSON, YAML, CSV 등)으로 제공됩니다. JSON 및 YAML 형식에는 헤더가 포함되지만 text 및 CSV에는 필드 헤더가 포함되지 않습니다.
loader = AlloyDBLoader.create(
    engine,
    table_name="products",
    content_columns=["product_name", "description"],
    format="YAML",
)
docs = await loader.aload()
print(docs)

Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.
I