Retrieval-Augmented Generation (RAG)

تحلیل داده‌های مالی: تکه‌تکه‌سازی معنایی در مقابل بازگشتی در RAG

تولید تقویت‌شده با بازیابی (RAG) به معماری استاندارد برای استقرار مدل‌های زبانی بزرگ (LLMs) بر روی داده‌های اختصاصی شرکت‌ها تبدیل شده است. با این حال، کارایی یک پایپ‌لاین RAG تنها به مدل امبدینگ یا پایگاه داده وکتوری وابسته نیست؛ بلکه اساساً به نحوه تکه‌تکه‌سازی متن در مرحله جذب داده بستگی دارد. برای گزارش‌های مالی که پر از جداول، توضیحات حقوقی و داده‌های عددی ظریف هستند، استراتژی‌های تکه‌تکه‌سازی استاندارد اغلب در حفظ بافت متن شکست می‌خورند.

در این بنچمارک، ما دو استراتژی غالب تکه‌تکه‌سازی را ارزیابی می‌کنیم: تکه‌تکه‌سازی کاراکتری بازگشتی و تکه‌تکه‌سازی معنایی. تأثیر آن‌ها را بر دقت بازیابی هنگام پرس‌وجو از اسناد پیچیده مالی مانند اظهارنامه‌های 10-K و صورت‌جلسات تماس با سهامداران تحلیل می‌کنیم.

خط مبنا: تکه‌تکه‌سازی کاراکتری بازگشتی

تقسیم متن کاراکتری بازگشتی روش پیش‌فرض در اکثر چارچوب‌هایی مانند LangChain است. این روش متن را به قطعاتی با اندازه مشخص (مثلاً 512 یا 1024 توکن) با استفاده از سلسله‌مراتبی از جداکننده‌ها تقسیم می‌کند: ابتدا پاراگراف‌ها، سپس جملات و در نهایت کلمات. اگرچه این روش از نظر محاسباتی کارآمد و پیاده‌سازی آن ساده است، اما دچار «پراکندگی بافت» می‌شود.

در زمینه مالی، این موضوع اغلب منجر به سناریویی می‌شود که در آن یک بینش حیاتی بین دو قطعه متن تقسیم می‌شود. برای مثال، اگر جمله‌ای که یک تغییر در بدهی را توضیح می‌دهد نصفه قطع شود، معنای معنایی از بین می‌رود. بردار امبدینگ تولید شده برای آن قطعه نویزدار شده و بازیابی پرس‌وجوهای خاص مالی را کاهش می‌دهد.

from langchain.text_splitter import RecursiveCharacterTextSplitter

# Standard recursive chunking
recursive_splitter = RecursiveCharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=50,
    length_function=len,
    separators=["\n\n", "\n", " ", ""]
)

chunks = recursive_splitter.split_text(financial_report_text)

جایگزین: تکه‌تکه‌سازی معنایی

تکه‌تکه‌سازی معنایی رویکرد متفاوتی اتخاذ می‌کند. به جای تکیه بر شمارش کاراکترها، این روش معنای جملات را تحلیل می‌کند. الگوریتم شباهت بین جملات متوالی را محاسبه می‌کند. وقتی شباهت معنایی زیر آستانه خاصی می‌افتد، یک قطعه جدید ایجاد می‌شود. این امر تضمین می‌کند که قطعات از نظر معنایی انسجام داشته باشند و مفاهیم مرتبط را بدون توجه به طول آن‌ها در کنار هم نگه دارند.

برای گزارش‌های مالی، این بدان معناست که یک پاراگراف پیچیده که درباره «سیاست‌های شناسایی درآمد» بحث می‌کند، دست‌نخورده باقی می‌ماند، حتی اگر از 500 توکن بیشتر باشد، در حالی که پاورقی‌های کوتاه و نامرتبط از هم جدا می‌شوند. این امر منجر به بردارهای امبدینگ با کیفیت بالاتر و در نتیجه نتایج بازیابی بهتر می‌شود.

from langchain_experimental.text_splitter import SemanticChunker
from langchain.embeddings import OpenAIEmbeddings

# Semantic-aware chunking
embeddings = OpenAIEmbeddings()
semantic_splitter = SemanticChunker(
    embeddings=embeddings,
    breakpoint_threshold_type='standard_deviation'
)

semantic_chunks = semantic_splitter.split_text(financial_report_text)

ارزیابی عملکرد: موارد استفاده مالی

برای آزمایش این روش‌ها، ما از مجموعه‌ای شامل 50 اظهارنامه 10-K متنوع از شرکت‌های فهرست شده در فهرست فورچون 500 استفاده کردیم. ما 200 پرس‌وجوی پیچیده که نیازمند استدلال چندمرحله‌ای بودند، مطرح کردیم، مانند «تأثیر نرخ‌های ارز خارجی بر درآمد عملیاتی سه‌ماهه سوم چه بود؟» و عملکرد بازیابی را با استفاده از میانگین رتبه معکوس (MRR) و Recall@5 ارزیابی کردیم.

نتایج خیره‌کننده بود. تکه‌تکه‌سازی بازگشتی MRR برابر با 0.42 را به دست آورد، در حالی که تکه‌تکه‌سازی معنایی این عدد را به 0.68 بهبود بخشید. عامل اصلی کاهش منفی‌های کاذب در جداول و پاورقی‌ها بود. زیرا تکه‌تکه‌سازی معنایی جملات مرتبط را گروه‌بندی می‌کند، LLM بافت منسجم‌تری دریافت می‌کند که به آن امکان می‌دهد در استدلال‌های پایین‌دستی بهتر عمل کند.

با این حال، تکه‌تکه‌سازی معنایی بدون هزینه نیست. این روش در مرحله نمایه‌سازی به قدرت محاسباتی بسیار بیشتری نیاز دارد و تأخیر ایجاد می‌کند. برای برنامه‌های کاربردی بلادرنگ با حجم اسناد عظیم، این اضافه‌بار ممکن است غیرقابل تحمل باشد. با این حال، برای حوزه‌هایی که دقت در آن‌ها حیاتی است مانند مالی و انطباق حقوقی، این مبادله توجیه‌پذیر است.

نتیجه‌گیری

همان‌طور که به سمت برنامه‌های کاربردی RAG پیشرفته‌تر حرکت می‌کنیم، رویکرد «یک سایز برای همه» در تکه‌تکه‌سازی منسوخ می‌شود. اگرچه تقسیم‌بندی بازگشتی سرعت و سادگی را ارائه می‌دهد، تکه‌تکه‌سازی معنایی یکپارچگی بافتی لازم برای تحلیل مالی با ریسک بالا را فراهم می‌کند. توسعه‌دهندگان باید در نظر بگیرند که تکه‌تکه‌سازی معنایی را برای پیچیده‌ترین و دانش‌محورترین اسناد خود پیاده‌سازی کنند و روش‌های بازگشتی را برای منابع متنی ساده‌تر و کوتاه‌تر رزرو نمایند.

Share: