تضمين مقالات ويكيبيديا للبحث

في هذا الدرس، سنستكشف عملية تحضير مجموعة بيانات من مقالات ويكيبيديا للبحث، مع التركيز بشكل خاص على أولمبياد الشتاء 2022. يتضمن هذا عدة خطوات رئيسية: جمع المقالات، وتقسيمها إلى أقسام قابلة للإدارة، وتضمين هذه الأقسام، وتخزين النتائج للاسترجاع الفعال.
المتطلبات الأساسية
قبل أن نبدأ، تأكد من تثبيت المكتبات اللازمة. يمكنك تثبيت أي مكتبات مفقودة باستخدام pip:
pip install openai mwclient mwparserfromhell pandas tiktokenاضبط مفتاح API الخاص بـ OpenAI كمتغير بيئة:
export OPENAI_API_KEY="your-api-key"جمع المقالات
نبدأ بتنزيل مقالات ويكيبيديا المتعلقة بأولمبياد الشتاء 2022. باستخدام مكتبة mwclient، يمكننا الوصول إلى واجهة برمجة تطبيقات ويكيبيديا لجلب المقالات من فئة محددة.
import mwclient
CATEGORY_TITLE = "Category:2022 Winter Olympics"
WIKI_SITE = "en.wikipedia.org"
site = mwclient.Site(WIKI_SITE)
category_page = site.pages[CATEGORY_TITLE]
titles = titles_from_category(category_page, max_depth=1)
print(f"Found {len(titles)} article titles in {CATEGORY_TITLE}.")تقسيم المقالات
بمجرد حصولنا على المقالات، نحتاج إلى تقسيمها إلى أقسام أصغر شبه مستقلة. هذا أمر بالغ الأهمية لأن نماذج GPT يمكنها معالجة كمية محدودة من النص في المرة الواحدة. نتجاهل الأقسام الأقل صلة وننظف النص عن طريق إزالة علامات المراجع والمسافات البيضاء.
def clean_section(section):
titles, text = section
text = re.sub(r"<ref.*?</ref>", "", text)
text = text.strip()
return (titles, text)
wikipedia_sections = [clean_section(ws) for ws in wikipedia_sections]تضمين الأقسام
مع تحضير الأقسام، نستخدم واجهة برمجة تطبيقات OpenAI لتوليد تضمينات لكل قسم. تحول هذه الخطوة النص إلى تنسيق رقمي يمكن البحث فيه ومقارنته بسهولة.
from openai import OpenAI
import pandas as pd
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
embeddings = []
for batch_start in range(0, len(wikipedia_strings), BATCH_SIZE):
batch_end = batch_start + BATCH_SIZE
batch = wikipedia_strings[batch_start:batch_end]
response = client.embeddings.create(model=EMBEDDING_MODEL, input=batch)
embeddings.extend([e.embedding for e in response.data])
df = pd.DataFrame({"text": wikipedia_strings, "embedding": embeddings})تخزين التضمينات
أخيراً، نخزن التضمينات في ملف CSV للوصول والاسترجاع السهل. بالنسبة لمجموعات البيانات الأكبر، فكر في استخدام قاعدة بيانات متجهات لأداء أفضل.
SAVE_PATH = "data/winter_olympics_2022.csv"
df.to_csv(SAVE_PATH, index=False)تتيح لنا هذه العملية تحضير والبحث بكفاءة عبر مجموعات كبيرة من البيانات النصية، مما يجعلها أداة قوية للتطبيقات مثل الإجابة على الأسئلة واسترجاع المعلومات.
المرجع: Embedding Wikipedia articles for search بواسطة Ted Sanders.
ناقش مشروعك معنا
نحن هنا للمساعدة في احتياجات تطوير الويب الخاصة بك. حدد موعدًا لمناقشة مشروعك وكيف يمكننا مساعدتك.
دعنا نجد أفضل الحلول لاحتياجاتك.
مقالات ذات صلة

إنشاء بودكاست من ملف PDF باستخدام Vercel AI SDK و LangChain
تعلم كيفية إنشاء بودكاست من ملف PDF باستخدام Vercel AI SDK و PDFLoader من LangChain و ElevenLabs و Next.js.
تعزيز كفاءة خدمة العملاء: الاستفادة من استدعاءات الأدوات الإلزامية في ChatCompletion
اكتشف كيف يمكن لاستدعاءات الأدوات الإلزامية في ChatCompletion تعزيز كفاءة خدمة العملاء من خلال توفير ردود متسقة وسير عمل مبسط.

استكشاف واجهة برمجة تطبيقات Responses الجديدة: دليل شامل
تعمق في واجهة برمجة تطبيقات Responses الجديدة، المصممة لتبسيط التفاعلات المعقدة ومتعددة الوسائط مع المحادثات ذات الحالة والأدوات المستضافة.