Этот проект создан, чтобы понять, насколько похожи различные части текста находятся в многомерном пространстве. Это важная концепция в задачах обработки естественного языка (NLP), таких как классификация текста, кластеризация и системы рекомендаций.

Этот проект является частью LlamApp
Векторы упрощенные - это веб -приложение, предназначенное для визуализации векторных встроений. Этот проект обеспечивает удобный интерфейс для ввода текста, генерируйте векторные встроения и визуализируйте их сходство с использованием интерактивных графиков. Ядро приложения демонстрирует концепцию сходства косинуса между векторами, что облегчает понимание того, насколько похожи различные части текста находятся в многомерном пространстве.
Векторные встраивания являются численными представлениями текста, которые захватывают семантическое значение в высоком измерном пространстве. Они используются в различных задачах обработки естественного языка (NLP), таких как классификация текста, кластеризация и системы рекомендаций. Каждый вектор состоит из нескольких компонентов, которые кодируют информацию об функциях текста.
Сходство косинуса - это метрика, используемая для измерения того, насколько похожи два вектора, основанные на косинусе угла между ними. Он варьируется от -1 (совершенно разнородна) до 1 (совершенно похоже). Он широко используется в анализе текста, чтобы определить, насколько похожи два часа текста основаны на их векторных представлениях.
Вот простой пример того, как сходство косинуса работает с основными векторами:
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 При визуализации векторных вторжений, особенно когда они содержат большое количество элементов, график может стать слишком кластеризованным и трудным для интерпретации. Для решения этого используется функция сглаживания.
Функция сглаживания помогает уменьшить шум в данных путем усреднения значений по указанному размеру окна. Это делает график более читабельным и позволяет лучше визуализировать общие тенденции в данных.
Вот как функция сглаживания реализована в приложении:
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 ;
} ;Сглажение может быть включено или выключено, используя флажок в пользовательском интерфейсе, обеспечивая гибкость пользователю.
Оллама и номинальная модель, вставленная текстом
http://localhost:11434 .nomic-embed-text в терминале, вызовите ollama pull nomic-embed-text
Оллама помогает в управлении языковыми моделями на местном, большем и маленьком. Номинальная модель с номинальным текстом.
Установить node.js и npm
Клонировать репозиторий:
git clone www.github.com/rajatasusual/realtime-vector-embeddings.git
cd realtime-vector-embeddingsУстановить зависимости:
npm installЗапустите сервер:
npm run cli Начните набирать ввод в терминал для ввода текста и получить векторные встраивания. Результаты и график будут сохранены как embedding_plot.png в текущем каталоге.
Env File можно найти в каталоге Project Root с настройками по умолчанию
PORT=3000
EMBEDDINGS_MODEL=nomic-embed-text
EMBEDDINGS_BASE_URL=http://localhost:11434
SMOOTH=TRUE

Запустите веб -сервер :
npm startЭто запустит сервер с порта 3000 по умолчанию.
Open index.html .
Используйте поле ввода, чтобы ввести текст, и нажмите «Отправить», чтобы сгенерировать векторные вставки. Результаты будут отображаться на графике, и вы можете взаимодействовать с ним, чтобы просмотреть сходства.
Опция сглаживания : используйте флажок «Гладкий» для переключения сглаживания или выключения для лучшей визуализации графика.
Этот проект лицензирован по лицензии MIT. Смотрите файл лицензии для получения более подробной информации.