Retrieval-Augmented Generation (RAG)

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

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

دو استراتژی غالب برای مدیریت این پیچیدگی ظهور کرده‌اند: تقسیم متن بازگشتی و تکه‌بندی معنایی. اگرچه هر دو هدفشان شکستن متن غیرساختاریافته به قطعات قابل مدیریت برای جاسازی برداری است، اما از زوایای کاملاً متفاوتی به این مسئله نزدیک می‌شوند. این پست مکانیک‌ها، مزایا و معایب آن‌ها را برای کمک به شما در انتخاب استراتژی مناسب برای استک فناوری حقوقی‌تان تحلیل می‌کند.

مکانیک‌های تکه‌بندی بازگشتی

تقسیم متن بازگشتی، که اغلب در کتابخانه‌هایی مانند LangChain یافت می‌شود، یک رویکرد قطعی و سلسله‌مراتبی است. این روش تلاش می‌کند متن را با دانه‌بندی‌های تدریجاً ظریف‌تر تا زمانی که قطعات به یک محدودیت اندازه خاص (اندازه‌گیری شده بر اساس کاراکتر یا توکن) برسند، تقسیم کند. سلسله‌مراتب معمولی به این صورت است: خط جدید \n\n < code>خط‌ها < code>کلمات < code>جمله.

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

ظهور تکه‌بندی معنایی

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

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

مقایسه کد: استراتژی‌های پیاده‌سازی

پیاده‌سازی این استراتژی‌ها به کتابخانه‌ها و رویکردهای متفاوتی نیاز دارد. در زیر یک مقایسه با استفاده از پایتون ارائه شده است.

تقسیم بازگشتی با LangChain

from langchain.text_splitter import RecursiveCharacterTextSplitter

splitter = RecursiveCharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=50,
    separators=["\n\n", "\n", ".", " "]
)
chunks = splitter.split_text(legal_contract)
# توجه: این روش بر اساس ساختار تقسیم می‌کند، نه معنا.

تقسیم معنایی با NLTK و Scikit-Learn

تقسیم معنایی از پایه پیاده‌سازی آن پیچیده‌تر است. این روش اغلب شامل توکن‌بندی جمله و سپس محاسبه جاسازی است.

import nltk
from sklearn.metrics.pairwise import cosine_similarity
from sentence_transformers import SentenceTransformer

model = SentenceTransformer('all-MiniLM-L6-v2')

def semantic_split(text, threshold=0.8):
    sentences = nltk.sent_tokenize(text)
    embeddings = model.encode(sentences)
    chunks = []
    current_chunk = [sentences[0]]
    current_embedding = embeddings[0]
    
    for i in range(1, len(sentences)):
        dist = cosine_similarity([current_embedding], [embeddings[i]])[0][0]
        if dist < threshold: # معنا تغییر کرده است
            chunks.append(" ".join(current_chunk))
            current_chunk = [sentences[i]]
            current_embedding = embeddings[i]
        else:
            current_chunk.append(sentences[i])
            # به‌روزرسانی میانگین متحرک یا آخرین جاسازی
    chunks.append(" ".join(current_chunk))
    return chunks

ملاحظات عملی برای فناوری حقوقی

هنگام انتخاب بین این روش‌ها برای کاربردهای حقوقی، باید تعادل بین دقت و هزینه را در نظر بگیرید. تکه‌بندی بازگشتی سریع و ارزان است و برای پردازش اسناد با حجم بالا و ریسک پایین مناسب می‌باشد. با این حال، برای پشتیبانی از دعاوی با ریسک بالا یا بررسی قراردادها، یکپارچگی زمینه‌ای ارائه‌شده توسط تکه‌بندی معنایی می‌تواند توهم‌ها (hallucinations) را کاهش داده و relevancy (ارتباط) passages بازیابی‌شده را بهبود بخشد.

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

نتیجه‌گیری

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

Share: