>웹 프론트엔드 >JS 튜토리얼 >도커 컨테이너에 pgVector를 사용하여 PostgreSQL 설정

도커 컨테이너에 pgVector를 사용하여 PostgreSQL 설정

Susan Sarandon
Susan Sarandon원래의
2024-12-02 17:07:12812검색

Setup PostgreSQL w/ pgvector in a docker container

이 게시물은 docker에서 로컬 MySQL 인스턴스를 설정하는 방법에 대한 이전 게시물의 후속 게시물입니다.

RAG(Retrieval Augmented Generation)는 빠르게 AI 앱의 'Hello World'로 자리잡고 있습니다. 대규모 언어 모델을 사용하거나 작업하는 경우 어느 시점에서는 의심할 바 없이 RAG 파이프라인을 생성해야 합니다. RAG의 중요한 구성 요소는 벡터 데이터베이스이며 인기 있는 옵션은 Postgres용 오픈 소스 벡터 유사성 검색인 pgVector입니다. Docker 컨테이너에서 로컬 인스턴스를 빠르게 설정하는 방법은 다음과 같습니다.

이미지를 가져와서 실행하세요.

Docker 저장소에서 최신 이미지를 가져옵니다. 17을 원하는 Postgres 서버 버전으로 바꾸세요.

docker pull pgvector/pgvector:pg17

이미지를 실행하고, 루트 사용자 비밀번호를 설정하고, 기본 Postgres 포트를 노출합니다.

docker run -d --name <container_name> -e POSTGRES_PASSWORD=postgres -p 5432:5432 pgvector/pgvector:pg17

컨테이너 내부에 DB 생성

Postgres 서버가 실행 중인 상태에서 컨테이너 내부에 데이터베이스를 생성합니다.

docker exec -it <container_name> createdb -U postgres <database_name>

데이터베이스에 연결

이제 애플리케이션에서 데이터베이스에 연결하고 pgVector 확장을 초기화할 수 있습니다. 저는 JavaScript를 사용하겠습니다. 전체 애플리케이션 설정은 이 게시물의 범위를 벗어나지만 몇 가지 종속성을 설치해야 합니다.

pnpm add pg pgvector

귀하의 환경에 DATABASE_URL을 설정하세요. .env 파일을 사용합니다. 다음 형식을 따라야 합니다.

DATABASE_URL=postgresql://<pg_user>:<pg_password>@localhost:5432/<database_name>

로컬 개발의 경우 @localhost를 사용하지만 docker-compose.yml과 같은 것을 사용하고 서비스 이름을 지정한 경우 서비스 이름을 사용해야 합니다. @db.

애플리케이션 코드에서 연결을 생성합니다.

const pool = new pg.Pool({
  connectionString: process.env.DATABASE_URL,
});

그런 다음 pgVector를 초기화하고 새 테이블을 만듭니다.

async function createStore() {
  // Initialize pgvector extension and create table if not exists
  await pool.query('CREATE EXTENSION IF NOT EXISTS vector');

  return {
    vectorStore: await PGVectorStore.initialize(embeddings, {
      postgresConnectionOptions: {
        connectionString: process.env.DATABASE_URL,
      },
      tableName: 'documents', // Default table name
    }),
  };
}

VectorStore 설정에서는 vectorStore.addDocuments를 사용하여 콘텐츠를 추가하고 vectorStore.similaritySearch를 사용하여 컨텍스트를 쿼리할 수 있습니다.

이번 포스팅은 여기까지입니다. 아마도 다음번에는 pgVector의 보다 구체적인 용도 및/또는 Drizzle ORM과 함께 사용하는 방법을 살펴보겠습니다! ?

위 내용은 도커 컨테이너에 pgVector를 사용하여 PostgreSQL 설정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.