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를 로드하는 방법에 대한 빠른 개요를 제공해요.
개요
시작하기 전에
이 패키지를 사용하려면 먼저 다음 단계를 거쳐야 해요:
- Cloud Platform 프로젝트를 선택하거나 생성하세요.
- 프로젝트에 대한 결제를 활성화하세요.
- Cloud SQL Admin API를 활성화하세요.
- 인증을 설정하세요.
- CloudSQL 인스턴스를 생성하세요
- CloudSQL 데이터베이스를 생성하세요
- 데이터베이스에 사용자를 추가하세요
인증
gcloud auth login 명령으로 Google Cloud 계정에 로컬로 인증하세요.
Google Cloud 프로젝트 설정
Google Cloud 리소스를 로컬에서 활용하려면 Google Cloud 프로젝트 ID를 설정하세요:
gcloud config set project YOUR-PROJECT-ID
프로젝트 ID를 모른다면 다음을 시도해 보세요:
gcloud config list실행.gcloud projects list실행.- 지원 페이지 참고: 프로젝트 ID 찾기.
PostgresLoader 인스턴스 설정
PostgresLoader 클래스를 사용하려면 @langchain/google-cloud-sql-pg 패키지를 설치한 뒤 아래 단계를 따라야 해요.
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는 필드 헤더를 포함하지 않아요.
더 알아보기
- 이 문서를 MCP로 연결하면 Claude, VSCode 등에서 실시간 답변을 받을 수 있어요.
- GitHub에서 이 페이지 편집하기 또는 이슈 제출하기.