اتصل بنا للحصول على مزيد من المعلومات

قوة عمليات إعادة الترتيب والاسترجاع على مرحلتين للجيل المعزز للاسترجاع

الذكاء العام الاصطناعي

قوة عمليات إعادة الترتيب والاسترجاع على مرحلتين للجيل المعزز للاسترجاع

mm
الجيل المعزز الاسترداد

عندما يتعلق الأمر بمعالجة اللغة الطبيعية (NLP) واسترجاع المعلومات، فإن القدرة على استرجاع المعلومات ذات الصلة بكفاءة ودقة أمر بالغ الأهمية. مع استمرار تطور هذا المجال، يتم تطوير تقنيات ومنهجيات جديدة لتعزيز أداء أنظمة الاسترجاع، لا سيما في سياق الجيل المعزز الاسترداد (خرقة). وقد ظهرت إحدى هذه التقنيات، المعروفة باسم الاسترجاع على مرحلتين باستخدام أدوات إعادة الترتيب، كحل قوي لمعالجة القيود المتأصلة في طرق الاسترجاع التقليدية.

نناقش في هذه المقالة تعقيدات عملية الاسترجاع وإعادة الترتيب على مرحلتين، واستكشاف مبادئها الأساسية، واستراتيجيات التنفيذ، والفوائد التي تقدمها في تعزيز دقة وكفاءة أنظمة RAG. سنقدم أيضًا أمثلة عملية ومقتطفات من التعليمات البرمجية لتوضيح المفاهيم وتسهيل فهم أعمق لهذه التقنية المتطورة.

فهم الجيل المعزز للاسترجاع (RAG)

وكيل سوي LLM

قبل الغوص في تفاصيل الاسترجاع على مرحلتين وإعادة الترتيب، دعونا نعيد النظر بإيجاز في مفهوم الجيل المعزز للاسترجاع (RAG). RAG هي تقنية تعمل على توسيع معرفة وقدرات نماذج اللغات الكبيرة (LLMs) من خلال تزويدهم بإمكانية الوصول إلى مصادر المعلومات الخارجية، مثل قواعد البيانات أو مجموعات المستندات. راجع المزيد من المقال "الغوص العميق في الجيل المعزز للاسترجاع في LLM".

تتضمن عملية RAG النموذجية الخطوات التالية:

  1. سؤال: يطرح المستخدم سؤالاً أو يقدم تعليمات للنظام.
  2. استرجاع: يقوم النظام بالاستعلام عن قاعدة بيانات متجهة أو مجموعة مستندات للعثور على المعلومات ذات الصلة باستعلام المستخدم.
  3. زيادة: يتم دمج المعلومات المستردة مع الاستعلام أو التعليمات الأصلية للمستخدم.
  4. جيل: يقوم نموذج اللغة بمعالجة المدخلات المعززة ويولد استجابة، مع الاستفادة من المعلومات الخارجية لتعزيز دقة وشمولية مخرجاتها.

على الرغم من أن RAG أثبتت أنها تقنية قوية، إلا أنها لا تخلو من التحديات. تكمن إحدى القضايا الرئيسية في مرحلة الاسترجاع، حيث قد تفشل طرق الاسترجاع التقليدية في تحديد المستندات الأكثر صلة، مما يؤدي إلى استجابات دون المستوى الأمثل أو غير دقيقة من نموذج اللغة.

الحاجة إلى الاسترجاع على مرحلتين وإعادة الترتيب

غالبًا ما تكافح طرق الاسترجاع التقليدية، مثل تلك التي تعتمد على مطابقة الكلمات الرئيسية أو نماذج الفضاء المتجه، لالتقاط العلاقات الدلالية الدقيقة بين الاستعلامات والمستندات. يمكن أن يؤدي هذا القيد إلى استرجاع المستندات التي تكون ذات صلة سطحية فقط أو تفتقد معلومات مهمة يمكن أن تؤدي إلى تحسين جودة الاستجابة الناتجة بشكل كبير.

