인간 시대의 끝이 도래했다

[RAG] SpringBoot + postgreSQL(pgvector) + OpenAI - 3 : SpringBoot 프로젝트 생성 및 pgvector 연결

221B0825 2025. 1. 22. 13:12

📝 프로젝트 생성

PostgreSQL과 Docker Desktop 설치가 완료되었다면 이제 SpringBoot 프로젝트를 하나 생성합니다. 아래 링크에 접속해서 다음과 같이 Dependencies를 추가합니다.

https://start.spring.io/

필요한 Dependency 추가

 

기본 Maven, 언어는 Java 선택 후 SpringBoot 버전은 3.4.1 선택한 후 Java 버전은 17로 지정해주었습니다.

추가해줄 Dependency들은 아래와 같습니다.

Dependencies

  • Spring Web
  • JDBC API
  • PostgreSQL Driver
  • PGvector Vector Database
  • Spring Data JPA
  • Docker compose Support

위와 같이 모두 추가한 후 Generate 버튼을 클릭해서 다운로드받은 후, IDE로 열어줍니다. (Intellij IDE 사용)

파일 구조는 아래와 같이 구성됩니다.

:C .
│  .gitattributes
│  .gitignore
│  compose.yaml
│  HELP.md
│  mvnw
│  mvnw.cmd
│  pom.xml
│
├─.idea
│      .gitignore
│      compiler.xml
│      encodings.xml
│      jarRepositories.xml
│      misc.xml
│      workspace.xml
│
├─.mvn
│  └─wrapper
│          maven-wrapper.properties
│
└─src
    ├─main
    │  ├─java
    │  │  └─com
    │  │      └─example
    │  │          └─spring_vectordb
    │  │                  SpringVectordbApplication.java
    │  │
    │  └─resources
    │      │  application.properties
    │      │
    │      ├─static
    │      └─templates
    └─test
        └─java
            └─com
                └─example
                    └─spring_vectordb
                            SpringVectordbApplicationTests.java

 

IDE로 프로젝트를 연 후 application.properties 파일을 선택하여 우클릭 > refactor > rename 으로 들어가서 파일 형식을 properties가 아닌 yml 로 변경합니다. 기존에 properties 형식으로 작성되어 있던 코드를 지우고 spring을 입력하면 자동 완성으로 name을 지정할 수 있습니다.

intellij 자동완성

 

기존의 application name과 ai, docker 설정을 위해 다음과 같이 작성합니다.

🍃 application.yml 

spring:
  application:
    name: spring_vectordb
  datasource:
    url: jdbc:postgresql://localhost:5432/${DB_NAME}
    username: ${DB_USERNAME}
    password: ${DB_PASSWORD}
  ai:
    openai:
      api-key: ${OPENAI_API_KEY}
      chat:
        options:
          model: gpt-4o-mini
    vectorstore:
      pgvector:
        index-type: hnsw
        distance-type: cosine_distance
        dimensions: 1536
  config:
    import: optional:file:.env[.properties]

 

${} 안의 값은  .env 파일에 저장된 값을 불러오도록 되어 있습니다. 프로젝트의 최상단에서 New > File 을 선택하여 .env 파일을 생성하고 아래와 같은 형식으로 값을 저장합니다.

🔐 .env

OPENAI_API_KEY=::::
DB_NAME=spring_vector
DB_USERNAME=postgres
DB_PASSWORD=::::

 

실제로는 콜론을 제외하고 실제 OpenAI API 키 값, 사용할 DB의 이름, DB 사용자 이름, DB 사용자의 비밀번호 값을 입력하면 됩니다. 기본적으로 DB_USERNAMEpostgres, DB_PASSWORDPostgreSQL 설치 시 지정했던 비밀번호 값을 입력하여 사용해도 됩니다. DB_NAME 값은 생성할 DB 이름을 작성하면 됩니다. 저는 spring_vector라는 이름으로 DB를 생성할 예정입니다.

 

위와 같은 프로젝트 구조와 .env 파일이 완성되었다면 이제 Docker를 위한 compose.yaml 파일을 수정해야 합니다.

