استخراج البيانات المنظمة في LlamaIndex

تعلم كيفية استخراج البيانات المنظمة من نص غير منظم باستخدام LlamaIndex ومخططات Pydantic والتحليل المدعوم من LLM.

سنغطي ما يلي...

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

تخيل الآن أنك تُطوّر مساعدًا ذكيًا لمساعدة مدير التوظيف في فحص مئات السير الذاتية. ستستغرق قراءة كل وثيقة يدويًا ساعات. ولكن ماذا لو استطعنا تعليم نظامنا استخراج معلومات مُهيكلة - مثل الاسم والبريد الإلكتروني والخبرة - من كل سيرة ذاتية؟

وهنا يأتي دور استخراج البيانات المنظمة. وباستخدام LlamaIndex، يمكننا القيام بذلك باستخدام نماذج اللغة الكبيرة (LLMs)، جنبًا إلى جنب مع أدوات لتوجيه تنسيق إخراج باستخدام المخططات.

Press + to interact

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

الخطوة 1: البدء بمخطط أساسي

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

تحديد المخطط

سنستخدم Pydantic ، وهي مكتبة Python تُمكّننا من تعريف نماذج بيانات باستخدام فئات Python عادية. تُخبر هذه النماذج طالب الماجستير في القانون (LLM) بنوع البيانات المُهيكلة التي نريدها بالمقابل.

from pydantic import BaseModel
from typing import List
class ResumeData(BaseModel):
name: str
email: str
phone: str
skills: List[str]
Define a simple schema using Pydantic to represent top-level resume fields
  • BaseModel هي فئة من Pydantic تُستخدم لتعريف نماذج البيانات المنظمة. تتيح لنا تحديد الحقول التي نريد أن يستخرجها برنامج LLM، بالإضافة إلى أنواعها المتوقعة.

  • في مخطط ResumeData الخاص بنا، نُعرّف أربعة حقول لاستخراجها من السيرة الذاتية: name ، email ، phone ، وقائمة skills . حاليًا، نُبقي الهيكل بسيطًا للتركيز على كيفية استخراج البيانات.

الخطوة 2: تحميل مستند السيرة الذاتية

في هذا الدرس، سنفترض أن لدينا ملف سيرة ذاتية (بصيغة PDF) نريد استخراج المعلومات منه. يوفر LlamaIndex أدوات مدمجة لتحميل هذه الملفات وتحليلها.

from llama_index.readers.file import PDFReader
pdf_reader = PDFReader()
documents = pdf_reader.load_data("/path/to/resume.pdf")
text = documents[0].text
Load resume text from a PDF using LlamaIndex's built-in PDFReader

هنا، نستخدم PDFReader ، وهو أداة تحميل المستندات من LlamaIndex، لقراءة السيرة الذاتية واستخراج نصها الكامل.

الخطوة 3: استخراج البيانات المنظمة باستخدام LLM

سنتصل الآن بـ LLM باستخدام LlamaIndex. يمكنك استخدام أي واجهة خلفية مدعومة، مثل OpenAI أو Groq.

from llama_index.llms.groq import Groq
llm = Groq(model="llama3-70b-8192", api_key="YOUR_GROQ_API_KEY")
sllm = llm.as_structured_llm(ResumeData)
response = sllm.complete(text)
print(response)
Connect to a Groq-hosted LLM and use the schema to extract structured output

دعونا نكسر ذلك:

  • يقوم Groq(...) بتهيئة نموذج اللغة.

  • .as_struct ...