ولمواجهة هذا التحدي، تحول الباحثون والممارسون إلى الاسترجاع على مرحلتين مع القائمين على إعادة الترتيب. يتضمن هذا النهج عملية من خطوتين:

  1. الاسترجاع الأولي: في المرحلة الأولى، يتم استرجاع مجموعة كبيرة نسبيًا من المستندات التي يحتمل أن تكون ذات صلة باستخدام طريقة استرجاع سريعة وفعالة، مثل نموذج الفضاء المتجه أو البحث القائم على الكلمات الرئيسية.
  2. إعادة الترتيب: في المرحلة الثانية، يتم استخدام نموذج إعادة ترتيب أكثر تعقيدًا لإعادة ترتيب المستندات التي تم استردادها في البداية استنادًا إلى صلتها بالاستعلام، مما يؤدي بشكل فعال إلى جلب المستندات الأكثر صلة إلى أعلى القائمة.

نموذج إعادة الترتيب، الذي غالبًا ما يكون عبارة عن شبكة عصبية أو بنية قائمة على المحولات، يتم تدريبه خصيصًا لتقييم مدى ملاءمة المستند لاستعلام معين. من خلال الاستفادة من قدرات فهم اللغة الطبيعية المتقدمة، يمكن لأداة إعادة الترتيب التقاط الفروق الدقيقة في الدلالات والعلاقات السياقية بين الاستعلام والمستندات، مما يؤدي إلى تصنيف أكثر دقة وملاءمة.

فوائد الاسترجاع على مرحلتين وإعادة الترتيب

يوفر اعتماد الاسترجاع على مرحلتين مع أدوات إعادة الترتيب العديد من الفوائد المهمة في سياق أنظمة RAG:

  1. تحسين الدقة: من خلال إعادة ترتيب المستندات المستردة في البداية وترقية المستندات الأكثر صلة إلى الأعلى، يمكن للنظام توفير معلومات أكثر دقة ودقة لنموذج اللغة، مما يؤدي إلى استجابات تم إنشاؤها بجودة أعلى.
  2. التخفيف من المشكلات خارج النطاق: غالبًا ما يتم تدريب نماذج التضمين المستخدمة في الاسترجاع التقليدي على مجموعة نصية ذات أغراض عامة، والتي قد لا تلتقط اللغة والدلالات الخاصة بالمجال بشكل كافٍ. من ناحية أخرى، يمكن تدريب نماذج إعادة الترتيب على بيانات خاصة بالمجال، مما يخفف من مشكلة "خارج النطاق" ويحسن أهمية المستندات المستردة ضمن المجالات المتخصصة.
  3. التوسعة: يتيح النهج المكون من مرحلتين إمكانية التوسع بكفاءة من خلال الاستفادة من أساليب الاسترجاع السريعة والخفيفة في المرحلة الأولية، مع الاحتفاظ بعملية إعادة الترتيب الأكثر كثافة من الناحية الحسابية لمجموعة فرعية أصغر من المستندات.
  4. مرونة: يمكن تبديل نماذج إعادة الترتيب أو تحديثها بشكل مستقل عن طريقة الاسترجاع الأولية، مما يوفر المرونة والقدرة على التكيف مع الاحتياجات المتطورة للنظام.

ColBERT: التفاعل المتأخر الفعال والفعال

أحد النماذج البارزة في مجال إعادة الترتيب هو ColBERT (التفاعل المتأخر السياقي عبر BERT). ColBERT هو نموذج لإعادة ترتيب المستندات يعمل على تعزيز قدرات فهم اللغة العميقة لـ BERT مع تقديم آلية تفاعل جديدة تُعرف باسم "التفاعل المتأخر".

ColBERT: بحث فعال وفعال عبر التفاعل المتأخر السياقي عبر BERT

ColBERT: بحث فعال وفعال عبر التفاعل المتأخر السياقي عبر BERT

