O armazenamento vetorial é um banco de dados vetorial leve e eficiente que armazena vetores documentam no IndexedDB do navegador. Este pacote permite que você realize pesquisas de similaridade semântica em documentos de texto usando o Vector Incoreddings. A pesquisa semântica refere -se à capacidade de entender o significado e o contexto dos documentos e consultas de texto, permitindo resultados de pesquisa mais precisos e relevantes. O armazenamento vetorial aproveita as incorporações do OpenAI para converter documentos de texto em vetores e fornece uma interface para pesquisar documentos semelhantes com base na similaridade de cosseno.
A similaridade de cosseno é uma medida de similaridade entre dois vetores diferentes de zero em um espaço de produto interno. É definido como o cosseno do ângulo entre os dois vetores. O valor de similaridade de cosseno varia de -1 a 1, onde 1 indica similaridade completa, 0 indica não similaridade e -1 indica dissimilaridade completa.
Neste pacote, a similaridade de cosseno é usada para medir a semelhança entre os vetores de documentos e o vetor de consulta. A pontuação de similaridade de cosseno é calculada usando o produto DOT dos vetores, dividido pelo produto de suas magnitudes.
O mecanismo menos recentemente usado (LRU) é usado para gerenciar o tamanho do armazenamento e remover automaticamente os documentos quando o tamanho do armazenamento exceder o limite especificado. Os documentos são classificados pelo seu contador de acerto (ascendente) e depois pelo registro de data e hora (ascendente). Os documentos com a contagem mais baixa de acertos e os registros de data e hora mais antigos são removidos primeiro até que o tamanho do armazenamento esteja abaixo do limite.
Instale o pacote usando o NPM:
npm i vector-storageAqui está um exemplo básico de como usar a classe VectorStorage:
import { VectorStorage } from "vector-storage" ;
// Create an instance of VectorStorage
const vectorStore = new VectorStorage ( { openAIApiKey : "your-openai-api-key" } ) ;
// Add a text document to the store
await vectorStore . addText ( "The quick brown fox jumps over the lazy dog." , {
category : "example" ,
} ) ;
// Perform a similarity search
const results = await vectorStore . similaritySearch ( {
query : "A fast fox leaps over a sleepy hound." ,
} ) ;
// Display the search results
console . log ( results ) ; A classe principal para gerenciar vetores de documentos no indexedDB.
Cria uma nova instância do VectorStorage.
Opções : um objeto que contém as seguintes propriedades:
interface IVSOptions {
openAIApiKey : string ; // The OpenAI API key used for generating embeddings.
maxSizeInMB ?: number ; // The maximum size of the storage in megabytes. Defaults to 2GB
debounceTime ?: number ; // The debounce time in milliseconds for saving to IndexedDB. Defaults to 0.
openaiModel ?: string ; // The OpenAI model used for generating embeddings. Defaults to 'text-embedding-ada-002'.
}Adiciona um documento de texto à loja e retorna o documento criado.
Adiciona vários documentos de texto à loja e retorna uma variedade de documentos criados.
Executa uma pesquisa de similaridade nos documentos armazenados e retorna uma variedade de documentos correspondentes.
Params : um objeto que contém as seguintes propriedades:
A interface IVSDocument representa um objeto de documento armazenado no banco de dados vetorial. Ele contém as seguintes propriedades:
interface IVSDocument {
hits ?: number ; // The number of hits (accesses) for the document. Omit if the value is 0.
metadata : object ; // The metadata associated with the document for filtering.
text : string ; // The text content of the document.
timestamp : number ; // The timestamp indicating when the document was added to the store.
vectorMag : number ; // The magnitude of the document vector.
vector : number [ ] ; // The vector representation of the document.
} As contribuições para este projeto são bem -vindas! Se você deseja contribuir, siga estas etapas:
Certifique -se de que seu código siga o estilo de codificação do projeto e que todos os testes passem antes de enviar uma solicitação de tração. Se você encontrar algum bug ou tiver sugestões de melhorias, sinta -se à vontade para abrir um problema no GitHub.
Este projeto está licenciado sob a licença do MIT. Consulte o arquivo de licença para obter o texto completo da licença.
Copyright (c) Nitai Aharoni. Todos os direitos reservados.