Semantic Cache adalah alat untuk menyimpan teks alami berdasarkan kesamaan semantik. Ini ideal untuk tugas apa pun yang melibatkan kueri atau pengambilan informasi berdasarkan makna, seperti klasifikasi bahasa alami atau menyimpan respons AI dalam cache. Dua bagian teks bisa serupa tetapi tidak identik (misalnya, "tempat menarik untuk dikunjungi di Spanyol" vs. "tempat terbaik untuk dikunjungi di Spanyol"). Caching tradisional tidak mengenali kesamaan semantik ini dan melewatkan peluang untuk digunakan kembali.
Cache Semantik memungkinkan Anda untuk:
Instal paket:
npm install @upstash/semantic-cache @upstash/vector
Pertama, buat database Upstash Vector di sini. Anda memerlukan kredensial url
dan token
untuk menghubungkan cache semantik Anda. Penting: Pilih model penyematan yang telah dibuat sebelumnya saat membuat database Anda.
Catatan
Model penyematan yang berbeda cocok untuk kasus penggunaan yang berbeda. Misalnya, jika latensi rendah adalah prioritasnya, pilih model dengan ukuran dimensi yang lebih kecil seperti bge-small-en-v1.5
. Jika akurasi penting, pilih model dengan dimensi lebih banyak.
Buat file .env
di direktori root proyek Anda dan tambahkan URL dan token Upstash Vector Anda:
UPSTASH_VECTOR_REST_URL=https://example.upstash.io
UPSTASH_VECTOR_REST_TOKEN=your_secret_token_here
Inilah cara Anda menggunakan Cache Semantik di aplikasi Node.js Anda:
import { SemanticCache } from "@upstash/semantic-cache" ;
import { Index } from "@upstash/vector" ;
// ? your vector database
const index = new Index ( ) ;
// ? your semantic cache
const semanticCache = new SemanticCache ( { index , minProximity : 0.95 } ) ;
async function runDemo ( ) {
await semanticCache . set ( "Capital of Turkey" , "Ankara" ) ;
await delay ( 1000 ) ;
// ? outputs: "Ankara"
const result = await semanticCache . get ( "What is Turkey's capital?" ) ;
console . log ( result ) ;
}
function delay ( ms : number ) {
return new Promise ( ( resolve ) => setTimeout ( resolve , ms ) ) ;
}
runDemo ( ) ;
minProximity
Parameter minProximity
berkisar dari 0
hingga 1
. Ini memungkinkan Anda menentukan skor relevansi minimum untuk menentukan cache hit. Semakin tinggi angkanya, semakin mirip input pengguna Anda dengan konten cache agar menjadi hit. Dalam praktiknya, skor 0,95 menunjukkan kesamaan yang sangat tinggi, sedangkan skor 0,75 sudah menunjukkan kesamaan yang rendah. Misalnya, nilai 1,00, yang merupakan nilai tertinggi, hanya akan menerima pencocokan tepat dari kueri pengguna dan konten cache Anda sebagai cache hit.
Anda dapat memisahkan data Anda ke dalam partisi dengan namespace.
import { SemanticCache } from "@upstash/semantic-cache" ;
import { Index } from "@upstash/vector" ;
// ? your vector database
const index = new Index ( ) ;
// ? your semantic cache
const semanticCache = new SemanticCache ( { index , minProximity : 0.95 , namespace : "user1" } ) ;
await semanticCache . set ( "Capital of Turkey" , "Ankara" ) ;
Contoh berikut menunjukkan bagaimana Anda dapat memanfaatkan Semantic Cache dalam berbagai kasus penggunaan:
Catatan
Kami menambahkan penundaan 1 detik setelah mengatur data untuk memberikan waktu bagi indeks vektor untuk diperbarui. Penundaan ini diperlukan untuk memastikan bahwa data tersedia untuk diambil.
await semanticCache . set ( "Capital of France" , "Paris" ) ;
await delay ( 1000 ) ;
// ? outputs "Paris"
const result = await semanticCache . get ( "What's the capital of France?" ) ;
await semanticCache . set ( "largest city in USA by population" , "New York" ) ;
await delay ( 1000 ) ;
// ? outputs "New York"
const result = await semanticCache . get ( "which is the most populated city in the USA?" ) ;
Catatan: Model penyematan Anda harus mendukung bahasa yang ingin Anda gunakan.
await semanticCache . set ( "German Chancellor" , "Olaf Scholz" ) ;
await delay ( 1000 ) ;
// ? "Who is the chancellor of Germany?" -> outputs "Olaf Scholz"
const result = await semanticCache . get ( "Wer ist der Bundeskanzler von Deutschland?" ) ;
await semanticCache . set ( "year in which the Berlin wall fell" , "1989" ) ;
await delay ( 1000 ) ;
// ? outputs "1989"
const result = await semanticCache . get ( "what's the year the Berlin wall destroyed?" ) ;
await semanticCache . set ( "the chemical formula for water" , "H2O" ) ;
await semanticCache . set ( "the healthiest drink on a hot day" , "water" ) ;
await delay ( 1000 ) ;
// ? outputs "water"
const result = await semanticCache . get ( "what should i drink when it's hot outside?" ) ;
// ? outputs "H2O"
const result = await semanticCache . get ( "tell me water's chemical formula" ) ;
Kami menghargai kontribusi Anda! Jika Anda ingin berkontribusi pada proyek ini, silakan fork repositori, buat perubahan, dan kirimkan permintaan penarikan.
Didistribusikan di bawah Lisensi MIT. Lihat LICENSE
untuk informasi lebih lanjut.