Penulis: Sven Loesekann
Teknologi: Angular, Angular-CLI, Angular-Material, TypeScript, Spring Boot, Spring AI, OpenAi, Ollama, PostgreSQL (Vektor, Hstore), Liquibase, JPA, Gradle, Java
Ini adalah proyek untuk menunjukkan howto menggunakan springai untuk mengobrol dengan dokumen di perpustakaan. Dokumen dapat diunggah kemudian disimpan dalam database normal dan vektor. AI digunakan untuk membuat embeddings dari potongan dokumen yang disimpan dalam database vektor. Dalam obrolan, pertanyaan dapat diajukan yang disatukan dalam embeddings dan digunakan untuk permintaan ke database vektor. Vektor dokumen dengan jarak terendah digunakan untuk memuat dokumen dari database dan untuk meminta jawaban dari AI berdasarkan token konten dokumen. Itu memungkinkan AI untuk menghasilkan jawaban berdasarkan konten dokumen dan membatasi halusinasi. Tautan ke dokumen sumber disediakan untuk penelitian lebih lanjut.
Proyek ini menggunakan Spring Boot dengan Spring AI untuk mengakses OpenAI dan database vektor. DB PostgreSQL digunakan dengan vektor, hstore dan ekstensi UUID-OSSP. Liquibase digunakan untuk mengelola migrasi basis data. JPA digunakan untuk akses basis data di Layanan oleh pengontrol REST. Untuk sudut frontend, material sudut dan naskah digunakan untuk membuat tabel dokumen, dialog unggahan dan obrolan dokumen. Angular CLI digunakan untuk build dan lulusan frontend untuk pembangunan proyek.
Ollama digunakan untuk menggunakan model AI/LLM yang dijalankan secara lokal. Ollama dapat diinstal atau dijalankan sebagai gambar Docker di mesin lokal. Ollama mendukung perpustakaan model AI/LLM untuk kasus penggunaan yang berbeda. Model seperti LLAVA untuk deskripsi gambar, Falcon untuk menjawab pertanyaan berbasis RAG, SQLCoder untuk SQL Generation dan Mixtral untuk panggilan fungsi dapat digunakan. Ollama dapat menggunakan GPU jika tersedia dan bekerja di CPU tanpa mereka. Spring AI memiliki dukungan Ollama yang membuat penggunaannya mirip dengan menggunakan layanan AI. Pada CPU saat ini sering ada masalah kinerja. Penyedia CPU ingin menambahkan mesin AI ke CPU mereka di masa depan untuk menyelesaikan masalah ini.
Proyek ini menggunakan Spring Boot dengan Spring AI untuk mempertanyakan basis data gambar yang menggunakan PostgreSQL dengan ekstensi PGVector dan Ollama. Untuk gambar yang diimpor dan diubah ukurannya adalah deskripsi yang dihasilkan dengan model LLAVA yang berjalan secara lokal di Ollama. Deskripsi ini diputar dalam embeddings dan disimpan dengan deskripsi dalam database vektor. Gambar dan metadata disimpan dalam database relasional. Sebuah pertanyaan untuk database gambar diubah dalam embeddings dan database vektor ditanyai tetangga terdekat. Kecocokan terbaik dikembalikan dengan gambar dan deskripsi. Hasilnya ditampilkan di frontend. Ini memungkinkan adalah jenis pencarian gambar baru yang tidak mungkin sebelum AI/LLMS dapat digunakan.
Proyek ini menggunakan AI Spring untuk mengubah pertanyaan dengan LLMS menjadi kueri SQL dan menampilkan hasilnya di frontend. Berdasarkan metadata yang disediakan untuk dataset relasional LLM dapat membuat embeddings untuk metadata tabel dan kolom. Proyek ini juga membuat embeddings untuk konten kolom tertentu untuk dapat memutuskan apakah kolom harus digunakan sebagai bergabung dalam kueri SQL. Dengan metadata yang menanamkan, LLM dapat mengubah pertanyaan dalam kueri SQL yang masuk akal dan menampilkan hasilnya di frontend. Frontend menggunakan tabel bahan sudut dengan jumlah kolom dan baris yang fleksibel.
Proyek ini menggunakan AI Spring untuk mengubah pertanyaan tentang buku menjadi panggilan fungsi REST ke OpenLibrary API. Ini menggunakan model LLAMA3.1 dan fungsi API fungsi AI Spring. Respons API digunakan untuk membuat respons.
Proyek ini menggunakan AI Spring untuk menghasilkan kelas tes. Untuk melakukan itu, kelas yang akan diuji disediakan dan kelas -kelas kelas untuk menguji tergantung pada. Kelas contoh tes juga dapat disediakan. AI/LLM yang berbasis Ollama kemudian mendapatkan prompt dengan semua informasi dan menghasilkan konsep sumber kelas uji.
Proyek ini menggunakan AI Spring untuk menghasilkan ringkasan buku. Untuk menghasilkan ringkasan judul bab dan judul setelah bab terakhir harus disediakan. Kemudian ringkasan bab dalam bentuk poin -poin dihasilkan. Ringkasan buku dibuat dari ringkasan bab.
Proyek ini menunjukkan bagaimana menggunakan AI Spring untuk menghasilkan jawaban berdasarkan set dokumen yang disediakan dengan tautan ke sumber. Frontend Angular menyediakan antarmuka pengguna untuk backend dan menunjukkan tanggapannya.
Proyek ini menunjukkan bagaimana menggunakan AI Spring untuk menghasilkan deskripsi untuk gambar yang diunggah dan untuk menyimpan gambar, deskripsi dan embedding deskripsi dalam database. Pertanyaan yang diajukan ke basis data gambar diubah dalam embeddings dan deskripsi pemasangan terbaik dengan gambar dikembalikan. Frontend Angular menyediakan antarmuka pengguna untuk menampilkan hasilnya dan mengunggah gambar.
Proyek ini menunjukkan bagaimana menggunakan AI Spring untuk menghasilkan kueri SQL berdasarkan metadata yang disediakan untuk tabel/kolom. Frontend Angular menyediakan antarmuka pengguna untuk menampilkan hasil di tabel.
Proyek ini menunjukkan bagaimana menggunakan AI Spring untuk memilih antarmuka REST untuk menelepon dan memberikan parameter untuk panggilan istirahat. Frontend Angular menyediakan antarmuka pengguna untuk mengajukan pertanyaan dan untuk menampilkan hasil panggilan istirahat.
Proyek ini menunjukkan bagaimana menggunakan AI Spring untuk membuat basis data gambar yang dapat ditanya dengan pertanyaan bahasa alami dan mengembalikan gambar yang paling cocok dengan deskripsi mereka.
Spring AI membuat menggunakan OpenAI / Ollama Services sederhana dan bermanfaat dan proyek ini menunjukkan hal itu.
Proyek ini memiliki diagram konteks sistem, diagram kontainer dan diagram komponen. Diagram telah dibuat dengan struktur. File runstructurizr.sh berisi perintah untuk menggunakan struktur dan struktur direktori berisi file DSL.
Di Direktori Helm adalah pengaturan Kubernetes untuk menjalankan proyek AidocumentLibraryChat dengan Minikube. Bagan Helm menyebarkan database Postgres dan AIDOCUMENTLIBARYCHAT dengan parameter yang diperlukan (SpringProfile ada di Value.yaml) untuk dijalankan. Ini menggunakan dukungan batas sumber daya dari JDK 16 untuk membatasi memori. Kubernetes membatasi penggunaan CPU dan menggunakan startupprobe dan livesprobes yang disediakan oleh Spring Actuator.
Dalam file runpostgresql.sh adalah perintah untuk menarik dan menjalankan gambar Docker PostgreSQL dengan ekstensi vektor secara lokal.
Untuk mendapatkan tombol API OpenAI, Anda perlu membuat akun di https://platform.openai.com dan membuat kunci di pengaturan pengguna. Kunci itu harus ditambahkan dalam aplikasi. Sebagai alternatif dapat disediakan sebagai variabel lingkungan 'terbuka-api-key'.
Ollama dapat menjalankan model AI secara lokal. File runollama.sh memiliki perintah untuk menjalankannya sebagai container Docker. Aplikasi perlu dibangun dengan properti 'Useollama = True' Gradle Build untuk memasukkan dependensi. Aplikasi perlu dimulai dengan profil 'ollama' untuk mengaktifkan konfigurasi/fitur untuk menggunakan model berbasis ollama. Ollama mendapat dukungan untuk akselerasi GPU.
PostgreSQL dengan ekstensi vektor 0.5.1 atau lebih baru
Java 21 atau lebih baru
Gradle 8.3 atau lebih baru
NodeJs 18.13.x atau yang lebih baru
NPM 8.19.x atau yang lebih baru
Angular CLI 17 atau lebih baru