Der Vektorspeicher ist eine leichte und effiziente Vektor -Datenbank, die Dokumentvektoren im indexierten Browser indexiert ist. Mit diesem Paket können Sie semantische Ähnlichkeitssuche in Textdokumenten mithilfe von Vektoreinbettungen durchführen. Die semantische Suche bezieht sich auf die Fähigkeit, die Bedeutung und den Kontext von Textdokumenten und Abfragen zu verstehen und genauer und relevantere Suchergebnisse zu ermöglichen. Vektorspeicher nutzt OpenAi -Einbettungen, um Textdokumente in Vektoren umzuwandeln, und bietet eine Schnittstelle zur Suche nach ähnlichen Dokumenten basierend auf der Ähnlichkeit von Cosinus.
Die Ähnlichkeit der Kosinus ist ein Maß für die Ähnlichkeit zwischen zwei Vektoren ungleich Null in einem inneren Produktraum. Es ist definiert als der Cosinus des Winkels zwischen den beiden Vektoren. Der Kosinus -Ähnlichkeitswert reicht von -1 bis 1, wobei 1 eine vollständige Ähnlichkeit angibt, 0 gibt keine Ähnlichkeit an und -1 zeigt eine vollständige Unähnlichkeit an.
In diesem Paket wird die Ähnlichkeit der Cosinus verwendet, um die Ähnlichkeit zwischen Dokumentvektoren und dem Abfragebericht zu messen. Der Cosinus -Ähnlichkeitswert wird unter Verwendung des Punktprodukts der Vektoren berechnet, geteilt durch das Produkt ihrer Größen.
Der am wenigsten verwendete (LRU) -Mechanismus (LRU) wird verwendet, um die Speichergröße zu verwalten und Dokumente automatisch zu entfernen, wenn die Speichergröße die angegebene Grenze überschreitet. Dokumente werden nach ihrem Trefferschalter (aufsteigend) und dann durch ihren Zeitstempel (aufsteigend) sortiert. Dokumente mit der niedrigsten Trefferzahl und ältesten Zeitstempel werden zuerst entfernt, bis die Speichergröße unter der Grenze liegt.
Installieren Sie das Paket mit NPM:
npm i vector-storageHier ist ein grundlegendes Beispiel für die Verwendung der VectorStorage -Klasse:
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 ) ; Die Hauptklasse für die Verwaltung von Dokumentenvektoren in IndexedDB.
Erstellt eine neue Instanz von VectorStorage.
Optionen : Ein Objekt, das die folgenden Eigenschaften enthält:
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'.
}Fügt dem Geschäft ein Textdokument hinzu und gibt das erstellte Dokument zurück.
Fügt dem Geschäft mehrere Textdokumente hinzu und gibt eine Reihe erstellter Dokumente zurück.
Führt eine Ähnlichkeitssuche in den gespeicherten Dokumenten durch und gibt eine Reihe von übereinstimmenden Dokumenten zurück.
Parameter : Ein Objekt, das die folgenden Eigenschaften enthält:
Die IVSDocument -Schnittstelle stellt ein Dokumentobjekt dar, das in der Vektor -Datenbank gespeichert ist. Es enthält die folgenden Eigenschaften:
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.
} Beiträge zu diesem Projekt sind willkommen! Wenn Sie einen Beitrag leisten möchten, befolgen Sie bitte die folgenden Schritte:
Bitte stellen Sie sicher, dass Ihr Code dem Codierungsstil des Projekts folgt und dass alle Tests bestehen, bevor Sie eine Pull -Anfrage senden. Wenn Sie Fehler finden oder Vorschläge für Verbesserungen haben, können Sie ein Problem auf GitHub eröffnen.
Dieses Projekt ist unter der MIT -Lizenz lizenziert. In der Lizenzdatei finden Sie den vollständigen Lizenztext.
Copyright (c) Nitai Aharoni. Alle Rechte vorbehalten.