該項目的創建是為了了解多維空間中不同文本的相似文本如何。這是自然語言處理(NLP)任務(例如文本分類,聚類和推薦系統)的關鍵概念。

這個項目是Llamapp的一部分
簡化向量是一個Web應用程序,旨在可視化向量嵌入。該項目為輸入文本提供了一個用戶友好的接口,生成向量嵌入,並使用交互式圖可視化它們的相似性。應用程序的核心展示了向量之間餘弦相似性的概念,從而更容易理解多維空間中不同文本的相似片段。
向量嵌入是在高維空間中捕獲語義含義的文本的數值表示。它們用於各種自然語言處理(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 ;
} ;可以使用UI中的複選框打開或關閉平滑,從而為用戶提供了靈活性。
Ollama和提名文本的模型
http://localhost:11434上運行和訪問。nomic-embed-text命令 ollama pull nomic-embed-text
Ollama有助於在本地,大小都運行語言模型。帶有較大令牌上下文窗口的提名 - Embed-Text ISA高性能開放嵌入模型。
安裝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文件可以在帶有默認設置的項目根目錄中找到
PORT=3000
EMBEDDINGS_MODEL=nomic-embed-text
EMBEDDINGS_BASE_URL=http://localhost:11434
SMOOTH=TRUE

啟動Web服務器:
npm start這將使用默認端口3000啟動服務器。
打開index.html 。
使用輸入字段鍵入文本,然後單擊“提交”以生成矢量嵌入。結果將顯示在圖表上,您可以與其進行交互以查看相似之處。
平滑選項:使用“平滑”複選框切換平滑打開或關閉,以更好地可視化圖形。
該項目已根據MIT許可獲得許可。有關更多詳細信息,請參見許可證文件。