Google Cloud SQL for PostgreSQL 통합

Google Cloud SQL for PostgreSQL 통합

LangChain JavaScript로 Google Cloud SQL for PostgreSQL 문서 로더와 통합하는 방법을 안내할게요.

출처: 문서

본문

Cloud SQL은 높은 성능, 원활한 통합, 인상적인 확장성을 제공하는 완전 관리형 관계형 데이터베이스 서비스로, PostgreSQL과 같은 데이터베이스 엔진을 제공해요.

이 가이드는 PostgresLoader 클래스로 Cloud SQL for PostgreSQL을 사용해 Documents를 로드하는 방법에 대한 빠른 개요를 제공해요.

개요

시작하기 전에

이 패키지를 사용하려면 먼저 다음 단계를 거쳐야 해요:

  1. Cloud Platform 프로젝트를 선택하거나 생성하세요.
  2. 프로젝트에 대한 결제를 활성화하세요.
  3. Cloud SQL Admin API를 활성화하세요.
  4. 인증을 설정하세요.
  5. CloudSQL 인스턴스를 생성하세요
  6. CloudSQL 데이터베이스를 생성하세요
  7. 데이터베이스에 사용자를 추가하세요

인증

gcloud auth login 명령으로 Google Cloud 계정에 로컬로 인증하세요.

Google Cloud 프로젝트 설정

Google Cloud 리소스를 로컬에서 활용하려면 Google Cloud 프로젝트 ID를 설정하세요:

gcloud config set project YOUR-PROJECT-ID

프로젝트 ID를 모른다면 다음을 시도해 보세요:

PostgresLoader 인스턴스 설정

PostgresLoader 클래스를 사용하려면 @langchain/google-cloud-sql-pg 패키지를 설치한 뒤 아래 단계를 따라야 해요.

```bash npm theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}} npm install @langchain/google-cloud-sql-pg @langchain/core ```
yarn add @langchain/google-cloud-sql-pg @langchain/core
pnpm add @langchain/google-cloud-sql-pg @langchain/core

먼저 Google Cloud 계정에 로그인하고 Google Cloud 프로젝트에 따라 다음 환경 변수를 설정해야 해요; 이 변수들은 PostgresEngine 인스턴스를 어떻게 구성할지(fromInstance, fromEngine, fromEngineArgs)에 따라 정의돼요:

PROJECT_ID="your-project-id"
REGION="your-project-region" // example: "us-central1"
INSTANCE_NAME="your-instance"
DB_NAME="your-database-name"
DB_USER="your-database-user"
PASSWORD="your-database-password"

인스턴스 설정

PostgresLoader를 인스턴스화하려면 먼저 PostgresEngine을 통해 데이터베이스 연결을 만들어야 해요.

import {
  PostgresLoader,
  PostgresEngine,
  PostgresEngineArgs,
  type PostgresLoaderOptions,
} from "@langchain/google-cloud-sql-pg";
import * as dotenv from "dotenv";

dotenv.config();

const peArgs: PostgresEngineArgs = {
  user: process.env.DB_USER ?? "",
  password: process.env.PASSWORD ?? "",
};

// PostgresEngine instantiation
const engine: PostgresEngine = await PostgresEngine.fromInstance(
  process.env.PROJECT_ID ?? "",
  process.env.REGION ?? "",
  process.env.INSTANCE_NAME ?? "",
  process.env.DB_NAME ?? "",
  peArgs
);

table_name 인자를 사용해 문서 로드

로더는 첫 번째 열을 page_content로, 다른 모든 열을 메타데이터로 사용해 테이블에서 Documents 목록을 반환해요. 기본 테이블은 첫 번째 열을 page_content로, 두 번째 열을 메타데이터(JSON)로 가져요. 각 행이 하나의 문서가 돼요.

const documentLoaderArgs: PostgresLoaderOptions = {
  tableName: "test_table_custom",
  contentColumns: ["fruit_name", "variety"],
  metadataColumns: [
    "fruit_id",
    "quantity_in_stock",
    "price_per_unit",
    "organic",
  ],
  format: "text",
};

const documentLoaderInstance = await PostgresLoader.initialize(
  engine,
  documentLoaderArgs
);

SQL 쿼리를 사용해 문서 로드

query 매개변수는 사용자가 데이터베이스에서 특정 문서를 로드하기 위해 필터를 포함할 수 있는 커스텀 SQL 쿼리를 지정할 수 있게 해줘요.

const documentLoaderArgs: PostgresLoaderOptions = {
  query: "SELECT * FROM my_fruit_table",
  contentColumns: ["fruit_name", "variety"],
  metadataColumns: [
    "fruit_id",
    "quantity_in_stock",
    "price_per_unit",
    "organic",
  ],
  format: "text",
};

const documentLoaderInstance = await PostgresLoader.initialize(
  engine,
  documentLoaderArgs
);

페이지 콘텐츠 형식 설정

로더는 행당 하나의 문서로, 지정된 문자열 형식(예: text(공백으로 구분된 연결), JSON, YAML, CSV 등)의 페이지 콘텐츠를 가진 Documents 목록을 반환해요. JSON과 YAML 형식은 헤더를 포함하고, text와 CSV는 필드 헤더를 포함하지 않아요.


[Connect these docs](/use-these-docs) to Claude, VSCode, and more via MCP for real-time answers. [Edit this page on GitHub](https://github.com/langchain-ai/docs/edit/main/src/oss/javascript/integrations/document_loaders/web_loaders/google_cloudsql_pg.mdx) or [file an issue](https://github.com/langchain-ai/docs/issues/new/choose).

더 알아보기