Semantic Cache เป็นเครื่องมือสำหรับแคชข้อความธรรมชาติโดยยึดตามความคล้ายคลึงทางความหมาย เหมาะอย่างยิ่งสำหรับงานใดๆ ที่เกี่ยวข้องกับการสืบค้นหรือเรียกค้นข้อมูลตามความหมาย เช่น การจัดหมวดหมู่ภาษาธรรมชาติ หรือการแคชการตอบสนองของ AI ข้อความสองชิ้นอาจคล้ายกันแต่ไม่เหมือนกัน (เช่น "สถานที่ที่น่าไปเยี่ยมชมในสเปน" กับ "สถานที่ที่น่าไปเยี่ยมชมที่สุดในสเปน") การแคชแบบดั้งเดิมไม่รู้จักความคล้ายคลึงทางความหมายนี้และพลาดโอกาสในการนำกลับมาใช้ใหม่
Semantic Cache ช่วยให้คุณ:
ติดตั้งแพ็คเกจ:
npm install @upstash/semantic-cache @upstash/vector
ขั้นแรก สร้างฐานข้อมูล Upstash Vector ที่นี่ คุณจะต้องมีข้อมูลรับรอง url
และ token
เพื่อเชื่อมต่อแคชความหมายของคุณ สิ่งสำคัญ: เลือกโมเดลการฝังที่สร้างไว้ล่วงหน้าเมื่อสร้างฐานข้อมูลของคุณ
บันทึก
โมเดลการฝังที่แตกต่างกันเหมาะสำหรับกรณีการใช้งานที่แตกต่างกัน ตัวอย่างเช่น หากเวลาในการตอบสนองต่ำเป็นสิ่งสำคัญ ให้เลือกโมเดลที่มีขนาดมิติที่เล็กกว่า เช่น bge-small-en-v1.5
หากความถูกต้องเป็นสิ่งสำคัญ ให้เลือกแบบจำลองที่มีขนาดมากกว่า
สร้างไฟล์ .env
ในไดเร็กทอรีรากของโปรเจ็กต์ของคุณ และเพิ่ม Upstash Vector URL และโทเค็น:
UPSTASH_VECTOR_REST_URL=https://example.upstash.io
UPSTASH_VECTOR_REST_TOKEN=your_secret_token_here
ต่อไปนี้คือวิธีที่คุณสามารถใช้ Semantic Cache ในแอปพลิเคชัน Node.js ของคุณ:
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
พารามิเตอร์ minProximity
มีตั้งแต่ 0
ถึง 1
ช่วยให้คุณสามารถกำหนดคะแนนความเกี่ยวข้องขั้นต่ำเพื่อกำหนดการเข้าถึงแคช ยิ่งตัวเลขนี้สูงเท่าใด ข้อมูลที่คุณป้อนโดยผู้ใช้จะต้องใกล้เคียงกับเนื้อหาที่แคชไว้จึงจะเข้าชมได้ ในทางปฏิบัติ คะแนน 0.95 บ่งชี้ว่ามีความคล้ายคลึงกันสูงมาก ในขณะที่คะแนน 0.75 บ่งชี้ว่ามีความคล้ายคลึงกันในระดับต่ำอยู่แล้ว ตัวอย่างเช่น ค่า 1.00 ซึ่งเป็นค่าสูงสุดที่เป็นไปได้ จะยอมรับเฉพาะการจับคู่ แบบตรงทั้งหมด ของข้อความค้นหาผู้ใช้และเนื้อหาแคชของคุณเป็น Hit ของแคช
คุณสามารถแยกข้อมูลของคุณออกเป็นพาร์ติชันด้วยเนมสเปซ
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" ) ;
ตัวอย่างต่อไปนี้สาธิตวิธีที่คุณสามารถใช้ Semantic Cache ในกรณีการใช้งานต่างๆ:
บันทึก
เราเพิ่มการหน่วงเวลา 1 วินาทีหลังจากตั้งค่าข้อมูลเพื่อเผื่อเวลาในการอัปเดตดัชนีเวกเตอร์ ความล่าช้านี้จำเป็นเพื่อให้แน่ใจว่าข้อมูลพร้อมสำหรับการเรียกค้น
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?" ) ;
หมายเหตุ: โมเดลการฝังของคุณต้องรองรับภาษาที่คุณต้องการใช้
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" ) ;
เราขอขอบคุณที่คุณมีส่วนร่วม! หากคุณต้องการมีส่วนร่วมในโปรเจ็กต์นี้ โปรดแยกพื้นที่เก็บข้อมูล ทำการเปลี่ยนแปลง และส่งคำขอดึง
เผยแพร่ภายใต้ใบอนุญาต MIT ดู LICENSE
สำหรับข้อมูลเพิ่มเติม