기본적으로 프로젝트를 생성했을 때 작성되어 있는 compose.yaml은 다음과 같습니다.

 

변경 전 기본 🐳 compose.yaml

services:
  pgvector:
    image: 'pgvector/pgvector:pg16'
    environment:
      - 'POSTGRES_DB=mydatabase'
      - 'POSTGRES_PASSWORD=secret'
      - 'POSTGRES_USER=myuser'
    labels:
      - "org.springframework.boot.service-connection=postgres"
    ports:
      - '5432'

 

위 코드에서 POSTGRES_DB, PASSWORD, USER 값을 .env 파일에 작성한 값을 적용하고자 다음과 같이 설정합니다.

변경  후 🐳 compose.yaml

services:
  pgvector:
    image: 'pgvector/pgvector:pg16'
    environment:
      - POSTGRES_DB=${DB_NAME}
      - POSTGRES_USER=${DB_USERNAME}
      - POSTGRES_PASSWORD=${DB_PASSWORD}
    labels:
      - "org.springframework.boot.service-connection=postgres"
    ports:
      - '5432'

 

application.yaml 파일과 동일하게 ${} 로 값을 감싸줍니다.

 

추가적으로 OpenAI Dependency를 추가하기 위해 pom.xml 파일을 열어서, <dependencies> 시작 태그 부분의 Add Starters ... 버튼을 클릭합니다. 검색창에 OpenAI를 입력하여 체크박스 선택, OK 버튼을 클릭하여 적용합니다.

 

만약 intellij가 아니라면, pom.xml 파일 내부에서 <dependencies> 태그 내부에 새롭게 아래 코드를 붙여 사용합니다.

<dependency>
	<groupId>org.springframework.ai</groupId>
	<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>

 

추가로, SpringAI의 pdf reader를 가져오기 위해 아래와 같은 코드를 붙여 사용합니다.

<dependency>
	<groupId>org.springframework.ai</groupId>
	<artifactId>spring-ai-pdf-document-reader</artifactId>
</dependency>

 

이후 Maven reload를 진행합니다. intellij에서는 pom.xml에 변경사항이 있을 경우 maven아이콘이 뜹니다.

사진과 같이 오른쪽에 뜬 reload maven 아이콘을 클릭하면 pom.xml이 로드됩니다. 바뀐 pom.xml이 잘 적용되었다면, 이제 사용할 DB를 생성해야 합니다.

 


📂 Database 생성

잠시 SpringBoot 프로젝트를 내려두고, Windows 검색에서 psql을 입력하여 SQL Shell을 실행합니다.

위 앱을 실행할 경우 다음과 같은 입력을 진행해야 합니다.

기본값 사용 후 암호 입력

이 Shell에서 현재 Server, Database, Port, Username은 기본값을 사용할 예정이므로, 전부 Enter 키로 넘어갑니다. 이후 사용자의 암호를 입력받는 란에서, 아무것도 쓰여지지 않더라도 설치 시 설정했던 비밀번호를 알맞게 입력 후 Enter 키 입력 시 postgres 유저로 접속이 완료됩니다.

postgres 유저로 접속 완료

 

여기서 spring_vector 라는 이름의, .env 파일에서 지정했던 DB_NAME값과 같은 이름의 Database 하나를 생성합니다.

spring_vector DB 생성

 

CREATE DATABASE spring_vector

 

위 명령어를 입력했을 때, CREATE DATABASE 라는 메시지가 출력됐다면 정상적으로 DB 생성이 완료된 것입니다. 생성된 DB는 pgAdmin 4에서 확인할 수 있습니다.

pgAmdin 4 실행 화면

pgAdmin 4를 실행하여 오른쪽 목록에 있는 Servers를 클릭하고, 기본적으로 연결되는 서버인 PostgreSQL 17에 접속할 수 있습니다. 서버 접속을 위해서는 설치 시 지정했던 비밀번호를 입력해야 합니다.

Connect to Server

위와 같은 팝업창에서 비밀번호를 입력하면 접속하여 Dashboard를 확인할 수 있습니다.

spring_vector 연결 완료