تتيح آلية التفاعل المتأخر في ColBERT إمكانية الاسترجاع بكفاءة ودقة من خلال معالجة الاستعلامات والمستندات بشكل منفصل حتى المراحل النهائية من عملية الاسترجاع. على وجه التحديد، يقوم ColBERT بتشفير الاستعلام والمستند بشكل مستقل باستخدام BERT، ثم يستخدم خطوة تفاعل خفيفة الوزن لكنها قوية تعمل على تصميم التشابه الدقيق بينهما. من خلال تأخير هذا التفاعل الدقيق مع الاحتفاظ به، يمكن لـ ColBERT الاستفادة من تعبير نماذج اللغة العميقة مع اكتساب القدرة في الوقت نفسه على حساب تمثيلات المستندات مسبقًا دون الاتصال بالإنترنت، مما يؤدي إلى تسريع معالجة الاستعلام بشكل كبير.

توفر بنية التفاعل المتأخر لـ ColBERT العديد من الفوائد، بما في ذلك الكفاءة الحسابية المحسنة وقابلية التوسع مع حجم مجموعة المستندات وقابلية التطبيق العملي لسيناريوهات العالم الحقيقي. بالإضافة إلى ذلك، تم تعزيز ColBERT بشكل أكبر باستخدام تقنيات مثل الإشراف المخفف والضغط المتبقي (في ColBERTv2)، والتي تعمل على تحسين عملية التدريب وتقليل البصمة الفضائية للنموذج مع الحفاظ على فعالية الاسترجاع العالية.

يوضح مقتطف التعليمات البرمجية هذا كيفية تكوين نموذج jina-colbert-v1-en واستخدامه لفهرسة مجموعة من المستندات، مما يزيد من قدرته على التعامل مع السياقات الطويلة بكفاءة.

تنفيذ الاسترجاع على مرحلتين مع عمليات إعادة الترتيب

الآن بعد أن أصبح لدينا فهم للمبادئ الكامنة وراء الاسترجاع على مرحلتين وإعادة الترتيب، دعونا نستكشف تنفيذها العملي في سياق نظام RAG. سنستفيد من المكتبات والأطر الشائعة لإظهار تكامل هذه التقنيات.

تهيئة البيئة

قبل أن نتعمق في الكود، فلنقم بإعداد بيئة التطوير الخاصة بنا. سنستخدم Python والعديد من مكتبات البرمجة اللغوية العصبية الشهيرة، بما في ذلك Hugging Face Transformers، وSentence Transformers، وLanceDB.

# Install required libraries
!pip install datasets huggingface_hub sentence_transformers lancedb

تحضير البيانات

لأغراض العرض التوضيحي، سنستخدم مجموعة البيانات "ai-arxiv-chunked" من Hugging Face Datasets، والتي تحتوي على أكثر من 400 ورقة بحثية عن ArXiv حول التعلم الآلي، ومعالجة اللغة الطبيعية، ونماذج اللغة الكبيرة.

from datasets import load_dataset

dataset = load_dataset("jamescalam/ai-arxiv-chunked", split="train")

<pre>

بعد ذلك، سنقوم بمعالجة البيانات مسبقًا وتقسيمها إلى أجزاء أصغر لتسهيل استرجاعها ومعالجتها بكفاءة.

from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")

def chunk_text(text, chunk_size=512, overlap=64):
tokens = tokenizer.encode(text, return_tensors="pt", truncation=True)
chunks = tokens.split(chunk_size - overlap)
texts = [tokenizer.decode(chunk) for chunk in chunks]
return texts

chunked_data = []
for doc in dataset:
text = doc["chunk"]
chunked_texts = chunk_text(text)
chunked_data.extend(chunked_texts)

بالنسبة لمرحلة الاسترجاع الأولية، سنستخدم نموذج Sentence Transformer لتشفير مستنداتنا واستعلاماتنا إلى تمثيلات متجهة كثيفة، ثم نقوم بإجراء بحث تقريبي لأقرب جار باستخدام قاعدة بيانات متجهة مثل LanceDB.
from sentence_transformers import SentenceTransformer
from lancedb import lancedb

