Vector complemento de la base de datos para Unreal Engine 5
Este complemento agrega un tipo de base de datos vectorial simplificado a Unreal Engine 5, diseñado con planos en mente.
Advertencia: trabajo en progreso
Esto todavía está en un estado temprano, así que no se sorprenda si experimenta accidentes. Estoy haciendo este complemento para algunos proyectos en particular, pero pensé que sería bueno compartirlo. Si lo prueba y experimenta problemas, no dude en abrir un nuevo problema con cualquier información de registro que pueda ser útil.
Instalación
Este repositorio incluye todo el proyecto (UE 5.4) que estoy usando para probar y desarrollar este complemento. No necesita clonar todo este proyecto. Para instalar el complemento, siga estos pasos:
- Descargue la carpeta Plugins/VectorSearch y colóquela en la carpeta de complementos de su proyecto (cree esto si no existe)
- En este momento, puede intentar abrir el proyecto. Existe la posibilidad de que ya funcione.
- Haga clic derecho en su archivo .Uproject y haga clic en 'Generar archivos de proyecto Visual Studio'
- Abra la solución del proyecto (archivo .sln) y cree el proyecto, asegúrese de que no haya errores de compilación
- Si experimenta algún problema de compilación, publique el inicio de sesión de compilación en la pestaña Problemas
- Abra su proyecto y busque 'Base de datos vectorial' en un gráfico de planos para ver las funciones disponibles
Esta guía de instalación supone que tiene un proyecto C ++, ya que no he podido probar este complemento en un proyecto de plano. Si tiene un proyecto de BluePrint, puede crear rápida y fácilmente un proyecto en blanco C ++ y hacer la compilación allí, creo que copiar/pegarse de ese proyecto funcionaría.
¿Cómo funciona?
- Usando el nodo 'Crear nueva base de datos vectorial', puede inicializar una nueva base de datos Vector y luego guardar una referencia como una variable.
- Usando este objeto como objetivo, puede usar los nodos 'Agregar entrada a la base de datos de vector' para agregar una entrada (y su vector correspondiente, una matriz de flotadores) de cualquier tipo de datos (el complemento actualmente admite cadena, objeto y estructuras de entradas puede contener la mayoría de los tipos variables, sin embargo, las entradas de cadena y objeto solo existen por simplicidad en algunos casos de uso).
- Para recuperar las entradas de la base de datos, puede usar los nodos 'Obtener los mejores coincidentes'. Estos toman el objeto de la base de datos de vectores, un vector (matriz de flotadores) y un valor 'n' (la cantidad de coincidencias para devolver). Estos nodos luego calculan las entradas N superiores en la base de datos, basada en la distancia del vector de cada entrada desde el vector de entrada.
- Las coincidencias 'Get Top N Struct' tienen una salida comodín, para que su estructura sea de nuevo conecte un setter de variable o un rompedor de estructura de A para cada bucle, luego conecte la entrada de la matriz de bucle a la salida comodín 'Get Top N Struct coincidentes': el tipo de pin debe actualizar automáticamente.
- También hay un 'Get Top N coincidentes' detallado que devolverá una estructura que contenga el vector de cada entrada encontrada, la distancia y luego un objeto de envoltura desde donde su valor puede obtener de las funciones puras suministradas (excepto las estructuras, que tienen una función impura que toma toda la estructura de salida como su entrada)
- Todas las funciones de 'Get Top n coincidentes' solo considerarán las entradas de la base de datos vectorial con un vector que coincida con las dimensiones del vector de entrada y con los tipos de entrada que coinciden con el tipo de nodo. Esto se debe a que las bases de datos de vectores son de tipo de datos agnóstico: puede colocar cualquier número o combinación de cadenas, objetos o estructuras en una base de datos (con vectores de diferentes dimensiones también, si lo desea) y funcionará, porque las funciones GET solo consideran las entradas relevantes para ellos (lo que significa si pasa en un vector de 700 Dimension, cualquier entrada con un vector de diferentes dimensiones no se considera). Hay una ligera penalización por hacer esto, ya que las funciones de Getter aún necesitan iterar sobre cada entrada en la matriz, independientemente de si desea o no considerarlas o no.
- Para eliminar las entradas de una base de datos, puede usar el nodo 'eliminar la entrada de la base de datos de vector' que toma un vector de entrada y elimina cualquier coincidencia. Si Bremovealloccurencias se establece en verdadero. luego se eliminará cualquier entrada con un vector coincidente. También hay una entrada flotante de 'eliminación', que si se establece en algo por encima de 0, eliminará cualquier coincidencia dentro (o at) que se dio la distancia del vector de entrada.
- Además, hay nodos puros para obtener el recuento de entrada en la base de datos (así como los nodos de Getter separados para obtener el recuento de entradas de cadena, el recuento de entrada de objeto y los recuentos de entrada de estructura).
Generando vectores
Actualmente, este complemento tiene una función de planos 'Generar OpenAI "que adopta una entrada de cadena, así como una estructura que contiene el punto final de API, el modelo y la clave API, y realiza una solicitud API para el punto final especificado (después del formato API de incrustación de OpenAI) y devuelve el resultado como una matriz de FLOATS listas para ser utilizadas en la funcionalidad de la base de datos de vector.