تنفيذ RAG على ملفات PDF باستخدام البحث في الملفات في واجهة برمجة تطبيقات Responses

Anis MarrouchiAI Bot
بواسطة Anis Marrouchi & AI Bot ·

جاري تحميل مشغل تحويل النص إلى كلام الصوتي...

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

إعداد بيئتك

قبل الغوص في التنفيذ، تأكد من إعداد بيئتك بشكل صحيح. ثبّت حزم Python المطلوبة:

pip install PyPDF2 pandas tqdm openai -q

إنشاء مخزن متجهات

الخطوة الأولى تتضمن إنشاء مخزن متجهات على واجهة برمجة تطبيقات OpenAI وتحميل ملفات PDF الخاصة بك إليه. تتضمن هذه العملية قراءة ملفات PDF، وفصل المحتوى إلى أجزاء، وتشغيل التضمينات على هذه الأجزاء، وتخزينها في مخزن المتجهات.

from openai import OpenAI
from concurrent.futures import ThreadPoolExecutor
from tqdm import tqdm
import concurrent
import PyPDF2
import os
import pandas as pd
import base64
 
client = OpenAI(api_key=os.getenv('OPENAI_API_KEY'))

تحميل ملفات PDF إلى مخزن المتجهات

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

def upload_single_pdf(file_path: str, vector_store_id: str):
    file_name = os.path.basename(file_path)
    try:
        file_response = client.files.create(file=open(file_path, 'rb'), purpose="assistants")
        attach_response = client.vector_stores.files.create(
            vector_store_id=vector_store_id,
            file_id=file_response.id
        )
        return {"file": file_name, "status": "success"}
    except Exception as e:
        print(f"خطأ مع {file_name}: {str(e)}")
        return {"file": file_name, "status": "failed", "error": str(e)}

الاستعلام في مخزن المتجهات

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

query = "ما هو البحث العميق؟"
search_results = client.vector_stores.search(
    vector_store_id=vector_store_details['id'],
    query=query
)

دمج نتائج البحث مع نموذج اللغة الكبير

لتعزيز فائدة المعلومات المسترجعة بشكل أكبر، يمكنك دمج نتائج البحث مع نموذج تعلم اللغة (LLM) في استدعاء واجهة برمجة تطبيقات واحد. يسمح هذا التكامل السلس باستعلامات وردود أكثر تطوراً.

response = client.responses.create(
    input= query,
    model="gpt-4o-mini",
    tools=[{
        "type": "file_search",
        "vector_store_ids": [vector_store_details['id']],
    }]
)

تقييم الأداء

تقييم أداء تنفيذ RAG الخاص بك أمر بالغ الأهمية. يتضمن هذا توليد مجموعة بيانات تقييم، وحساب مقاييس مختلفة، وضمان صلة وجودة المعلومات المسترجعة.

def generate_questions(pdf_path):
    text = extract_text_from_pdf(pdf_path)
 
    prompt = (
        "هل يمكنك توليد سؤال لا يمكن الإجابة عليه إلا من هذا المستند؟:\n"
        f"{text}\n\n"
    )
 
    response = client.responses.create(
        input=prompt,
        model="gpt-4o",
    )
 
    question = response.output[0].content[0].text
 
    return question

باتباع هذه الخطوات، يمكنك تنفيذ نظام RAG قوي باستخدام واجهة برمجة تطبيقات Responses، مما يبسط بشكل كبير عملية البحث واسترجاع المعلومات من مستندات PDF.

المرجع: OpenAI Blog بواسطة Pierre-Antoine Porte


هل تريد قراءة المزيد من الدروس التعليمية؟ تحقق من أحدث درس تعليمي لدينا على إنشاء بوت Slack مخصص باستخدام NVIDIA NIM و LangChain.

ناقش مشروعك معنا

نحن هنا للمساعدة في احتياجات تطوير الويب الخاصة بك. حدد موعدًا لمناقشة مشروعك وكيف يمكننا مساعدتك.

دعنا نجد أفضل الحلول لاحتياجاتك.

مقالات ذات صلة