Vektor -Datenbank -Plugin für Unreal Engine 5
Dieses Plugin fügt Unreal Engine 5 einen vereinfachten Vektor -Datenbank -Typ hinzu, der mit Blick auf Blaupausen entworfen wurde.
WARNUNG: In Arbeit arbeiten
Dies ist immer noch in einem frühen Zustand. Seien Sie also nicht überrascht, wenn Sie Abstürze erleben. Ich mache dieses Plugin für mich für bestimmte Projekte, aber ich dachte, es wäre schön, es zu teilen. Wenn Sie es ausprobieren und Probleme erleben, können Sie ein neues Problem mit allen Protokollinformationen eröffnen, die hilfreich sein könnten.
Installation
Dieses Repo enthält das gesamte Projekt (UE 5.4), mit dem ich dieses Plugin testet und entwickelt habe. Sie müssen dieses gesamte Projekt nicht klonen. Befolgen Sie die folgenden Schritte, um das Plugin zu installieren:
- Laden Sie den Plugins/Vectorsearch -Ordner herunter und platzieren Sie ihn in den Plugins -Ordner Ihres Projekts (erstellen Sie diese, wenn es nicht vorhanden ist).
- Zu diesem Zeitpunkt können Sie versuchen, das Projekt zu öffnen. Es besteht die Möglichkeit, dass es bereits funktioniert.
- Klicken Sie mit der rechten Maustaste auf Ihre .UProject -Datei und klicken Sie auf "Visual Studio -Projektdateien generieren".
- Öffnen Sie die Projektlösung (.SLN -Datei) und erstellen Sie das Projekt, stellen Sie sicher, dass keine Zusammenstellungsfehler vorliegen
- Wenn Sie Zusammenstellungsprobleme haben, veröffentlichen Sie bitte das Build -Anmeldeprotokoll auf der Registerkarte "Problemen"
- Öffnen Sie Ihr Projekt und suchen
In dieser Installationshandbuch wird davon ausgegangen, dass Sie ein C ++ - Projekt haben, da ich dieses Plugin in einem Blaupauseprojekt nicht testen konnte. Wenn Sie ein Blueprint -Projekt haben, können Sie schnell und einfach ein leeres C ++ - Projekt erstellen und die Zusammenstellung dort durchführen. Ich glaube, das Kopieren/Einfügen von diesem Projekt würde funktionieren.
Wie funktioniert es?
- Mit dem Knoten "Neue Vektordatenbank erstellen" können Sie eine neue Vektor -Datenbank initialisieren und dann eine Verweise darauf als Variable speichern.
- Wenn Sie dieses Objekt als Ziel verwenden, können Sie mit den Knoten „Eintrag in Vektordatenbank hinzufügen“ einen Eintrag (und sein entsprechendes Vektor-An-Array von Floats) eines beliebigen Datentyps hinzufügen (das Plugin unterstützt derzeit Zeichenfolge, Objekt und Struktureinträge- Strukturen können jedoch die meisten Variablen enthalten, die Zeichenfolge und die Objekteinstimmungen gibt es einfach nur in einigen Einfachheiten in einigen Gebrauchsfällen.
- Um Einträge aus der Datenbank abzurufen, können Sie die Knoten "Top n übereinstimmen" verwenden. Diese nehmen das Vektor -Datenbankobjekt, einen Vektor (Array von Floats) und einen 'N' -Wert (die Anzahl der zu zurückgegebenen Übereinstimmungen) auf. Diese Knoten berechnen dann die oberen N -Einträge in der Datenbank, basierend auf den Vektorabstand jedes Eintrags vom Eingangsvektor.
- Das 'Get Top n struct-Matches' hat eine Wildcard-Ausgabe, um Ihre Struktur zurückzugewinnen, indem Sie einen Variablen-Setter oder einen Strukturbrecher von A für jede Schleife von A verbinden, und dann die für jeden Schleifen-Array-Eingang an die Wildcard-Ausgabe von 'Get Top n struct Matches' anschließen-Der PIN-Typ sollte automatisch aktualisiert werden.
- Es gibt auch ein "detailliertes Top -n -Übereinstimmungen", das eine Struktur zurückgibt, die den Vektor, die Entfernung des jeweiligen Eintrags enthält, und dann ein Wrapper -Objekt, aus dem sein Wert aus den gelieferten reinen Funktionen erhalten kann (mit Ausnahme von Strukturen, die eine unreine Funktion aufweisen, die die gesamte Ausgangsstruktur als Eingabe in Anspruch nimmt).
- Alle Funktionen "Get Top N -Übereinstimmungen" werden nur die Vektor -Datenbankeinträge mit einem Vektor berücksichtigen, der den Abmessungen des Eingangsvektors entspricht, und mit Eingabetypen, die dem Knotentyp entsprechen. Dies liegt daran, dass die Vektordatenbanken Datentyp Agnostik sind. Sie können eine beliebige Anzahl oder Kombination von Zeichenfolgen, Objekten oder Strukturen in eine Datenbank einfügen (mit Vektoren unterschiedlicher Dimensionen, wenn Sie möchten), und es wird arbeiten, weil die Funktionen nur für sie relevant sind (dh, wenn Sie an einem 700-dimensionen-Vektor-Vektor-Vektor-Vektor-Vektor-Vektor-Vektor-Differisionen übergeben sind. Dazu ist eine leichte Strafe, da die Getter -Funktionen über jeden Eintrag in der Array noch iterieren müssen, unabhängig davon, ob Sie sie berücksichtigen möchten oder nicht.
- Um Einträge aus einer Datenbank zu entfernen, können Sie den Knoten „Eingabe von Vector Database 'entfernen, der einen Eingangsvektor einnimmt und alle Übereinstimmungen beseitigt. Wenn Bremovealloccurcurces auf wahr ist. Dann wird jeder Eintrag mit einem passenden Vektor entfernt. Es gibt auch einen "Entferner -Range" -Float -Eingang, der, wenn sie auf etwas über 0 eingestellt sind, alle Übereinstimmungen innerhalb (oder bei) entfernen, die den Abstand vom Eingangsvektor gegeben haben.
- Zusätzlich gibt es reine Knoten, um die Eintragszahl in der Datenbank zu erhalten (sowie separate Getter -Knoten für die Erzielung der Zeichenfolgeneintragszählungen, der Objekteintragszahl und der Struktureintragszahlen).
Vektoren erzeugen
Derzeit verfügt dieses Plugin über eine "OpenAI -Einbettung" -Plint -Funktion, die einen String -Eingang übernimmt, sowie eine Struktur, die den API -Endpunkt, den Modell und den API -Schlüssel enthält, und stellt eine API -Anforderung an den angegebenen Endpunkt (folgt nach der OpenAi -Einbettungs -API -Format) und gibt das Ergebnis als Array der in der Vektor -Database -Funktionalität bereitgestellten Schwimmer zurück.