Dieses Projekt wurde erstellt, um zu verstehen, wie ähnliche Textteile in einem mehrdimensionalen Raum sind. Dies ist ein entscheidendes Konzept für Aufgaben der natürlichen Sprachverarbeitung (NLP) wie Textklassifizierung, Clustering und Empfehlungssysteme.

Dieses Projekt ist Teil von LlamApp
Vektoren vereinfacht sind eine Webanwendung, die zur Visualisierung von Vektoreinbettungen entwickelt wurde. Dieses Projekt bietet eine benutzerfreundliche Schnittstelle, die Text eingibt, Vektoreinbettungen generiert und ihre Ähnlichkeiten mithilfe interaktiver Diagramme visualisieren. Der Kern der Anwendung demonstriert das Konzept der Kosinus-Ähnlichkeit zwischen den Vektoren und erleichtert es, zu verstehen, wie ähnliche Textteile in einem mehrdimensionalen Raum sind.
Vektoreinbettungen sind numerische Darstellungen von Text, die die semantische Bedeutung in einem hochdimensionalen Raum erfassen. Sie werden in verschiedenen Aufgaben der natürlichen Sprachverarbeitung (NLP) wie Textklassifizierung, Clustering und Empfehlungssysteme verwendet. Jeder Vektor besteht aus mehreren Komponenten, die Informationen über die Funktionen des Textes codieren.
Die Ähnlichkeit der Kosinus ist eine Metrik, die verwendet wird, um zu messen, wie ähnliche zwei Vektoren auf dem Cosinus des Winkels zwischen ihnen basieren. Es reicht von -1 (völlig unähnlich) bis 1 (völlig ähnlich). Es wird in der Textanalyse häufig verwendet, um zu bestimmen, wie ähnlich zwei Textteile auf ihren Vektordarstellungen basieren.
Hier ist ein einfaches Beispiel dafür, wie Cosinus -Ähnlichkeit mit grundlegenden Vektoren funktioniert:
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 Bei der Visualisierung von Vektor -Einbettungen, insbesondere wenn sie eine große Anzahl von Elementen enthalten, kann das Diagramm zu gruppiert und schwer zu interpretieren. Um dies zu beheben, wird eine Glättungsfunktion verwendet.
Die Glättungsfunktion hilft bei der Reduzierung des Rauschens in den Daten, indem die Werte über eine bestimmte Fenstergröße gemittelt werden. Dies macht den Diagramm lesbarer und ermöglicht eine bessere Visualisierung der Gesamttrends in den Daten.
So wird die Glättungsfunktion in der Anwendung implementiert:
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 ;
} ;Die Glättung kann mit einem Kontrollkästchen in der Benutzeroberfläche ein- oder ausgeschaltet werden, was dem Benutzer Flexibilität bietet.
Das Ollama- und Nomic-Text-EMBE-Modell
http://localhost:11434 zugänglich ist.nomic-embed-text im Terminal durch Anruf aus ollama pull nomic-embed-text
Ollama hilft bei der Ausführung von Sprachmodellen lokal, groß und klein. Nomic-embed-Text ISA Hochleistungs-Open-Einbettungsmodell mit einem großen Token-Kontextfenster.
Installieren Sie node.js und npm
Klonen Sie das Repository:
git clone www.github.com/rajatasusual/realtime-vector-embeddings.git
cd realtime-vector-embeddingsAbhängigkeiten installieren:
npm installFühren Sie den Server aus:
npm run cli Geben Sie in das Terminal ein, um Text einzugeben und Vektoreinbettungen zu erhalten. Die Ergebnisse und das Diagramm werden im aktuellen Verzeichnis als embedding_plot.png gespeichert.
Die Env -Datei finden Sie im Projektstammverzeichnis mit Standardeinstellungen
PORT=3000
EMBEDDINGS_MODEL=nomic-embed-text
EMBEDDINGS_BASE_URL=http://localhost:11434
SMOOTH=TRUE

Starten Sie den Webserver :
npm startDadurch wird der Server mit dem Standardport 3000 gestartet.
Open index.html .
Verwenden Sie das Feld Eingabe, um Text einzugeben, und klicken Sie auf "Senden", um Vektoreinbettungen zu generieren. Die Ergebnisse werden im Diagramm angezeigt, und Sie können mit ihm interagieren, um Ähnlichkeiten anzuzeigen.
Glättungsoption : Verwenden Sie das Kontrollkästchen "Smooth", um die Glättung ein- oder auszuschalten, um eine bessere Visualisierung des Diagramms zu erhalten.
Dieses Projekt ist unter der MIT -Lizenz lizenziert. Weitere Informationen finden Sie in der Lizenzdatei.