ベクトルストレージは、ブラウザのindexedDBにドキュメントベクトルを保存する軽量で効率的なベクトルデータベースです。このパッケージを使用すると、ベクトル埋め込みを使用してテキストドキュメントでセマンティックな類似性検索を実行できます。セマンティック検索とは、テキストドキュメントとクエリの意味とコンテキストを理解する能力を指し、より正確で関連する検索結果を可能にします。ベクトルストレージは、テキストドキュメントをベクトルに変換するためにOpenAI埋め込みを活用し、COSINEの類似性に基づいて同様のドキュメントを検索するためのインターフェイスを提供します。
コサインの類似性は、内部製品空間の2つの非ゼロベクトル間の類似性の尺度です。 2つのベクトル間の角度のコサインとして定義されます。コサインの類似性値は-1〜1の範囲で、1は完全な類似性を示し、0は類似性がなく、-1は完全な類似性を示します。
このパッケージでは、Cosineの類似性を使用して、ドキュメントベクトルとクエリベクトルの類似性を測定します。コサイン類似性スコアは、ベクトルのDOT積を使用して計算され、その大きさの積で割っています。
最近使用されていない(LRU)メカニズムは、ストレージサイズを管理し、ストレージサイズが指定された制限を超えた場合にドキュメントを自動的に削除するために使用されます。ドキュメントは、ヒットカウンター(昇順)、そしてタイムスタンプ(上昇)によってソートされます。最も低いヒットカウントと最古のタイムスタンプを持つドキュメントは、ストレージサイズが制限を下回るまで最初に削除されます。
NPMを使用してパッケージをインストールします。
npm i vector-storageVectorStorageクラスの使用方法の基本的な例を次に示します。
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のドキュメントベクトルを管理するためのメインクラス。
VectorStorageの新しいインスタンスを作成します。
オプション:次のプロパティを含むオブジェクト:
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インターフェイスは、Vectorデータベースに保存されているドキュメントオブジェクトを表します。次のプロパティが含まれています。
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。無断転載を禁じます。