Este proyecto se crea para comprender cuán similares son diferentes piezas de texto en un espacio multidimensional. Este es un concepto crucial en las tareas de procesamiento del lenguaje natural (PNL), como la clasificación de texto, la agrupación y los sistemas de recomendación.

Este proyecto es parte de Llamapp
Los vectores simplificados es una aplicación web diseñada para visualizar las embebidas vectoriales. Este proyecto proporciona una interfaz fácil de usar para ingresar el texto, generar integridades vectoriales y visualizar sus similitudes utilizando gráficos interactivos. El núcleo de la aplicación demuestra el concepto de similitud coseno entre los vectores, lo que facilita la comprensión de cuán similares son diferentes piezas de texto en un espacio multidimensional.
Las integridades vectoriales son representaciones numéricas de texto que capturan el significado semántico en un espacio de alta dimensión. Se utilizan en varias tareas de procesamiento del lenguaje natural (PNL), como la clasificación de texto, la agrupación y los sistemas de recomendación. Cada vector consta de múltiples componentes que codifican información sobre las características del texto.
La similitud de coseno es una métrica utilizada para medir cuán similares son dos vectores, basados en el coseno del ángulo entre ellos. Varía de -1 (completamente diferente) a 1 (completamente similar). Se usa ampliamente en el análisis de texto para determinar cómo se basan dos piezas de texto similares en sus representaciones vectoriales.
Aquí hay un ejemplo simple de cómo funciona la similitud de coseno con los vectores 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 Al visualizar los incrustaciones de vectores, especialmente cuando contienen una gran cantidad de elementos, el gráfico puede estar demasiado agrupado y difícil de interpretar. Para abordar esto, se usa una función de suavizado.
La función de suavizado ayuda a reducir el ruido en los datos promediando los valores sobre un tamaño de ventana especificado. Esto hace que el gráfico sea más legible y permite una mejor visualización de las tendencias generales en los datos.
Así es como se implementa la función de suavizado en la aplicación:
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 ;
} ;El suavizado se puede activar o apagar utilizando una casilla de verificación en la interfaz de usuario, proporcionando flexibilidad al usuario.
Ollama y modelo de texto nomical
http://localhost:11434 .nomic-embed-text en el terminal llamando ollama pull nomic-embed-text
Ollama ayuda a ejecutar modelos de idiomas localmente, grandes y pequeños. TEXO-EXTENCIA NOMIC ISA Modelo de incrustación abierta de alto rendimiento con una gran ventana de contexto de token.
Instalar node.js y npm
Clon el repositorio:
git clone www.github.com/rajatasusual/realtime-vector-embeddings.git
cd realtime-vector-embeddingsInstalar dependencias:
npm installEjecute el servidor:
npm run cli Comience a escribir en el terminal para ingresar el texto y obtener incrustaciones de vectores. Los resultados y la gráfica se guardarán como embedding_plot.png en el directorio actual.
El archivo env se puede encontrar en el directorio raíz del proyecto con la configuración predeterminada
PORT=3000
EMBEDDINGS_MODEL=nomic-embed-text
EMBEDDINGS_BASE_URL=http://localhost:11434
SMOOTH=TRUE

Inicie el servidor web :
npm startEsto iniciará el servidor con el puerto predeterminado 3000.
Abrir index.html .
Use el campo de entrada para escribir el texto y haga clic en "enviar" para generar incrustaciones de vectores. Los resultados se mostrarán en el gráfico, y puede interactuar con él para ver las similitudes.
Opción de suavizado : use la casilla de verificación "suave" para activar o desactivar la suavización para una mejor visualización del gráfico.
Este proyecto tiene licencia bajo la licencia MIT. Consulte el archivo de licencia para obtener más detalles.