이후 Databases 목록에서 기본 DB인 postgres 아래에 새로 생성한 DB인 spring_vector를 확인할 수 있습니다. 만일 연결이 되지 않은 아이콘으로 보이더라도, 클릭하면 자동으로 연결됩니다.


🚩프로젝트 실행

다시 돌아가서, SpringBoot 프로젝트를 Run 하면 Docker compose 파일이 실행되면서 vectordb-pgvector 이미지가 pull 받아집니다. 정상 실행이 됐다면, Docker Desktop에서 실행되고 있는 Container와 image를 확인할 수 있습니다.

실행되고 있는 pgvector-1

이후 PDF 파일을 vectorDB에 업로드하고, OpenAI API를 사용해보겠습니다.

 

📌참고용 실행 Console

"C:\Users\Eunseo Yu\.jdks\corretto-17.0.13\bin\java.exe" -XX:TieredStopAtLevel=1 -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-Dmanagement.endpoints.jmx.exposure.include=*" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2024.3.1.1\lib\idea_rt.jar=53233:C:\Program Files\JetBrains\IntelliJ IDEA 2024.3.1.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\Eunseo Yu\IdeaProjects\spring_vectordb\target\classes;C:\Users\Eunseo Yu\.m2\repository\org\springframework\boot\spring-boot-starter-data-jpa\3.4.3\spring-boot-starter-data-jpa-3.4.3.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\boot\spring-boot-starter\3.4.3\spring-boot-starter-3.4.3.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\3.4.3\spring-boot-autoconfigure-3.4.3.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\boot\spring-boot-starter-logging\3.4.3\spring-boot-starter-logging-3.4.3.jar;C:\Users\Eunseo Yu\.m2\repository\ch\qos\logback\logback-classic\1.5.16\logback-classic-1.5.16.jar;C:\Users\Eunseo Yu\.m2\repository\ch\qos\logback\logback-core\1.5.16\logback-core-1.5.16.jar;C:\Users\Eunseo Yu\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.24.3\log4j-to-slf4j-2.24.3.jar;C:\Users\Eunseo Yu\.m2\repository\org\apache\logging\log4j\log4j-api\2.24.3\log4j-api-2.24.3.jar;C:\Users\Eunseo Yu\.m2\repository\org\slf4j\jul-to-slf4j\2.0.16\jul-to-slf4j-2.0.16.jar;C:\Users\Eunseo Yu\.m2\repository\jakarta\annotation\jakarta.annotation-api\2.1.1\jakarta.annotation-api-2.1.1.jar;C:\Users\Eunseo Yu\.m2\repository\org\yaml\snakeyaml\2.3\snakeyaml-2.3.jar;C:\Users\Eunseo Yu\.m2\repository\org\hibernate\orm\hibernate-core\6.6.8.Final\hibernate-core-6.6.8.Final.jar;C:\Users\Eunseo Yu\.m2\repository\jakarta\persistence\jakarta.persistence-api\3.1.0\jakarta.persistence-api-3.1.0.jar;C:\Users\Eunseo Yu\.m2\repository\jakarta\transaction\jakarta.transaction-api\2.0.1\jakarta.transaction-api-2.0.1.jar;C:\Users\Eunseo Yu\.m2\repository\org\jboss\logging\jboss-logging\3.6.1.Final\jboss-logging-3.6.1.Final.jar;C:\Users\Eunseo Yu\.m2\repository\org\hibernate\common\hibernate-commons-annotations\7.0.3.Final\hibernate-commons-annotations-7.0.3.Final.jar;C:\Users\Eunseo Yu\.m2\repository\io\smallrye\jandex\3.2.0\jandex-3.2.0.jar;C:\Users\Eunseo Yu\.m2\repository\com\fasterxml\classmate\1.7.0\classmate-1.7.0.jar;C:\Users\Eunseo Yu\.m2\repository\net\bytebuddy\byte-buddy\1.15.11\byte-buddy-1.15.11.jar;C:\Users\Eunseo Yu\.m2\repository\org\glassfish\jaxb\jaxb-runtime\4.0.5\jaxb-runtime-4.0.5.jar;C:\Users\Eunseo Yu\.m2\repository\org\glassfish\jaxb\jaxb-core\4.0.5\jaxb-core-4.0.5.jar;C:\Users\Eunseo Yu\.m2\repository\org\eclipse\angus\angus-activation\2.0.2\angus-activation-2.0.2.jar;C:\Users\Eunseo Yu\.m2\repository\org\glassfish\jaxb\txw2\4.0.5\txw2-4.0.5.jar;C:\Users\Eunseo Yu\.m2\repository\com\sun\istack\istack-commons-runtime\4.1.2\istack-commons-runtime-4.1.2.jar;C:\Users\Eunseo Yu\.m2\repository\jakarta\inject\jakarta.inject-api\2.0.1\jakarta.inject-api-2.0.1.jar;C:\Users\Eunseo Yu\.m2\repository\org\antlr\antlr4-runtime\4.13.0\antlr4-runtime-4.13.0.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\data\spring-data-jpa\3.4.3\spring-data-jpa-3.4.3.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\data\spring-data-commons\3.4.3\spring-data-commons-3.4.3.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\spring-orm\6.2.3\spring-orm-6.2.3.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\spring-context\6.2.3\spring-context-6.2.3.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\spring-aop\6.2.3\spring-aop-6.2.3.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\spring-tx\6.2.3\spring-tx-6.2.3.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\spring-beans\6.2.3\spring-beans-6.2.3.jar;C:\Users\Eunseo Yu\.m2\repository\org\slf4j\slf4j-api\2.0.16\slf4j-api-2.0.16.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\spring-aspects\6.2.3\spring-aspects-6.2.3.jar;C:\Users\Eunseo Yu\.m2\repository\org\aspectj\aspectjweaver\1.9.22.1\aspectjweaver-1.9.22.1.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\boot\spring-boot-starter-jdbc\3.4.3\spring-boot-starter-jdbc-3.4.3.jar;C:\Users\Eunseo Yu\.m2\repository\com\zaxxer\HikariCP\5.1.0\HikariCP-5.1.0.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\spring-jdbc\6.2.3\spring-jdbc-6.2.3.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\boot\spring-boot-starter-web\3.4.3\spring-boot-starter-web-3.4.3.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\boot\spring-boot-starter-json\3.4.3\spring-boot-starter-json-3.4.3.jar;C:\Users\Eunseo Yu\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.18.2\jackson-datatype-jdk8-2.18.2.jar;C:\Users\Eunseo Yu\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.18.2\jackson-datatype-jsr310-2.18.2.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\3.4.3\spring-boot-starter-tomcat-3.4.3.jar;C:\Users\Eunseo Yu\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\10.1.36\tomcat-embed-core-10.1.36.jar;C:\Users\Eunseo Yu\.m2\repository\org\apache\tomcat\embed\tomcat-embed-el\10.1.36\tomcat-embed-el-10.1.36.jar;C:\Users\Eunseo Yu\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\10.1.36\tomcat-embed-websocket-10.1.36.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\spring-web\6.2.3\spring-web-6.2.3.jar;C:\Users\Eunseo Yu\.m2\repository\io\micrometer\micrometer-observation\1.14.4\micrometer-observation-1.14.4.jar;C:\Users\Eunseo Yu\.m2\repository\io\micrometer\micrometer-commons\1.14.4\micrometer-commons-1.14.4.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\spring-webmvc\6.2.3\spring-webmvc-6.2.3.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\spring-expression\6.2.3\spring-expression-6.2.3.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\ai\spring-ai-pgvector-store-spring-boot-starter\1.0.0-M6\spring-ai-pgvector-store-spring-boot-starter-1.0.0-M6.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\ai\spring-ai-spring-boot-autoconfigure\1.0.0-M6\spring-ai-spring-boot-autoconfigure-1.0.0-M6.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\ai\spring-ai-pgvector-store\1.0.0-M6\spring-ai-pgvector-store-1.0.0-M6.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\ai\spring-ai-core\1.0.0-M6\spring-ai-core-1.0.0-M6.jar;C:\Users\Eunseo Yu\.m2\repository\com\fasterxml\jackson\module\jackson-module-jsonSchema\2.18.2\jackson-module-jsonSchema-2.18.2.jar;C:\Users\Eunseo Yu\.m2\repository\javax\validation\validation-api\1.1.0.Final\validation-api-1.1.0.Final.jar;C:\Users\Eunseo Yu\.m2\repository\io\swagger\core\v3\swagger-annotations\2.2.25\swagger-annotations-2.2.25.jar;C:\Users\Eunseo Yu\.m2\repository\com\github\victools\jsonschema-module-swagger-2\4.37.0\jsonschema-module-swagger-2-4.37.0.jar;C:\Users\Eunseo Yu\.m2\repository\org\antlr\ST4\4.3.4\ST4-4.3.4.jar;C:\Users\Eunseo Yu\.m2\repository\org\antlr\antlr-runtime\3.5.3\antlr-runtime-3.5.3.jar;C:\Users\Eunseo Yu\.m2\repository\io\projectreactor\reactor-core\3.7.3\reactor-core-3.7.3.jar;C:\Users\Eunseo Yu\.m2\repository\org\reactivestreams\reactive-streams\1.0.4\reactive-streams-1.0.4.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\spring-messaging\6.2.3\spring-messaging-6.2.3.jar;C:\Users\Eunseo Yu\.m2\repository\io\micrometer\micrometer-core\1.14.4\micrometer-core-1.14.4.jar;C:\Users\Eunseo Yu\.m2\repository\org\hdrhistogram\HdrHistogram\2.2.2\HdrHistogram-2.2.2.jar;C:\Users\Eunseo Yu\.m2\repository\org\latencyutils\LatencyUtils\2.0.3\LatencyUtils-2.0.3.jar;C:\Users\Eunseo Yu\.m2\repository\io\micrometer\context-propagation\1.1.2\context-propagation-1.1.2.jar;C:\Users\Eunseo Yu\.m2\repository\com\knuddels\jtokkit\1.1.0\jtokkit-1.1.0.jar;C:\Users\Eunseo Yu\.m2\repository\com\pgvector\pgvector\0.1.6\pgvector-0.1.6.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\boot\spring-boot-docker-compose\3.4.3\spring-boot-docker-compose-3.4.3.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\boot\spring-boot\3.4.3\spring-boot-3.4.3.jar;C:\Users\Eunseo Yu\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.18.2\jackson-databind-2.18.2.jar;C:\Users\Eunseo Yu\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.18.2\jackson-annotations-2.18.2.jar;C:\Users\Eunseo Yu\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.18.2\jackson-core-2.18.2.jar;C:\Users\Eunseo Yu\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.18.2\jackson-module-parameter-names-2.18.2.jar;C:\Users\Eunseo Yu\.m2\repository\org\postgresql\postgresql\42.7.5\postgresql-42.7.5.jar;C:\Users\Eunseo Yu\.m2\repository\org\checkerframework\checker-qual\3.48.3\checker-qual-3.48.3.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\ai\spring-ai-spring-boot-docker-compose\1.0.0-M6\spring-ai-spring-boot-docker-compose-1.0.0-M6.jar;C:\Users\Eunseo Yu\.m2\repository\com\google\protobuf\protobuf-java\3.25.2\protobuf-java-3.25.2.jar;C:\Users\Eunseo Yu\.m2\repository\jakarta\xml\bind\jakarta.xml.bind-api\4.0.2\jakarta.xml.bind-api-4.0.2.jar;C:\Users\Eunseo Yu\.m2\repository\jakarta\activation\jakarta.activation-api\2.1.3\jakarta.activation-api-2.1.3.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\spring-core\6.2.3\spring-core-6.2.3.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\spring-jcl\6.2.3\spring-jcl-6.2.3.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\ai\spring-ai-openai-spring-boot-starter\1.0.0-M6\spring-ai-openai-spring-boot-starter-1.0.0-M6.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\ai\spring-ai-openai\1.0.0-M6\spring-ai-openai-1.0.0-M6.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\ai\spring-ai-retry\1.0.0-M6\spring-ai-retry-1.0.0-M6.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\retry\spring-retry\2.0.11\spring-retry-2.0.11.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\spring-webflux\6.2.3\spring-webflux-6.2.3.jar;C:\Users\Eunseo Yu\.m2\repository\io\rest-assured\json-path\5.5.1\json-path-5.5.1.jar;C:\Users\Eunseo Yu\.m2\repository\org\apache\groovy\groovy-json\4.0.25\groovy-json-4.0.25.jar;C:\Users\Eunseo Yu\.m2\repository\org\apache\groovy\groovy\4.0.25\groovy-4.0.25.jar;C:\Users\Eunseo Yu\.m2\repository\io\rest-assured\rest-assured-common\5.5.1\rest-assured-common-5.5.1.jar;C:\Users\Eunseo Yu\.m2\repository\org\apache\commons\commons-lang3\3.17.0\commons-lang3-3.17.0.jar;C:\Users\Eunseo Yu\.m2\repository\com\github\victools\jsonschema-generator\4.37.0\jsonschema-generator-4.37.0.jar;C:\Users\Eunseo Yu\.m2\repository\com\github\victools\jsonschema-module-jackson\4.37.0\jsonschema-module-jackson-4.37.0.jar;C:\Users\Eunseo Yu\.m2\repository\org\springframework\spring-context-support\6.2.3\spring-context-support-6.2.3.jar" com.example.spring_vectordb.SpringVectordbApplication

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/

 :: Spring Boot ::                (v3.4.3)