# Load Sentence Transformer model
model = SentenceTransformer('all-MiniLM-L6-v2')

# Create LanceDB vector store
db = lancedb.lancedb('/path/to/store')
db.create_collection('docs', vector_dimension=model.get_sentence_embedding_dimension())

# Index documents
for text in chunked_data:
vector = model.encode(text).tolist()
db.insert_document('docs', vector, text)

from sentence_transformers import SentenceTransformer
from lancedb import lancedb

# Load Sentence Transformer model
model = SentenceTransformer('all-MiniLM-L6-v2')

# Create LanceDB vector store
db = lancedb.lancedb('/path/to/store')
db.create_collection('docs', vector_dimension=model.get_sentence_embedding_dimension())

# Index documents
for text in chunked_data:
vector = model.encode(text).tolist()
db.insert_document('docs', vector, text)

من خلال فهرسة مستنداتنا، يمكننا إجراء الاسترداد الأولي من خلال العثور على أقرب الجيران لمتجه استعلام معين.

from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")

def chunk_text(text, chunk_size=512, overlap=64):
tokens = tokenizer.encode(text, return_tensors="pt", truncation=True)
chunks = tokens.split(chunk_size - overlap)
texts = [tokenizer.decode(chunk) for chunk in chunks]
return texts

chunked_data = []
for doc in dataset:
text = doc["chunk"]
chunked_texts = chunk_text(text)
chunked_data.extend(chunked_texts)

إعادة الترتيب

بعد الاسترداد الأولي، سنستخدم نموذج إعادة الترتيب لإعادة ترتيب المستندات المستردة بناءً على صلتها بالاستعلام. في هذا المثال، سنستخدم أداة إعادة الترتيب ColBERT، وهو نموذج سريع ودقيق يعتمد على المحولات ومصمم خصيصًا لتصنيف المستندات.

from lancedb.rerankers import ColbertReranker

reranker = ColbertReranker()

# Rerank initial documents
reranked_docs = reranker.rerank(query, initial_docs)

ال reranked_docs تحتوي القائمة الآن على المستندات المعاد ترتيبها بناءً على صلتها بالاستعلام، كما هو محدد بواسطة أداة إعادة ترتيب ColBERT.

التكاثر والتوليد

مع وجود المستندات ذات الصلة والمعاد ترتيبها في متناول اليد، يمكننا المضي قدمًا في مراحل التعزيز والتوليد لخط أنابيب RAG. سنستخدم نموذجًا لغويًا من مكتبة Hugging Face Transformers لإنشاء الاستجابة النهائية.

from transformers import AutoTokenizer, AutoModelForSeq2SeqLM

tokenizer = AutoTokenizer.from_pretrained("t5-base")
model = AutoModelForSeq2SeqLM.from_pretrained("t5-base")

# Augment query with reranked documents
augmented_query = query + " " + " ".join(reranked_docs[:3])

# Generate response from language model
input_ids = tokenizer.encode(augmented_query, return_tensors="pt")
output_ids = model.generate(input_ids, max_length=500)
response = tokenizer.decode(output_ids[0], skip_special_tokens=True)

print(response)

في مقتطف الشفرة أعلاه، نقوم بزيادة الاستعلام الأصلي باستخدام المستندات الثلاثة الأولى التي تم إعادة ترتيبها، مما يؤدي إلى إنشاء ملف augmented_query. نقوم بعد ذلك بتمرير هذا الاستعلام المعزز إلى نموذج اللغة T5، والذي يقوم بإنشاء استجابة بناءً على السياق المقدم.

ال response سيحتوي المتغير على المخرجات النهائية، مع الاستفادة من المعلومات الخارجية من المستندات المستردة والمعاد ترتيبها لتوفير إجابة أكثر دقة وشمولاً للاستعلام الأصلي.

التقنيات والاعتبارات المتقدمة

