Penyimpanan Vektor adalah basis data vektor yang ringan dan efisien yang menyimpan vektor dokumen di indexedDB browser. Paket ini memungkinkan Anda untuk melakukan pencarian kesamaan semantik pada dokumen teks menggunakan embeddings vektor. Pencarian semantik mengacu pada kemampuan untuk memahami makna dan konteks dokumen dan pertanyaan teks, memungkinkan hasil pencarian yang lebih akurat dan relevan. Penyimpanan Vektor memanfaatkan embeddings openai untuk mengubah dokumen teks menjadi vektor dan menyediakan antarmuka untuk mencari dokumen serupa berdasarkan kesamaan kosinus.
Kesamaan kosinus adalah ukuran kesamaan antara dua vektor non-nol dalam ruang produk dalam. Ini didefinisikan sebagai kosinus dari sudut antara kedua vektor. Nilai kesamaan kosinus berkisar dari -1 hingga 1, di mana 1 menunjukkan kesamaan lengkap, 0 menunjukkan tidak ada kesamaan, dan -1 menunjukkan perbedaan total.
Dalam paket ini, kesamaan kosinus digunakan untuk mengukur kesamaan antara vektor dokumen dan vektor kueri. Skor kesamaan kosinus dihitung menggunakan produk titik vektor, dibagi dengan produk dari besarnya mereka.
Mekanisme yang paling tidak baru digunakan (LRU) digunakan untuk mengelola ukuran penyimpanan dan secara otomatis menghapus dokumen ketika ukuran penyimpanan melebihi batas yang ditentukan. Dokumen diurutkan berdasarkan counter hit mereka (naik) dan kemudian dengan cap waktu mereka (naik). Dokumen dengan jumlah hit terendah dan cap waktu tertua dilepas terlebih dahulu sampai ukuran penyimpanan di bawah batas.
Instal paket menggunakan NPM:
npm i vector-storageBerikut adalah contoh dasar tentang cara menggunakan kelas 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 ) ; Kelas utama untuk mengelola vektor dokumen di IndexedDB.
Membuat contoh baru VectorStorage.
Opsi : Objek yang berisi properti berikut:
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'.
}Menambahkan dokumen teks ke toko dan mengembalikan dokumen yang dibuat.
Menambahkan beberapa dokumen teks ke toko dan mengembalikan berbagai dokumen yang dibuat.
Melakukan pencarian kesamaan pada dokumen yang tersimpan dan mengembalikan serangkaian dokumen yang cocok.
Params : Objek yang berisi properti berikut:
Antarmuka IVSDocument mewakili objek dokumen yang disimpan dalam database vektor. Ini berisi sifat -sifat berikut:
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.
} Kontribusi untuk proyek ini dipersilakan! Jika Anda ingin berkontribusi, silakan ikuti langkah -langkah ini:
Harap pastikan bahwa kode Anda mengikuti gaya pengkodean proyek dan semua tes lulus sebelum mengirimkan permintaan tarik. Jika Anda menemukan bug atau memiliki saran untuk perbaikan, jangan ragu untuk membuka masalah di GitHub.
Proyek ini dilisensikan di bawah lisensi MIT. Lihat file lisensi untuk teks lisensi lengkap.
Hak Cipta (C) Nitai Aharoni. Semua hak dilindungi undang -undang.