ذاكرة التخزين المؤقت الدلالية هي أداة للتخزين المؤقت للنص الطبيعي بناءً على التشابه الدلالي. إنه مثالي لأي مهمة تتضمن الاستعلام عن المعلومات أو استرجاعها بناءً على المعنى، مثل تصنيف اللغة الطبيعية أو تخزين استجابات الذكاء الاصطناعي مؤقتًا. يمكن أن يكون هناك جزأين من النص متشابهين ولكن ليسا متطابقين (على سبيل المثال، "أماكن رائعة للزيارة في إسبانيا" مقابل "أفضل الأماكن للزيارة في إسبانيا"). لا يتعرف التخزين المؤقت التقليدي على هذا التشابه الدلالي ويضيع فرص إعادة الاستخدام.
تتيح لك ذاكرة التخزين المؤقت الدلالية ما يلي:
تثبيت الحزمة:
npm install @upstash/semantic-cache @upstash/vector
أولاً، قم بإنشاء قاعدة بيانات Upstash Vector هنا. ستحتاج إلى بيانات اعتماد url
والرمز token
لتوصيل ذاكرة التخزين المؤقت الدلالية. هام: اختر أي نموذج تضمين تم إعداده مسبقًا عند إنشاء قاعدة البيانات الخاصة بك.
ملحوظة
تعد نماذج التضمين المختلفة رائعة لحالات الاستخدام المختلفة. على سبيل المثال، إذا كان زمن الاستجابة المنخفض يمثل أولوية، فاختر نموذجًا بحجم بُعد أصغر مثل bge-small-en-v1.5
. إذا كانت الدقة مهمة، فاختر نموذجًا بأبعاد أكثر.
قم بإنشاء ملف .env
في الدليل الجذر لمشروعك وأضف عنوان URL والرمز المميز لـ Upstash Vector:
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، وهي أعلى قيمة ممكنة، لن تقبل إلا المطابقة التامة لاستعلام المستخدم ومحتوى ذاكرة التخزين المؤقت كنتيجة لذاكرة التخزين المؤقت.
يمكنك فصل بياناتك إلى أقسام ذات مساحات أسماء.
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 في حالات الاستخدام المختلفة:
ملحوظة
نضيف تأخيرًا مدته ثانية واحدة بعد ضبط البيانات لإتاحة الوقت لتحديث فهرس المتجه. يعد هذا التأخير ضروريًا للتأكد من أن البيانات متاحة للاسترجاع.
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" ) ;
نحن نقدر مساهماتك! إذا كنت ترغب في المساهمة في هذا المشروع، يرجى تفرع المستودع وإجراء التغييرات وإرسال طلب سحب.
وزعت بموجب ترخيص معهد ماساتشوستس للتكنولوجيا. راجع LICENSE
لمزيد من المعلومات.