A RagSearchUnity permite implementar a pesquisa semântica no mecanismo de unidade.
É um sistema de geração aumentada de recuperação (RAG) capacitada pelos melhores modelos de recuperação de código aberto disponíveis.
A RagSearchUnity é construída sobre as impressionantes transformistas e bibliotecas de pesquisa.
Testado na Unidade: 2021 LTS, 2022 LTS, 2023
Window > Package Manager+ e selecione Add package from git URLhttps://github.com/undreamai/RAGSearchUnity.git e clique em Add A RagSearchUnity implementa uma funcionalidade de pesquisa de similaridade super-rápida com um sistema de geração de recuperação upentada (RAG).
Isso funciona da seguinte maneira.
Construindo os dados que você fornece entradas de texto (uma frase, parágrafo, documento) para adicionar aos dados
Cada entrada é dividida em frases (opcionais) e codificada em incorporações com um modelo de aprendizado profundo.
Pesquisando você pode procurar uma entrada de texto de consulta.
A entrada é novamente codificada e as entradas ou frases de texto mais semelhantes nos dados são recuperadas.
Para usar a pesquisa:
Add Component e selecione o script Embedding ).No seu script, você pode usá -lo da seguinte forma ?:
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 ) ;
.. .
}
}Você pode salvar os dados junto com as incorporações:
search . Save ( " Embeddings.zip " ) ;e carregue -os do disco:
SearchEngine search = SearchEngine . Load ( model , " Embeddings.zip " ) ;Você também pode especificar os delimitadores para usar ou sem divisão:
// use ".", "!", "?" as delimiters
search = new SearchEngine ( model , " .!? " ) ;
// don't split sentences
search = new SearchEngine ( model , null ) ; Se você deseja gerenciar várias pesquisas independentes, o RagSearchUnity fornece a classe MultiSearchEngine para facilitar o 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 " ) ;Isso é tudo !
A amostra Hamletsearch contém um sistema de pesquisa de exemplo para o Hamlet Play ?. Para instalar a amostra:
Window > Package ManagerRAGSearchUnity . Na guia Samples , clique em Import ao lado da amostra. A amostra pode ser executada com a Scene.unity Cena da unidade que ele contém dentro de sua pasta.
Na cena, selecione o GameObject Embedding e faça o download de um dos modelos ( Download model ).
Salve a cena, corra e aproveite!
A licença da RagSearchUnity é o MIT (Licença.md) e usa software e modelos de terceiros com licenças MIT e Apache (avisos de terceiros.md).