Ce projet est créé pour comprendre à quel point les différents morceaux de texte sont similaires dans un espace multidimensionnel. Il s'agit d'un concept crucial dans les tâches de traitement du langage naturel (NLP) telles que les systèmes de classification de texte, de clustering et de recommandation.

Ce projet fait partie de Llamapp
Les vecteurs simplifiés sont une application Web conçue pour visualiser les incorporations vectorielles. Ce projet fournit une interface conviviale pour saisir du texte, générer des incorporations vectorielles et visualiser leurs similitudes à l'aide de parcelles interactives. Le noyau de l'application démontre le concept de similitude en cosinus entre les vecteurs, ce qui facilite la compréhension de la façon dont les différents éléments de texte sont similaires dans un espace multidimensionnel.
Les incorporations vectorielles sont des représentations numériques du texte qui capturent la signification sémantique dans un espace de grande dimension. Ils sont utilisés dans diverses tâches de traitement du langage naturel (NLP) telles que les systèmes de classification de texte, de clustering et de recommandation. Chaque vecteur se compose de plusieurs composants qui codent des informations sur les fonctionnalités du texte.
La similitude du cosinus est une métrique utilisée pour mesurer à quel point les deux vecteurs sont similaires, sur la base du cosinus de l'angle entre eux. Il varie de -1 (complètement différent) à 1 (complètement similaire). Il est largement utilisé dans l'analyse de texte pour déterminer à quel point deux éléments de texte sont similaires basés sur leurs représentations vectorielles.
Voici un exemple simple de la façon dont la similitude du cosinus fonctionne avec les vecteurs de base:
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 Lors de la visualisation des incorporations vectorielles, surtout lorsqu'ils contiennent un grand nombre d'éléments, le graphique peut devenir trop groupé et difficile à interpréter. Pour y remédier, une fonction de lissage est utilisée.
La fonction de lissage aide à réduire le bruit dans les données en faisant la moyenne des valeurs sur une taille de fenêtre spécifiée. Cela rend le graphique plus lisible et permet une meilleure visualisation des tendances globales des données.
Voici comment la fonction de lissage est implémentée dans l'application:
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 ;
} ;Le lissage peut être activé ou désactivé à l'aide d'une case à cocher dans l'interface utilisateur, offrant une flexibilité à l'utilisateur.
Olllama et modèle de texte nomique
http://localhost:11434 .nomic-embed-text dans le terminal en appelant ollama pull nomic-embed-text
Olllama aide à courir les modèles de langage localement, grands et petits. Modèle d'incorporation ouvert ISA High-Perform Open-Text Nomic-Text avec une grande fenêtre de contexte de jeton.
Installez Node.js et NPM
Clone le référentiel:
git clone www.github.com/rajatasusual/realtime-vector-embeddings.git
cd realtime-vector-embeddingsInstallez les dépendances:
npm installExécutez le serveur:
npm run cli Commencez à taper le terminal pour saisir le texte et obtenir des incorporations vectorielles. Les résultats et le tracé seront enregistrés en tant embedding_plot.png dans le répertoire actuel.
Le fichier Env peut être trouvé dans le répertoire racine du projet avec les paramètres par défaut
PORT=3000
EMBEDDINGS_MODEL=nomic-embed-text
EMBEDDINGS_BASE_URL=http://localhost:11434
SMOOTH=TRUE

Démarrez le serveur Web :
npm startCela démarrera le serveur avec le port par défaut 3000.
Open index.html .
Utilisez le champ de saisie pour taper le texte et cliquez sur "Soumettre" pour générer des intégres vectoriels. Les résultats seront affichés sur le graphique, et vous pouvez interagir avec lui pour afficher les similitudes.
Option de lissage : utilisez la case "lisse" pour activer ou désactiver le lissage pour une meilleure visualisation du graphique.
Ce projet est autorisé sous la licence du MIT. Voir le fichier de licence pour plus de détails.