2025-02-26T15:23:17.900+09:00  INFO 8432 --- [spring_vectordb] [           main] c.e.s.SpringVectordbApplication          : Starting SpringVectordbApplication using Java 17.0.13 with PID 8432 (C:\Users\Eunseo Yu\IdeaProjects\spring_vectordb\target\classes started by Eunseo Yu in C:\Users\Eunseo Yu\IdeaProjects\spring_vectordb)
2025-02-26T15:23:17.902+09:00  INFO 8432 --- [spring_vectordb] [           main] c.e.s.SpringVectordbApplication          : No active profile set, falling back to 1 default profile: "default"
2025-02-26T15:23:18.201+09:00  INFO 8432 --- [spring_vectordb] [           main] .s.b.d.c.l.DockerComposeLifecycleManager : Using Docker Compose file C:\Users\Eunseo Yu\IdeaProjects\spring_vectordb\compose.yaml
2025-02-26T15:23:19.370+09:00  INFO 8432 --- [spring_vectordb] [utReader-stderr] o.s.boot.docker.compose.core.DockerCli   :  Network spring_vectordb_default  Creating
2025-02-26T15:23:19.417+09:00  INFO 8432 --- [spring_vectordb] [utReader-stderr] o.s.boot.docker.compose.core.DockerCli   :  Network spring_vectordb_default  Created
2025-02-26T15:23:19.426+09:00  INFO 8432 --- [spring_vectordb] [utReader-stderr] o.s.boot.docker.compose.core.DockerCli   :  Container spring_vectordb-pgvector-1  Creating
2025-02-26T15:23:19.567+09:00  INFO 8432 --- [spring_vectordb] [utReader-stderr] o.s.boot.docker.compose.core.DockerCli   :  Container spring_vectordb-pgvector-1  Created
2025-02-26T15:23:19.628+09:00  INFO 8432 --- [spring_vectordb] [utReader-stderr] o.s.boot.docker.compose.core.DockerCli   :  Container spring_vectordb-pgvector-1  Starting
2025-02-26T15:23:19.975+09:00  INFO 8432 --- [spring_vectordb] [utReader-stderr] o.s.boot.docker.compose.core.DockerCli   :  Container spring_vectordb-pgvector-1  Started
2025-02-26T15:23:19.976+09:00  INFO 8432 --- [spring_vectordb] [utReader-stderr] o.s.boot.docker.compose.core.DockerCli   :  Container spring_vectordb-pgvector-1  Waiting
2025-02-26T15:23:20.488+09:00  INFO 8432 --- [spring_vectordb] [utReader-stderr] o.s.boot.docker.compose.core.DockerCli   :  Container spring_vectordb-pgvector-1  Healthy
2025-02-26T15:23:22.977+09:00  INFO 8432 --- [spring_vectordb] [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2025-02-26T15:23:23.003+09:00  INFO 8432 --- [spring_vectordb] [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 15 ms. Found 0 JPA repository interfaces.
2025-02-26T15:23:23.635+09:00  INFO 8432 --- [spring_vectordb] [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port 8080 (http)
2025-02-26T15:23:23.649+09:00  INFO 8432 --- [spring_vectordb] [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2025-02-26T15:23:23.649+09:00  INFO 8432 --- [spring_vectordb] [           main] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.36]
2025-02-26T15:23:23.710+09:00  INFO 8432 --- [spring_vectordb] [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2025-02-26T15:23:23.710+09:00  INFO 8432 --- [spring_vectordb] [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1488 ms
2025-02-26T15:23:23.840+09:00  INFO 8432 --- [spring_vectordb] [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2025-02-26T15:23:24.038+09:00  INFO 8432 --- [spring_vectordb] [           main] com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@48c5698
2025-02-26T15:23:24.039+09:00  INFO 8432 --- [spring_vectordb] [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2025-02-26T15:23:24.096+09:00  INFO 8432 --- [spring_vectordb] [           main] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: default]
2025-02-26T15:23:24.168+09:00  INFO 8432 --- [spring_vectordb] [           main] org.hibernate.Version                    : HHH000412: Hibernate ORM core version 6.6.8.Final
2025-02-26T15:23:24.206+09:00  INFO 8432 --- [spring_vectordb] [           main] o.h.c.internal.RegionFactoryInitiator    : HHH000026: Second-level cache disabled
2025-02-26T15:23:24.563+09:00  INFO 8432 --- [spring_vectordb] [           main] o.s.o.j.p.SpringPersistenceUnitInfo      : No LoadTimeWeaver setup: ignoring JPA class transformer
2025-02-26T15:23:24.671+09:00  INFO 8432 --- [spring_vectordb] [           main] org.hibernate.orm.connections.pooling    : HHH10001005: Database info:
	Database JDBC URL [Connecting through datasource 'HikariDataSource (HikariPool-1)']
	Database driver: undefined/unknown
	Database version: 16.4
	Autocommit mode: undefined/unknown
	Isolation level: undefined/unknown
	Minimum pool size: undefined/unknown
	Maximum pool size: undefined/unknown
2025-02-26T15:23:25.058+09:00  INFO 8432 --- [spring_vectordb] [           main] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)
2025-02-26T15:23:25.062+09:00  INFO 8432 --- [spring_vectordb] [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2025-02-26T15:23:25.150+09:00  WARN 8432 --- [spring_vectordb] [           main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2025-02-26T15:23:26.145+09:00  INFO 8432 --- [spring_vectordb] [           main] o.s.a.v.pgvector.PgVectorStore           : Using the vector table name: vector_store. Is empty: false
2025-02-26T15:23:26.150+09:00  INFO 8432 --- [spring_vectordb] [           main] o.s.a.v.pgvector.PgVectorStore           : Initializing PGVectorStore schema for table: vector_store in schema: public
2025-02-26T15:23:26.150+09:00  INFO 8432 --- [spring_vectordb] [           main] o.s.a.v.pgvector.PgVectorStore           : vectorTableValidationsEnabled false
2025-02-26T15:23:26.249+09:00  INFO 8432 --- [spring_vectordb] [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port 8080 (http) with context path '/'
2025-02-26T15:23:26.258+09:00  INFO 8432 --- [spring_vectordb] [           main] c.e.s.SpringVectordbApplication          : Started SpringVectordbApplication in 8.924 seconds (process running for 10.103)
2025-02-26T15:35:45.609+09:00  INFO 8432 --- [spring_vectordb] [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2025-02-26T15:35:45.609+09:00  INFO 8432 --- [spring_vectordb] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2025-02-26T15:35:45.611+09:00  INFO 8432 --- [spring_vectordb] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 2 ms