저자 : Sven Loesekann
기술 : Angular, Angular-Cli, Angular-Material, Typescript, Spring Boot, Spring AI, Openai, Ollama, PostgreSQL (벡터, Hstore), Liquibase, JPA, Gradle, Java
이 프로젝트는 Springai를 사용하여 라이브러리의 문서와 채팅하는 방법을 보여주는 프로젝트입니다. 문서를 업로드 할 수 있습니다. 그런 다음 일반 및 벡터 데이터베이스에 저장됩니다. AI는 벡터 데이터베이스에 저장된 문서의 덩어리에서 내장을 만드는 데 사용됩니다. 채팅에서 삽입 된 질문을 요청할 수 있으며 벡터 데이터베이스에 대한 요청에 사용됩니다. 거리가 가장 낮은 문서 벡터는 데이터베이스에서 문서를로드하고 문서 콘텐츠 토큰을 기반으로 AI의 답변을 요청하는 데 사용됩니다. 이를 통해 AI는 문서의 내용에 따라 답을 생성하고 환각을 제한 할 수 있습니다. 추가 연구를 위해 소스 문서에 대한 링크가 제공됩니다.
이 프로젝트는 Spring AI와 함께 Spring Boot를 사용하여 OpenAI 및 벡터 데이터베이스에 액세스합니다. PostgreSQL DB는 벡터, HSTORE 및 UUID-SOSSP 확장에 사용됩니다. Liquibase는 데이터베이스 마이그레이션을 관리하는 데 사용됩니다. JPA는 REST Controllers의 서비스에서 데이터베이스 액세스에 사용됩니다. Frontend Angular, Angular Material 및 TypeScript의 경우 문서 표, 업로드 대화 상자 및 문서 채팅을 작성하는 데 사용됩니다. Angular CLI는 프론트 엔드 빌드 및 프로젝트 빌드에 Gradle에 사용됩니다.
Ollama는 로컬에서 AI/LLM 모델을 사용하는 데 사용됩니다. Ollama는 로컬 컴퓨터에 Docker 이미지로 설치하거나 실행할 수 있습니다. Ollama는 다양한 사용 사례에 대한 AI/LLM 모델 라이브러리를 지원합니다. 이미지 설명을위한 llava와 같은 모델, Rag 기반 질문 응답을위한 Falcon, SQL 생성을위한 SQLCoder 및 기능 호출을위한 Mixtral을 사용할 수 있습니다. Ollama는 GPU를 사용할 수 있고 CPU없이 작동하는 경우 GPU를 사용할 수 있습니다. Spring AI에는 AI 서비스 사용과 유사하게 사용하는 Ollama 지원이 있습니다. 현재 CPU에는 종종 성능 문제가 있습니다. CPU 제공 업체는 이러한 문제를 해결하기 위해 향후 CPU에 AI 엔진을 추가하려고합니다.
이 프로젝트는 Spring AI와 함께 Spring Boot를 사용하여 PGVECTOR EXTENSION 및 OLLAMA와 함께 PostgreSQL을 사용하는 이미지 데이터베이스에 의문을 제기합니다. 수입 및 크기가 크기가 큰 이미지는 Ollama에서 로컬로 실행되는 LLAVA 모델로 생성 된 설명입니다. 이 설명은 임베딩으로 전환되며 벡터 데이터베이스의 설명과 함께 저장됩니다. 이미지와 메타 데이터는 관계형 데이터베이스에 저장됩니다. 이미지 데이터베이스에 대한 질문은 임베딩으로 전환되고 가장 가까운 이웃에 대해 벡터 데이터베이스가 쿼리됩니다. 최고의 경기는 이미지와 설명으로 반환됩니다. 결과는 프론트 엔드에 표시됩니다. 이것은 AI/LLM이 사용할 수 있기 전에 불가능한 새로운 종류의 이미지 검색입니다.
이 프로젝트는 Spring AI를 사용하여 LLMS로 질문을 SQL 쿼리로 전환하고 결과를 프론트 엔드에 표시합니다. 관계형 데이터 세트에 제공되는 메타 데이터를 기반으로 LLM은 테이블 및 열의 메타 데이터에 대한 임베딩을 생성 할 수 있습니다. 이 프로젝트는 또한 특정 열의 내용에 대한 내장을 생성하여 열이 SQL 쿼리에 결합하여 사용되어야하는지 결정할 수 있습니다. 이 임베딩 메타 데이터를 사용하면 LLM은 합리적인 SQL 쿼리로 질문을 전환하고 결과를 프론트 엔드에 표시 할 수 있습니다. 프론트 엔드는 유연한 양의 열과 행이있는 각도 재료 테이블을 사용합니다.
이 프로젝트는 Spring AI를 사용하여 책에 대한 질문을 OpenLibrary API에 대한 휴식 기능으로 바꿉니다. LLAMA3.1 모델과 Spring AI 기능 호출 API를 사용합니다. API 응답은 응답을 생성하는 데 사용됩니다.
이 프로젝트는 스프링 AI를 사용하여 테스트 클래스를 생성합니다. 이를 위해 테스트 할 수업이 제공되고 테스트 할 클래스는 다음에 따라 다릅니다. 테스트 예제 클래스도 제공 할 수 있습니다. 그런 다음 Ollama 기반 AI/LLM은 모든 정보를 프롬프트하여 테스트 클래스 소스의 초안을 생성합니다.
이 프로젝트는 Spring AI를 사용하여 책의 요약을 생성합니다. 요약을 생성하려면 챕터 제목과 마지막 장 후 제목을 제공해야합니다. 그런 다음 총알 포인트 형태의 장의 요약이 생성됩니다. 장의 요약에 대한 책 요약이 만들어졌습니다.
이 프로젝트는 Spring AI를 사용하여 소스에 대한 링크가있는 제공된 문서 세트를 기반으로 답변을 생성하는 방법을 보여줍니다. Angular Frontend는 백엔드에 대한 사용자 인터페이스를 제공하고 응답을 보여줍니다.
이 프로젝트는 Spring AI를 사용하여 업로드 된 이미지에 대한 설명을 생성하고 데이터베이스에 이미지, 설명 및 설명 임베딩을 저장하는 방법을 보여줍니다. 이미지 데이터베이스에 대한 질문은 임베딩으로 전환되며 이미지와의 가장 적합한 설명이 반환됩니다. Angular Frontend는 결과를 표시하고 이미지를 업로드하기위한 사용자 인터페이스를 제공합니다.
이 프로젝트는 스프링 AI를 사용하여 테이블/열에 제공된 메타 데이터를 기반으로 SQL 쿼리를 생성하는 방법을 보여줍니다. Angular Frontend는 표에 결과를 표시하는 사용자 인터페이스를 제공합니다.
이 프로젝트는 Spring AI를 사용하여 호출 할 REST 인터페이스를 선택하고 나머지 호출에 대한 매개 변수를 제공하는 방법을 보여줍니다. Angular Frontend는 사용자 인터페이스를 제공하여 질문을하고 나머지 호출의 결과를 표시합니다.
이 프로젝트는 Spring AI를 사용하여 자연 언어 질문으로 쿼리 할 수있는 이미지 데이터베이스를 작성하고 설명과 함께 가장 가까운 일치 이미지를 반환 할 수있는 방법을 보여줍니다.
Spring AI는 OpenAI / Ollama 서비스를 간단하고 유용하게 만듭니다.이 프로젝트는이를 보여줍니다.
프로젝트에는 시스템 컨텍스트 다이어그램, 컨테이너 다이어그램 및 구성 요소 다이어그램이 있습니다. 다이어그램은 structurizr로 만들어졌습니다. runstructurizr.sh 파일에는 structurizr을 사용하는 명령이 포함되어 있으며 Directory Structurizr에는 DSL 파일이 포함되어 있습니다.
Helm 디렉토리에는 Minikube와 함께 AidocumentlibraryChat 프로젝트를 실행하기위한 Kubernetes 설정이 있습니다. Helm 차트는 Postgres 데이터베이스와 AidocumentlibraryChat을 필요한 매개 변수 (SpringProfile IS value.yaml)와 함께 배포합니다. JDK 16의 리소스 제한 지원을 사용하여 메모리를 제한합니다. Kubernetes는 CPU 사용을 제한하고 Spring Actuator가 제공하는 STARTUPPROBES 및 LICEDICESPROBES를 사용합니다.
runpostgresql.sh 파일에는 벡터 확장자가 로컬로 PostgreSQL Docker 이미지를 당기고 실행하는 명령이 있습니다.
OpenAI API 키를 얻으려면 https://platform.openai.com에서 계정을 작성하고 사용자 설정에서 키를 만들어야합니다. 이 키는 'spring.ai.openai.api-key'키의 application.properties에 추가되어야합니다. 대안으로 환경 변수 'Open-Api-Key'로 제공 될 수 있습니다.
Ollama는 AI 모델을 로컬로 실행할 수 있습니다. 파일 runollama.sh에는 docker 컨테이너로 실행하도록 명령이 있습니다. 응용 프로그램은 종속성을 포함하도록 'useollama = true'Gradle 빌드 속성을 사용하여 빌드해야합니다. 응용 프로그램은 'Ollama'프로파일로 시작하여 Ollama 기반 모델을 사용하기 위해 구성/기능을 전환해야합니다. Ollama는 GPU 가속도를 지원합니다.
벡터 확장 0.5.1 또는 최신 PostgreSQL
Java 21 이상
Gradle 8.3 또는 새로운
Nodejs 18.13.x 또는 새로
NPM 8.19.X 또는 새로
Angular CLI 17 또는 최신