Este projeto é criado para entender como diferentes peças de texto são semelhantes em um espaço multidimensional. Este é um conceito crucial em tarefas de processamento de linguagem natural (PNL), como classificação de texto, clustering e sistemas de recomendação.

Este projeto faz parte do Llamapp
Os vetores simplificados são um aplicativo da Web projetado para visualizar incorporações de vetor. Este projeto fornece uma interface amigável para inserir texto, gerar incorporações de vetor e visualizar suas semelhanças usando gráficos interativos. O núcleo do aplicativo demonstra o conceito de similaridade de cosseno entre os vetores, facilitando a compreensão do quão diferentes são diferentes peças de texto em um espaço multidimensional.
As incorporações vetoriais são representações numéricas do texto que capturam significado semântico em um espaço de alta dimensão. Eles são usados em várias tarefas de processamento de linguagem natural (PNL), como classificação de texto, clustering e sistemas de recomendação. Cada vetor consiste em vários componentes que codificam informações sobre os recursos do texto.
A similaridade de cosseno é uma métrica usada para medir como dois vetores são semelhantes, com base no cosseno do ângulo entre eles. Varia de -1 (completamente diferente) a 1 (completamente semelhante). É amplamente utilizado na análise de texto para determinar como duas peças de texto são baseadas em suas representações vetoriais.
Aqui está um exemplo simples de como a similaridade de cosseno funciona com vetores básicos:
function calculateCosineSimilarity ( vec1 , vec2 ) {
const dotProduct = vec1 . reduce ( ( acc , val , idx ) => acc + val * vec2 [ idx ] , 0 ) ;
const magnitude1 = Math . sqrt ( vec1 . reduce ( ( acc , val ) => acc + val * val , 0 ) ) ;
const magnitude2 = Math . sqrt ( vec2 . reduce ( ( acc , val ) => acc + val * val , 0 ) ) ;
return dotProduct / ( magnitude1 * magnitude2 ) ;
}
// Example vectors
const vectorA = [ 1 , 2 , 3 ] ;
const vectorB = [ 4 , 5 , 6 ] ;
const similarity = calculateCosineSimilarity ( vectorA , vectorB ) ;
console . log ( `Cosine Similarity: ${ similarity . toFixed ( 2 ) } ` ) ; // Output: Cosine Similarity: 0.9746 Ao visualizar incorporações de vetores, especialmente quando contêm um grande número de itens, o gráfico pode ficar muito agrupado e difícil de interpretar. Para resolver isso, uma função de suavização é usada.
A função de suavização ajuda a reduzir o ruído nos dados, calculando a média dos valores em um tamanho de janela especificado. Isso torna o gráfico mais legível e permite uma melhor visualização das tendências gerais nos dados.
Veja como a função de suavização é implementada no aplicativo:
const smoothData = ( data , windowSize ) => {
const smoothed = [ ] ;
for ( let i = 0 ; i < data . length ; i ++ ) {
const start = Math . max ( 0 , i - Math . floor ( windowSize / 2 ) ) ;
const end = Math . min ( data . length , i + Math . floor ( windowSize / 2 ) + 1 ) ;
const window = data . slice ( start , end ) ;
const average = window . reduce ( ( sum , val ) => sum + val , 0 ) / window . length ;
smoothed . push ( average ) ;
}
return smoothed ;
} ;A suavização pode ser ativada ou desativada usando uma caixa de seleção na interface do usuário, proporcionando flexibilidade ao usuário.
Ollama e Modelo de Encadeamento de Texto Nomic
http://localhost:11434 .nomic-embed-text no terminal ligando ollama pull nomic-embed-text
Ollama ajuda a executar modelos de idiomas localmente, grandes e pequenos. Modelo de incorporação aberta de alto desempenho de texto de texto nomic com uma grande janela de contexto de token.
Instale Node.js e NPM
Clone o repositório:
git clone www.github.com/rajatasusual/realtime-vector-embeddings.git
cd realtime-vector-embeddingsInstale dependências:
npm installExecute o servidor:
npm run cli Comece a digitar no terminal para inserir texto e obter incorporações de vetor. Os resultados e o gráfico serão salvos como embedding_plot.png no diretório atual.
O arquivo ENV pode ser encontrado no diretório raiz do projeto com configurações padrão
PORT=3000
EMBEDDINGS_MODEL=nomic-embed-text
EMBEDDINGS_BASE_URL=http://localhost:11434
SMOOTH=TRUE

Inicie o servidor da web :
npm startIsso iniciará o servidor com a porta 3000 padrão.
Open index.html .
Use o campo de entrada para digitar o texto e clique em "Enviar" para gerar incorporações de vetor. Os resultados serão exibidos no gráfico e você poderá interagir com ele para visualizar semelhanças.
Opção de suavização : use a caixa de seleção "suave" para atingir ou desativar a suavização para obter uma melhor visualização do gráfico.
Este projeto está licenciado sob a licença do MIT. Consulte o arquivo de licença para obter mais detalhes.