Plugin Database Vektor untuk Unreal Engine 5
Plugin ini menambahkan tipe basis data vektor yang disederhanakan ke Unreal Engine 5, yang dirancang dengan mempertimbangkan cetak biru.
PERINGATAN: bekerja sedang berlangsung
Ini masih dalam keadaan awal, jadi jangan kaget jika Anda mengalami kecelakaan. Saya membuat plugin ini untuk diri saya sendiri untuk beberapa proyek tertentu, tetapi saya pikir akan menyenangkan untuk membagikannya. Jika Anda mencobanya dan mengalami masalah, jangan ragu untuk membuka masalah baru dengan informasi log apa pun yang bisa membantu.
Instalasi
Repo ini mencakup seluruh proyek (UE 5.4) yang saya gunakan untuk menguji & mengembangkan plugin ini. Anda tidak perlu mengkloning seluruh proyek ini. Untuk menginstal plugin, ikuti langkah -langkah ini:
- Unduh folder Plugins/Vectorsearch dan letakkan di folder plugin proyek Anda (buat ini jika tidak ada)
- Pada titik waktu ini, Anda dapat mencoba membuka proyek. Ada kemungkinan itu akan berhasil.
- Klik kanan pada file .upryject Anda dan klik 'Hasilkan file proyek Visual Studio'
- Buka solusi proyek (file .sln) dan bangun proyek, pastikan tidak ada kesalahan kompilasi
- Jika Anda mengalami masalah kompilasi apa pun, silakan posting tab Bangun di tab Masalah
- Buka proyek Anda dan cari 'Database Vektor' dalam grafik cetak biru untuk melihat fungsi yang tersedia
Panduan instalasi ini mengasumsikan Anda memiliki proyek C ++, karena saya belum dapat menguji kompilasi plugin ini dalam proyek cetak biru. Jika Anda memiliki proyek cetak biru, Anda dapat dengan cepat & dengan mudah membuat proyek C ++ kosong dan melakukan kompilasi di sana, saya percaya menyalin/menempel dari proyek itu akan berhasil.
Bagaimana cara kerjanya?
- Menggunakan simpul 'Buat Database Vektor Baru', Anda dapat menginisialisasi database vektor baru dan kemudian menyimpan referensi untuk itu sebagai variabel.
- Menggunakan objek ini sebagai target, Anda dapat menggunakan node 'Tambah Entri ke Database Vektor' untuk menambahkan entri (dan array vektor-flat yang sesuai) dari jenis data apa pun (plugin saat ini mendukung string, objek, dan entri struct-struct dapat berisi tipe yang paling variabel namun, entri string dan objek benar-benar hanya ada untuk kesederhanaan dalam beberapa kasus penggunaan) Namun
- Untuk mengambil entri dari database, Anda dapat menggunakan node 'Get Top N Matches'. Ini mengambil objek basis data vektor, vektor (array float), dan nilai 'n' (jumlah kecocokan yang akan dikembalikan). Node ini kemudian menghitung entri N atas dalam database, berdasarkan jarak vektor masing -masing entri dari vektor input.
- 'Dapatkan Top N Struct Matches' memiliki output wildcard, untuk mendapatkan struct Anda kembali dari itu menghubungkan variabel-setter atau struct-breaker dari A untuk setiap loop, kemudian hubungkan untuk setiap input array loop ke 'dapatkan Top N Struct mencocokkan' output kartu wild- kartu-jenis pin harus diperbarui secara otomatis.
- Ada juga 'Get Detail Top N Matches' yang akan mengembalikan struct yang berisi masing -masing vektor entri yang ditemukan, jarak, dan kemudian objek pembungkus dari mana nilainya dapat diperoleh dari fungsi murni yang disediakan (kecuali struct, yang memiliki fungsi tidak murni yang mengambil keseluruhan output struct sebagai inputnya)
- Semua fungsi 'Get Top N Matches' hanya akan mempertimbangkan entri basis data vektor dengan vektor yang cocok dengan dimensi vektor input, dan dengan jenis entri yang cocok dengan jenis node. Ini karena database vektor adalah jenis data agnostik- Anda dapat memasukkan angka atau kombinasi string, objek, atau struct ke dalam database (dengan vektor dengan dimensi yang berbeda juga, jika Anda mau) dan akan berfungsi- karena fungsi GET hanya mempertimbangkan entri yang relevan (yang berarti jika Anda tidak masuk dalam vektor yang berbeda dengan vektor yang berbeda dengan vektor yang berbeda, vektor yang berbeda, vektor yang berbeda, vektor yang berbeda, vektor yang berbeda, vektor yang berbeda dengan vektor yang berbeda, vektor a vektor yang berbeda, vektor a. Ada sedikit hukuman untuk melakukan ini, karena fungsi pengambil masih perlu mengulangi setiap entri dalam array, terlepas dari apakah Anda ingin mempertimbangkannya atau tidak.
- Untuk menghapus entri dari database, Anda dapat menggunakan simpul 'Hapus entri dari Vector Database' yang mengambil vektor input dan menghapus kecocokan apa pun. Jika BremoveAlloccurences diatur ke True. Kemudian entri apa pun dengan vektor yang cocok akan dihapus. Ada juga input float 'removalRange', yang jika diatur ke apa pun di atas 0, akan menghapus kecocokan di dalam (atau pada) yang diberikan jarak dari vektor input.
- Selain itu ada node murni untuk mendapatkan jumlah entri dalam database (serta node Getter yang terpisah untuk mendapatkan jumlah entri string, jumlah entri objek, dan jumlah entri struct).
Menghasilkan vektor
Saat ini plugin ini memiliki fungsi cetak biru 'menghasilkan embedding' 'yang mengambil input string, serta struktur yang berisi titik akhir API, model, dan kunci API, dan membuat permintaan API ke titik akhir yang ditentukan (mengikuti format embedding API) dan mengembalikan hasilnya sebagai array float yang siap digunakan dalam vektor.