RagSearchunity permite implementar una búsqueda semántica dentro del motor Unity.
Es un sistema de generación aumentada de recuperación (RAG) potenciada por los mejores modelos de recuperación de código abierto disponibles.
RagSearchunity está construido sobre los increíbles transformadores y bibliotecas de USearch.
Probado en Unity: 2021 LTS, 2022 LTS, 2023
Window > Package Manager+ y seleccione Add package from git URLhttps://github.com/undreamai/RAGSearchUnity.git y haga clic en Add RagSearchunity implementa una funcionalidad de búsqueda de similitud súper rápida con un sistema de generación acuático (RAG) de recuperación.
Esto funciona de la siguiente manera.
Construyendo los datos que proporciona entradas de texto (una frase, párrafo, documento) para agregar a los datos
Cada entrada se divide en oraciones (opcionales) y se codifica en incrustaciones con un modelo de aprendizaje profundo.
Al buscar , puede buscar una entrada de texto de consulta.
La entrada está nuevamente codificada y se recuperan las entradas o oraciones de texto más similares en los datos.
Para usar la búsqueda:
Add Component y seleccione el script Embedding ).¿En su script puede usarlo de la siguiente manera?:
using RAGSearchUnity ;
public class MyScript : MonoBehaviour
{
public Embedding embedding ;
SearchEngine search ;
void Game ( ) {
.. .
string [ ] inputs = new string [ ] {
" Hi! I'm a search system. " , " the weather is nice. I like it. " , " I'm a RAG system "
} ;
// build the embedding
EmbeddingModel model = embedding . GetModel ( ) ;
search = new SearchEngine ( model ) ;
foreach ( string input in inputs ) search . Add ( input ) ;
// get the 2 most similar phrases
string [ ] similar = search . Search ( " hello! " , 2 ) ;
// or get the 2 most similar sentences
string [ ] similarSentences = search . SearchSentences ( " hello! " , 2 ) ;
.. .
}
}Puede guardar los datos junto con los incrustaciones:
search . Save ( " Embeddings.zip " ) ;y cargarlos desde el disco:
SearchEngine search = SearchEngine . Load ( model , " Embeddings.zip " ) ;También puede especificar los delimitadores para usar o no dividir:
// use ".", "!", "?" as delimiters
search = new SearchEngine ( model , " .!? " ) ;
// don't split sentences
search = new SearchEngine ( model , null ) ; Si desea administrar múltiples búsquedas independientes, RagSearchunity proporciona la clase MultiSearchEngine para facilitar el uso:
MultiSearchEngine multisearch = new MultiSearchEngine ( model ) ;
// add a text for a specific search
multisearch . Add ( " hi I'm Luke " , " search1 " ) ;
multisearch . Add ( " Searching, searching, searching... " , " search1 " ) ;
multisearch . Add ( " hi I'm Jane " , " search2 " ) ;
// search for similar text in all searches
string [ ] similar = multisearch . Search ( " hello! " , 2 ) ;
// search for similar texts within a specific search
string [ ] similar = multisearch . Search ( " hi there! " , 1 , " search1 " ) ;¡Eso es todo!
¿La muestra de HamletSearch contiene un sistema de búsqueda de ejemplo para el juego de Hamlet? Para instalar la muestra:
Window > Package ManagerRAGSearchUnity . Desde la pestaña Samples , haga clic en Import junto a la muestra. La muestra se puede ejecutar con la Scene.unity Escena de unidades que contiene dentro de su carpeta.
En la escena, seleccione la Embedding GameObject y descargue uno de los modelos ( Download model ).
¡Guarde la escena, corre y disfrute!
La licencia de RagSearchunity es MIT (License.MD) y utiliza software y modelos de terceros con licencias MIT y Apache (Avistas de terceros.md).