Autor: Sven Loesekann
Tecnologias: Angular, Angular-Cli, Material Angular, Datilícios, Boot Spring, Spring AI, Openai, Ollama, PostgreSQL (Vector, Hstore), Liquibase, JPA, Gradle, Java
Este é um projeto para mostrar como usar o Springai para conversar com os documentos em uma biblioteca. O documento pode ser carregado é então armazenado em um banco de dados normal e vetorial. A IA é usada para criar incorporações a partir dos pedaços dos documentos armazenados no banco de dados do vetor. Nas perguntas do bate -papo podem ser feitas que são entregues em incorporação e são usadas para solicitações ao banco de dados vetorial. O vetor de documento com a menor distância é usado para carregar o documento no banco de dados e solicitar uma resposta da IA com base nos tokens de conteúdo do documento. Isso permite que a IA gere a resposta com base no conteúdo do documento e limita alucinações. Um link para o documento de origem é fornecido para novas pesquisas.
O projeto usa a Spring Boot com a Spring AI para acessar o OpenAI e o banco de dados Vector. O PostgreSQL DB é usado com as extensões Vector, Hstore e Uuid-OSSP. O LIFIBASE é usado para gerenciar as migrações de banco de dados. O JPA é usado para acesso ao banco de dados nos Serviços pelos Controladores REST. Para o material angular do front -end, o material angular e o TypeScript é usado para criar a tabela de documentos, a caixa de diálogo de upload e o bate -papo do documento. O CLI angular é usado para a construção e gradle para a construção do projeto.
Ollama é usado para usar os modelos AI/LLM executados localmente. Ollama pode ser instalado ou executado como uma imagem do Docker em uma máquina local. Ollama suporta uma biblioteca de modelos AI/LLM para diferentes casos de uso. Modelos como LLAVA para descrição da imagem, Falcon para resposta a perguntas baseadas em RAG, SQLCoder para geração SQL e mixtral para chamadas de função podem ser usadas. Ollama pode usar as GPUs se estiverem disponíveis e funcionar na CPU sem elas. A Spring AI tem suporte de Ollama que torna o uso semelhante ao uso de um serviço de IA. Nas CPUs atuais, muitas vezes existem problemas de desempenho. Os provedores da CPU desejam adicionar motores AI às suas CPUs no futuro para resolver esses problemas.
O projeto usa a Spring Boot com a Spring AI para questionar um banco de dados de imagem que usa o PostGresql com a extensão PGVector e Ollama. As imagens importadas e redimensionadas são descrições geradas com o modelo LLAVA que é executado localmente no Ollama. Essas descrições são transformadas em incorporação e são armazenadas com a descrição no banco de dados do vetor. A imagem e os metadados são armazenados no banco de dados relacional. Uma pergunta ao banco de dados de imagem é virada em incorporação e o banco de dados do vetor é consultado para o vizinho mais próximo. As melhores correspondências são retornadas com imagem e descrição. O resultado é exibido no front -end. Isso permite que o novo tipo de pesquisa de imagens não fosse possível antes que o AI/LLMS se tornasse utilizável.
O projeto usa o Spring AI para transformar perguntas com um LLMS em consultas SQL e exibir o resultado no front -end. Com base em metadados que são fornecidos para o conjunto de dados relacional, o LLM é capaz de criar incorporação para os metadados das tabelas e colunas. O projeto também cria incorporações para o conteúdo de determinadas colunas para poder decidir se a coluna deve ser usada como ingresso na consulta SQL. Com os metadados de incorporação, o LLM é capaz de transformar uma pergunta em uma consulta SQL razoável e exibir o resultado no front -end. O front -end usa uma tabela de material angular com uma quantidade flexível de colunas e linhas.
O projeto usa a Spring AI para transformar perguntas sobre livros em uma chamada de função REST para a API OpenLibrary. Ele usa o modelo LLAMA3.1 e a API de chamada de função de IA da primavera. A resposta da API é usada para criar a resposta.
O projeto usa a IA da primavera para gerar classes de teste. Para fazer isso, a classe a ser testada é fornecida e as classes em que a classe de teste depende. Uma classe de exemplo de teste também pode ser fornecida. O AI/LLM baseado em Ollama recebe um prompt com todas as informações e gera um rascunho da fonte da classe de teste.
O projeto usa a IA da primavera para gerar resumos de livros. Para gerar os resumos, os títulos do capítulo e o título após o último capítulo devem ser fornecidos. Em seguida, são gerados resumos dos capítulos em forma de marcadores. Um resumo do livro é criado dos resumos do capítulo.
O projeto mostra como usar a IA da primavera para gerar respostas com base em um conjunto fornecido de documentos com um link para a fonte. O frontend angular fornece a interface do usuário para o back -end e mostra as respostas.
O projeto mostra como usar a IA da primavera para gerar descrições para imagens carregadas e armazenar a imagem, as descrições e as incorporações de descrição no banco de dados. As perguntas feitas ao banco de dados de imagem são viradas em incorporação e as melhores descrições de ajuste com as imagens são retornadas. O frontend angular fornece uma interface do usuário para exibir o resultado e fazer upload das imagens.
O projeto mostra como usar a IA da primavera para gerar consultas SQL com base nos metadados fornecidos para as tabelas/colunas. O frontend angular fornece uma interface de usuário para exibir o resultado na tabela.
O projeto mostra como usar o Spring AI para selecionar uma interface de repouso para ligar e fornecer os parâmetros para a chamada restante. O front -end angular fornece a interface do usuário para fazer a pergunta e exibir o resultado da chamada restante.
O projeto mostra como usar a Spring AI para criar um banco de dados de imagem que pode ser consultado com perguntas de linguagem natural e retorna as imagens correspondentes mais próximas com suas descrições.
A IA da primavera torna o uso de serviços OpenAI / Ollama simples e útil e este projeto demonstra isso.
O projeto possui um diagrama de contexto do sistema, um diagrama de contêineres e um diagrama de componentes. Os diagramas foram criados com o Structurizr. O arquivo runStructurizr.sh contém os comandos para usar o structurizr e o diretório Structurizr contém o arquivo DSL.
No diretório do comando de comando, há uma configuração de Kubernetes para executar o projeto AidCumentLibraryChat com o Minikube. O gráfico do helm implanta o banco de dados do PostGres e o AidCumentLibraryChat com os parâmetros necessários (o SpringProfile está em valores.yaml) para ser executado. Ele usa o suporte ao limite de recursos do JDK 16 para limitar a memória. O Kubernetes limita o uso da CPU e usa os StartUpProbes e LiveRivesProbes que o atuador da primavera fornece.
No arquivo runpostgresql.sh estão os comandos para puxar e executar a imagem do Docker PostGresql com extensão vetorial localmente.
Para obter a chave da API do OpenAI, você precisa criar uma conta em https://platform.openai.com e criar uma chave nas configurações do usuário. Essa chave deve ser adicionada ao aplicativo.Properties na chave: 'spring.ai.openai.api-chave'. Por mais alternativo, pode ser fornecido como a variável de ambiente 'Aberta-Api-Key'.
Ollama pode executar o modelo de IA localmente. O arquivo runollama.sh tem os comandos para executá -lo como contêiner do docker. O aplicativo precisa ser construído com a propriedade 'useollama = true' gradle construir para incluir as dependências. O aplicativo precisa ser iniciado com o perfil 'ollama' para ativar as configurações/recursos para usar modelos baseados em Ollama. Ollama tem apoio à aceleração da GPU.
PostgreSQL com extensão vetorial 0.5.1 ou mais recente
Java 21 ou mais novo
Gradle 8.3 ou mais recente
Nodejs 18.13.x ou mais recente
NPM 8.19.x ou mais recente
CLI angular 17 ou mais recente