การจัดเก็บเวกเตอร์เป็นฐานข้อมูลเวกเตอร์ที่มีน้ำหนักเบาและมีประสิทธิภาพซึ่งเก็บเอกสารเวกเตอร์เอกสารไว้ในดัชนีของเบราว์เซอร์ แพ็คเกจนี้ช่วยให้คุณสามารถทำการค้นหาความคล้ายคลึงกันแบบความหมายในเอกสารข้อความโดยใช้การฝังเวกเตอร์ การค้นหาความหมายหมายถึงความสามารถในการทำความเข้าใจความหมายและบริบทของเอกสารข้อความและการสืบค้นทำให้เกิดผลการค้นหาที่แม่นยำและเกี่ยวข้องมากขึ้น การจัดเก็บเวกเตอร์ใช้ประโยชน์จาก OpenAI EMBEDDINGS เพื่อแปลงเอกสารข้อความเป็นเวกเตอร์และจัดเตรียมอินเทอร์เฟซสำหรับการค้นหาเอกสารที่คล้ายกันตามความคล้ายคลึงกันของโคไซน์
ความคล้ายคลึงกันของโคไซน์เป็นการวัดความคล้ายคลึงกันระหว่างเวกเตอร์ที่ไม่ใช่ศูนย์สองตัวในพื้นที่ผลิตภัณฑ์ภายใน มันถูกกำหนดให้เป็นโคไซน์ของมุมระหว่างเวกเตอร์ทั้งสอง ค่าความคล้ายคลึงกันของโคไซน์มีช่วงตั้งแต่ -1 ถึง 1 โดยที่ 1 หมายถึงความคล้ายคลึงกันที่สมบูรณ์ 0 หมายถึงไม่มีความคล้ายคลึงกันและ -1 หมายถึงความแตกต่างที่สมบูรณ์
ในแพ็คเกจนี้ความคล้ายคลึงกันของโคไซน์ใช้ในการวัดความคล้ายคลึงกันระหว่างเวกเตอร์เอกสารและเวกเตอร์แบบสอบถาม คะแนนความคล้ายคลึงกันของโคไซน์คำนวณโดยใช้ผลิตภัณฑ์ DOT ของเวกเตอร์หารด้วยผลิตภัณฑ์ของขนาดของพวกเขา
กลไกที่ใช้น้อยที่สุด (LRU) ใช้เพื่อจัดการขนาดการจัดเก็บและลบเอกสารโดยอัตโนมัติเมื่อขนาดการจัดเก็บเกินขีด จำกัด ที่ระบุ เอกสารจะถูกจัดเรียงตามตัวนับ HIT (จากน้อยไปมาก) จากนั้นโดยการประทับเวลาของพวกเขา (จากน้อยไปมาก) เอกสารที่มีจำนวน HIT ต่ำสุดและการประทับเวลาที่เก่าแก่ที่สุดจะถูกลบออกก่อนจนกว่าขนาดการจัดเก็บจะต่ำกว่าขีด จำกัด
ติดตั้งแพ็คเกจโดยใช้ 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
สร้างอินสแตนซ์ใหม่ของ 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'.
}
เพิ่มเอกสารข้อความไปยังร้านค้าและส่งคืนเอกสารที่สร้างขึ้น
เพิ่มเอกสารข้อความหลายฉบับไปยังร้านค้าและส่งคืนเอกสารที่สร้างขึ้น
ทำการค้นหาความคล้ายคลึงกันในเอกสารที่เก็บไว้และส่งคืนเอกสารการจับคู่
Params : วัตถุที่มีคุณสมบัติต่อไปนี้:
อินเตอร์เฟส 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 สงวนลิขสิทธิ์