Plugin de base de données vectorielle pour moteur Unreal 5
Ce plugin ajoute un type de base de données vectoriel simplifié à Unreal Engine 5, conçu avec des plans à l'esprit.
Avertissement: travail en cours
C'est encore dans un état précoce, alors ne soyez pas surpris si vous ressentez des accidents. Je fais ce plugin pour moi-même pour certains projets particuliers, mais j'ai pensé que ce serait bien de le partager. Si vous essayez et rencontrez des problèmes, n'hésitez pas à ouvrir un nouveau problème avec toutes les informations de journal qui pourraient être utiles.
Installation
Ce dépôt comprend l'intégralité du projet (UE 5.4) que j'utilise pour tester et développer ce plugin. Vous n'avez pas besoin de cloner tout ce projet. Pour installer le plugin, suivez ces étapes:
- Téléchargez le dossier Plugins / Vectorsearch et placez-le dans le dossier Plugins de votre projet (créez ceci s'il n'existe pas)
- À ce stade, vous pouvez essayer d'ouvrir le projet. Il y a une chance que cela fonctionne déjà.
- Faites un clic droit sur votre fichier .uproject et cliquez sur «Générer des fichiers de projet Visual Studio»
- Ouvrez la solution de projet (fichier .sln) et créez le projet, assurez-vous qu'il n'y a pas d'erreurs de compilation
- Si vous rencontrez des problèmes de compilation, veuillez publier le connexion de construction dans l'onglet Problèmes
- Ouvrez votre projet et recherchez la «base de données vectorielle» dans un graphique Blueprint pour voir les fonctions disponibles
Ce guide d'installation suppose que vous avez un projet C ++, car je n'ai pas pu tester la compilation de ce plugin dans un projet Blueprint. Si vous avez un projet Blueprint, vous pouvez créer rapidement et facilement un projet C ++ vierge et y faire la compilation, je crois que la copie / coller de ce projet fonctionnerait.
Comment ça marche?
- À l'aide du nœud «Créer un nouveau Vector Database», vous pouvez initialiser une nouvelle base de données vectorielle, puis enregistrer une référence en tant que variable.
- En utilisant cet objet comme cible, vous pouvez utiliser les nœuds `` Ajouter une entrée à la base de données vectoriels '' pour ajouter une entrée (et son tableau vectoriel-an de flotteurs correspondant) de n'importe quel type de données (le plugin prend actuellement en charge les entrées de chaîne, d'objet et de structure - les structures peuvent contenir les types de variables cependant, les entrées de chaîne et d'objet ne existent vraiment que pour la simplicité dans certains cas d'utilisation)
- Pour récupérer les entrées de la base de données, vous pouvez utiliser les nœuds `` Obtenir les n nœuds. Ceux-ci absorbent l'objet de base de données vectorielle, un vecteur (tableau de flotteurs) et une valeur «n» (la quantité de correspondances à retourner). Ces nœuds calculent ensuite les N supérieurs dans la base de données, en fonction de la distance du vecteur de chaque entrée par rapport au vecteur d'entrée.
- Le «Get Top N Struct Matches» a une sortie générique, pour récupérer votre structure à partir d'un ensemble de variables ou de brise-structure à partir de A pour chaque boucle, puis connectez la sortie de la broche pour chaque boucle de boucle à la sortie génétiquement des «objets Top N Struct» - Le type de broche doit être mis à jour automatiquement.
- Il y a aussi un `` obtenez les normes détaillées des N qui renvoient une structure qui contient le vecteur de chaque entrée, la distance, puis un objet wrapper d'où sa valeur peut être obtenue à partir de fonctions pures fournies (sauf les structures, qui ont une fonction impure qui prend toute la structure de sortie comme entrée)
- Toutes les fonctions «Get Top N Matches» ne prendront en compte que les entrées de base de données vectorielles avec un vecteur correspondant aux dimensions du vecteur d'entrée et avec des types d'entrée correspondant au type de nœud. En effet, les bases de données vectorielles sont de type de données agnostiques - vous pouvez mettre n'importe quel nombre ou combinaison de chaînes, d'objets ou de structures dans une base de données (avec des vecteurs de différentes dimensions, si vous le souhaitez) et qu'il fonctionnera - parce que les fonctions GET ne considèrent que des entrées pertinentes pour les différentes dimensions). Il y a une légère pénalité à procéder, en ce que les fonctions Getter doivent encore itérer sur chaque entrée du tableau, que vous souhaitiez ou non les considérer.
- Pour supprimer les entrées d'une base de données, vous pouvez utiliser le nœud «Supprimer l'entrée de la base de données vectorielle» qui prend un vecteur d'entrée et supprime toutes les correspondances. Si BremovealLocurences est défini sur true. Ensuite, toute entrée avec un vecteur correspondant sera supprimée. Il existe également une entrée flottante «RaisovalRange», qui, si elle est définie sur quelque chose au-dessus de 0, supprimera toutes les correspondances à l'intérieur (ou à) qui ont donné la distance du vecteur d'entrée.
- De plus, il existe des nœuds purs pour obtenir le nombre d'entrée dans la base de données (ainsi que des nœuds de Getter séparés pour obtenir le nombre de saisies de chaîne, le nombre d'entrée d'objet et le nombre d'entrée de structure).
Générer des vecteurs
Actuellement, ce plugin possède une fonction Blueprint `` Générer Openai Incorcedding 'qui prend une entrée de chaîne, ainsi qu'une structure contenant le point de terminaison, le modèle et la clé API de l'API, et fait une demande API au point de terminaison spécifié (après le format API OpenAI dans le fonctionnalité de la données de la données vectorielle.