في حين أن التنفيذ الذي قمنا بتغطيته يوفر أساسًا متينًا لدمج الاسترجاع على مرحلتين وإعادة الترتيب في نظام RAG، إلا أن هناك العديد من التقنيات والاعتبارات المتقدمة التي يمكن أن تزيد من تعزيز أداء النهج وقوته.

  1. توسيع الاستعلام: لتحسين مرحلة الاسترجاع الأولية، يمكنك استخدام تقنيات توسيع الاستعلام، والتي تتضمن زيادة الاستعلام الأصلي بالمصطلحات أو العبارات ذات الصلة. يمكن أن يساعد هذا في استرداد مجموعة أكثر تنوعًا من المستندات ذات الصلة المحتملة.
  2. إعادة ترتيب الفرقة: بدلاً من الاعتماد على نموذج إعادة ترتيب واحد، يمكنك دمج العديد من أدوات إعادة الترتيب في مجموعة واحدة، مع الاستفادة من نقاط القوة في النماذج المختلفة لتحسين الأداء العام.
  3. إعادة ترتيب الضبط الدقيق: في حين أن نماذج إعادة الترتيب المدربة مسبقًا يمكن أن تكون فعالة، فإن ضبطها على البيانات الخاصة بالمجال يمكن أن يزيد من تعزيز قدرتها على التقاط دلالات وإشارات ذات صلة خاصة بالمجال.
  4. الاسترجاع التكراري وإعادة الترتيب: في بعض الحالات، قد لا تكون عملية الاسترداد وإعادة الترتيب مرة واحدة كافية. يمكنك استكشاف الأساليب التكرارية، حيث يتم استخدام مخرجات نموذج اللغة لتحسين عملية الاستعلام والاسترجاع، مما يؤدي إلى نظام أكثر تفاعلية وديناميكية.
  5. الموازنة بين الملاءمة والتنوع: بينما تهدف عمليات إعادة التصنيف إلى الترويج للوثائق الأكثر صلة، فمن الضروري تحقيق التوازن بين الملاءمة والتنوع. إن دمج تقنيات تعزيز التنوع يمكن أن يساعد في منع النظام من أن يكون ضيقًا للغاية أو متحيزًا في مصادر معلوماته.
  6. مقاييس التقييم: لتقييم مدى فعالية نهج الاسترجاع وإعادة التصنيف على مرحلتين، ستحتاج إلى تحديد مقاييس التقييم المناسبة. قد تتضمن هذه مقاييس استرجاع المعلومات التقليدية مثل الدقة والاستدعاء ومتوسط ​​الترتيب المتبادل (MRR)، بالإضافة إلى مقاييس خاصة بالمهمة مصممة خصيصًا لحالة الاستخدام الخاصة بك.

الخاتمة

لقد ظهر الجيل المعزز للاسترجاع (RAG) كتقنية قوية لتعزيز قدرات نماذج اللغات الكبيرة من خلال الاستفادة من مصادر المعلومات الخارجية. ومع ذلك، فإن طرق الاسترجاع التقليدية غالبًا ما تكافح من أجل تحديد المستندات الأكثر صلة، مما يؤدي إلى أداء دون المستوى الأمثل.

يوفر الاسترجاع على مرحلتين مع عمليات إعادة الترتيب حلاً مقنعًا لهذا التحدي. من خلال الجمع بين مرحلة الاسترجاع السريع الأولية ونموذج إعادة الترتيب الأكثر تطورًا، يمكن لهذا النهج أن يحسن بشكل كبير دقة وأهمية المستندات المستردة، مما يؤدي في النهاية إلى استجابات عالية الجودة من نموذج اللغة.

لقد أمضيت السنوات الخمس الماضية منغمسًا في عالم رائع من التعلم الآلي والتعلم العميق. قادني شغفي وخبرتي إلى المساهمة في أكثر من 50 مشروعًا متنوعًا لهندسة البرمجيات ، مع التركيز بشكل خاص على الذكاء الاصطناعي / التعلم الآلي. جذبني فضولي المستمر أيضًا نحو معالجة اللغة الطبيعية ، وهو مجال أتوق لاستكشافه بشكل أكبر.