Semantic Caching
يعيد التخزين المؤقت الدلالي استجابة محفوظة لنموذج لغة كبير عندما يحمل استعلام جديد المعنى نفسه لاستعلام سابق، إذ يقارن التضمينات لتجاوز استدعاءات النموذج وخفض التكلفة.
يخزن التخزين المؤقت الدلالي استجابات نموذج اللغة الكبير (LLM) أو نموذج توليدي آخر، ويعيد استخدامها للطلبات الجديدة التي تحمل معنى طلب سابق نفسه حتى إن اختلفت الصياغة. يحوّل التخزين المؤقت كل موجّه إلى تضمين، ويبحث عن الموجّه المخزن الأكثر تشابهًا، ثم يعيد الإجابة المحفوظة إذا تجاوز التشابه حدًا معينًا. وتؤدي إصابة التخزين المؤقت إلى تخطي استدعاء النموذج تمامًا، فتقل زمن الاستجابة إلى أجزاء من الألف من الثانية ولا يستهلك الطلب أي رموز. ولأن المطابقة تعتمد على المعنى، فإن طلبي «نسيت كلمة مروري» و«كيف أعيد تعيين كلمة مروري؟» يشتركان في إجابة مخزنة واحدة، في حين يتطلب التخزين المؤقت القائم على المطابقة التامة والمفهرس بنص الموجّه تخزين الإجابة مرتين. وأصدرت Zilliz مكتبة GPTCache مفتوحة المصدر لهذا النمط عام 2023، وتوفره الآن قواعد بيانات المتجهات وبوابات API ميزة مدمجة.
آلية عمل التخزين المؤقت الدلالي#
يرمّز نموذج تضمين الجمل الموجّه الوارد، ثم يقارنه بحث متجهي بتضمينات الموجّهات التي سبق الرد عليها، عادةً باستخدام التشابه الجيبي. وتكفي الذاكرة للتخزين المؤقت الصغير، بينما تُحفظ التخزينات الكبيرة في قاعدة بيانات متجهات مزودة بفهرس تقريبي لأقرب الجيران. وعند عدم العثور على تطابق، ينشئ النموذج إجابة جديدة، ثم يُخزّن تضمين الموجّه الجديد والإجابة معًا، عادةً مع تحديد مدة صلاحية.
يجب أن يغطي مفتاح التخزين المؤقت كل ما عدا ذلك مما يغيّر الإجابة الصحيحة. فتُخزّن الاستجابات المنشأة في ظل موجّه نظام أو إصدار نموذج أو مستوى أذونات مستخدم أو مجموعة مستندات مسترجعة مختلفة ضمن نطاقات منفصلة، حتى لا تُقدّم إجابة مخزنة لعميل إلى عميل آخر. كما تتطلب حداثة البيانات العناية نفسها: فعندما يتغير سعر أو سياسة أو مستند مصدر، تظل الإدخالات المبنية على الإصدار القديم مطابقة للموجّهات الجديدة؛ لذا يُحدد لكل إدخال وقت انتهاء صلاحية، ويُمسح النطاق المتأثر عند تغير بياناته المصدرية.
اختيار حد التشابه#
يحدد الحد مقدار الاختلاف المسموح به بين موجّهين كي يشتركا في الإجابة. يستخدم هذا المثال النموذج all-MiniLM-L6-v2 من Sentence Transformers لترميز مخزن مؤقت يضم ثلاثة إدخالات:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("all-MiniLM-L6-v2")
# Earlier prompts whose answers are already stored in the cache
cached = ["How do I reset my password?", "What are your opening hours?", "How do I cancel my subscription?"]
cached_embeddings = model.encode(cached)
# Each new prompt reuses the closest cached answer if it clears the threshold
queries = ["I forgot my password, how can I change it?", "When does the store open?", "How do I cancel my order?"]
for query in queries:
query_embedding = model.encode(query)
scores = model.similarity(query_embedding, cached_embeddings)[0]
best = scores.argmax().item()
status = "hit" if scores[best] >= 0.7 else "miss"
print(f"{query} -> {cached[best]} ({scores[best]:.2f}, {status})")تحصل إعادة صياغة سؤال كلمة المرور على درجة 0.89، فتُطابق إجابة صحيحة. أما إعادة صياغة سؤال ساعات العمل فتحصل على 0.61 فقط، فلا تُطابق. ويسجل السؤال «كيف ألغي طلبي؟» درجة 0.71 مقارنة بالسؤال «كيف ألغي اشتراكي؟»، ما سيؤدي إلى إرجاع تعليمات خاطئة. يقيس تشابه التضمينات اشتراك الصياغة والموضوع، لذا لا يفصل حد واحد بين هذه الحالات الثلاث. وتضيّق التخزينات المؤقتة الإنتاجية هذه الفجوة عبر ضبط النموذج على أزواج إعادة الصياغة من حركة الاستخدام الخاصة بها، أو تحديد حدود لكل فئة، أو تمرير كل تطابق محتمل إلى معيد ترتيب يقيّم الموجّهين معًا قبل تقديم الإجابة المخزنة.
مواضع استخدام التخزين المؤقت الدلالي#
يكون التخزين المؤقت الدلالي مفيدًا عندما يطرح كثير من المستخدمين الأسئلة نفسها وتتغير الإجابات ببطء: مثل روبوتات المحادثة للدعم ومكاتب المساعدة الداخلية ومساعدات التوليد المعزز بالاسترجاع (RAG) التي تعتمد على وثائق مستقرة. أما الطلبات الشخصية أو الحساسة للوقت أو الإبداعية، فلا تستفيد كثيرًا، لأن الإجابة المعاد استخدامها تكون خاطئة أو متكررة بالنسبة إليها.
يعمل نوعان آخران من التخزين المؤقت في تقديم LLM على مستويين مختلفين:
- التخزين المؤقت للموجّه: يخزن خادم النموذج الحالات المحسوبة لبادئة موجّه متكررة مطابقة تمامًا، ما يقلل زمن التهيئة المسبقة، بينما يظل النموذج ينشئ إجابة جديدة.
- ذاكرة التخزين المؤقت لـKV: تُحفظ مفاتيح وقيم الرموز السابقة ضمن عملية توليد واحدة، كي لا يعاد حسابها عند توليد كل رمز جديد.
يستخدم البحث الدلالي عملية البحث نفسها بالتضمينات لاسترجاع مستندات لاستعلام، بينما يستخدم التخزين المؤقت الدلالي العملية لاسترجاع إجابات مكتملة، وغالبًا ما يكون ضمن بوابة ذكاء اصطناعي تتوسط بين التطبيقات ومزودي النماذج.
يمكن استخدام الصور مفاتيحَ للتخزين المؤقت بالطريقة نفسها. يعيد embed() في Ultralytics YOLO متجه ميزات لكل صورة، لذا يمكن لنموذج YOLO26 مدرب على تصنيف الصور توفير مفتاح البحث الذي يتيح لإطارات الكاميرا شبه المتطابقة إعادة استخدام وصف سابق من نموذج الرؤية واللغة.










