أصبحت عملية التوليد المعزز بالاسترجاع (RAG) هي المعيار المعماري لربط نماذج اللغات الكبيرة (LLMs) بالبيانات المؤسسية الخاصة. ومع ذلك، فإن فعالية نظام RAG محدودة أساساً بجودة وهيكلية البيانات المستوعبة في مخزن المتجهات. بينما تكون المستندات النصية العادية سهلة المعالجة، إلا أن بيانات العالم الحقيقي فوضوية ومجزأة وتوجد بتنسيقات غير قياسية عديدة. لمهندسي البيانات ومطوري التعلم الآلي، لم يعد التحدي يتمثل فقط في بناء خط أنابيب، بل في بناء خط أنابيب مرن يمكنه تطبيع مستندات Word وجداول بيانات Excel وملفات الصور إلى استراتيجية تجزئة موحدة.
يستكشف هذا المنشور الدقائق التقنية لاستيعاب هذه الأنواع الثلاثة الحرجة من الملفات، مما يضمن أن نظام RAG الخاص بك يسترجع سياقاً ذا صلة دلاليًا وسليمًا هيكليًا.
تطبيع مستندات Microsoft Word (.docx)
تقدم مستندات Word تحدياً فريداً: فهي ليست مجرد حاويات للنص، بل للتنسيق المعقد. إن القراءة البسيطة للتدفق الثنائي ستؤدي إلى فقدان التسلسل الهرمي الدلالي، مما يتسبب في صعوبة تمييز العناوين والنقاط الرئيسية ونص الجسم بالنسبة لنموذج اللغة الكبير (LLM). تكمن الحل في استخدام مكتبات تحافظ على هيكل المستند، مثل python-docx أو Unstructured.
عند تجزئة النص من مستند Word، من الضروري الحفاظ على العلاقة بين الرؤوس والمحتوى. إذا قمت بإزالة العناوين، فإن القطع الناتجة تفقد سياقها. فيما يلي مثال باستخدام langchain مع مقسم نصي تكراري للأحرف، والذي صُمم لاحترام الحدود الدلالية مثل الفقرات والصفحات.
from langchain.document_loaders import Docx2txtLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
# Load the document
loader = Docx2txtLoader("project_proposal.docx")
documents = loader.load()
# Split with awareness of document structure
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=200,
length_function=len,
)
chunks = text_splitter.split_documents(documents)
print(f"Created {len(chunks)} chunks while preserving structure.")
فك تشفير البيانات الجدولية في Excel
غالباً ما تكون جداول بيانات Excel أغنى مصدر للبيانات المهيكلة، لكنها صعبة الاستهلاك مباشرة من قبل نماذج اللغات الكبيرة (LLMs). تؤدي النهج البسيط لتحويل الصفوف إلى سلاسل نصية غالباً إلى الهلوسة أو فقدان محاذاة الأعمدة. تتمثل أفضل الممارسات في تحويل كل ورقة إلى جدول Markdown نظيف أو سلسلة من القواميس القائمة على الصفوف.
يسمح استخدام مكتبة pandas بإجراء عمليات معالجة بيانات قوية قبل الاستيعاب. ومع ذلك، في سيناريوهات RAG المعقدة، غالباً ما يؤدي تحويل جدول البيانات إلى تنسيق شبه مهيكلي (مثل JSON أو Markdown) إلى الحصول على درجات استرجاع أفضل من التحويل الخام إلى CSV.
import pandas as pd
import json
# Load Excel file
df = pd.read_excel("financial_data.xlsx", sheet_name=None)
processed_docs = []
for sheet_name, sheet_data in df.items():
# Convert specific rows to context-rich strings
for _, row in sheet_data.iterrows():
context = " | ".join([f"{col}: {val}" for col, val in row.items()])
processed_docs.append(f"Sheet: {sheet_name} | Data: {context}")
print(f"Processed {len(processed_docs)} records into context strings.")
التعامل مع الصور: خط أنابيب التعرف الضوئي على الحروف (OCR)
تتطلب الصور، سواء كانت مسوحات ضوئية لملفات PDF أو صوراً فوتوغرافية أو لقطات شاشة، التعرف الضوئي على الحروف (OCR) لتكون قابلة للاستخدام من قبل نماذج اللغات الكبيرة (LLMs). هذا هو الجزء الأكثر استهلاكاً للموارد في خط أنابيب الاستيعاب. تُعد المكتبات مثل pytesseract (التي تغلف Tesseract OCR) أو واجهات برمجة التطبيقات السحابية (مثل AWS Textract وAzure Form Recognizer) خيارات قياسية.
من الحاسم معالجة الصور مسبقاً لتقليل الضوضاء قبل إجراء التعرف الضوئي على الحروف لتحسين الدقة. علاوة على ذلك، بالنسبة للرسوم البيانية أو المخططات، قد تحتاج إلى نموذج لغة مرئي (VLM) لوصف المحتوى المرئي، بدلاً من مجرد استخراج النص. بالنسبة لاستيعاب المستندات القياسي، يبدو خط أنابيب OCR القوي كالتالي:
from unstructured.partition.image import partition_image
# Uses Tesseract or other underlying engines
elements = partition_image("scan_001.png")
for element in elements:
# Filter out noise and keep only text elements
if hasattr(element, 'text') and element.text.strip():
print(element.text)
الخاتمة
يتطلب بناء خط أنابيب RAG جاهز للإنتاج أكثر من مجرد ربط السلاسل النصية. إنه يتطلب نهجاً دقيقاً لتحليل المستندات يحترم الهيكل الأساسي لمستندات Word، والنزاهة العلائقية لصفحات Excel، والطبيعة غير المهيكلة للصور. من خلال اعتماد مكتبات قوية واستراتيجيات تجزئة مدروسة، يمكن للمطورين ضمان تقديم تطبيقات الذكاء الاصطناعي الخاصة بهم استجابات دقيقة واعية بالسياق مشتقة حتى من مستودعات البيانات المؤسسية الأكثر تعقيداً.