向量存儲是一個輕巧有效的矢量數據庫,可將文檔向量存儲在瀏覽器的索引eddb中。此軟件包允許您使用矢量嵌入在文本文檔上執行語義相似性搜索。語義搜索是指理解文本文檔和查詢的含義和上下文的能力,從而實現了更準確和相關的搜索結果。向量存儲利用OpenAI嵌入將文本文檔轉換為向量,並提供了一個基於餘弦相似性搜索相似文檔的接口。
餘弦相似性是在內部產品空間中兩個非零向量之間相似性的量度。它被定義為兩個向量之間的角度的餘弦。餘弦值的值範圍為-1至1,其中1表示完全相似性,0表示沒有相似性,-1表示完全差異。
在此軟件包中,餘弦相似性用於測量文檔向量與查詢向量之間的相似性。餘弦相似性評分是使用向量的點產物計算的,除以其幅度的乘積。
最近使用的(LRU)機制用於管理存儲大小,並在存儲大小超過指定限制時自動刪除文檔。文檔由他們的命中櫃檯(上升)和時間戳(上升)進行排序。首先將其命中率和最古老的時間戳的文檔首先刪除,直到存儲尺寸低於極限為止。
使用NPM安裝軟件包:
npm i vector-storage這是如何使用vectorstorage類的基本示例:
import { VectorStorage } from "vector-storage" ;
// Create an instance of VectorStorage
const vectorStore = new VectorStorage ( { openAIApiKey : "your-openai-api-key" } ) ;
// Add a text document to the store
await vectorStore . addText ( "The quick brown fox jumps over the lazy dog." , {
category : "example" ,
} ) ;
// Perform a similarity search
const results = await vectorStore . similaritySearch ( {
query : "A fast fox leaps over a sleepy hound." ,
} ) ;
// Display the search results
console . log ( results ) ; 用於管理IndexedDB中文檔向量的主要類。
創建一個新實例的矢量storage實例。
選項:包含以下屬性的對象:
interface IVSOptions {
openAIApiKey : string ; // The OpenAI API key used for generating embeddings.
maxSizeInMB ?: number ; // The maximum size of the storage in megabytes. Defaults to 2GB
debounceTime ?: number ; // The debounce time in milliseconds for saving to IndexedDB. Defaults to 0.
openaiModel ?: string ; // The OpenAI model used for generating embeddings. Defaults to 'text-embedding-ada-002'.
}將文本文檔添加到商店並返回創建的文檔。
將多個文本文檔添加到商店,並返回創建文檔的數組。
在存儲的文檔上執行相似性搜索,並返回一系列匹配文檔。
參數:包含以下屬性的對象:
IVSDocument接口表示存儲在矢量數據庫中的文檔對象。它包含以下屬性:
interface IVSDocument {
hits ?: number ; // The number of hits (accesses) for the document. Omit if the value is 0.
metadata : object ; // The metadata associated with the document for filtering.
text : string ; // The text content of the document.
timestamp : number ; // The timestamp indicating when the document was added to the store.
vectorMag : number ; // The magnitude of the document vector.
vector : number [ ] ; // The vector representation of the document.
} 歡迎對該項目的貢獻!如果您想做出貢獻,請按照以下步驟:
請確保您的代碼遵循項目的編碼樣式,並在提交拉動請求之前通過所有測試。如果您發現任何錯誤或有改進的建議,請隨時在Github上打開問題。
該項目已根據MIT許可獲得許可。有關完整許可文本,請參見許可證文件。
版權(C)Nitai Aharoni。版權所有。