Retrieval-Augmented Generation (RAG)

گشودن زمینه‌های پنهان: یکپارچه‌سازی جاسازی‌های تصویر و متن در پایپ‌لاین‌های RAG

تکامل جستجوی سازمانی

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

مهندسی یک استراتژی جاسازی چندوجهی

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

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

پیاده‌سازی: ساخت مخزن برداری

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


import chromadb
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import Chroma
from PIL import Image
import requests
import io

# راه‌اندازی یک مدل جاسازی چندوجهی (مثال با استفاده از یک بسته چندوجهی فرضی)
# در عمل، ممکن است از کتابخانه‌ای مانند 'sentence-transformers' با یک مدل چندوجهی استفاده کنید
model_name = "sentence-transformers/clip-ViT-B-32"
embeddings = HuggingFaceEmbeddings(model_name=model_name)

# داده‌های مثال: یک نمودار فنی و توضیح متنی آن
image_url = "https://example.com/diagram.png"
text_description = "نمودار معماری سیستم که ارتباط خدمات خرد را از طریق کافکا نشان می‌دهد."

# دریافت و پیش‌پردازش تصویر
image = Image.open(requests.get(image_url, stream=True).raw)

# تولید جاسازی‌ها
# توجه: بسته به کتابخانه خاص، ممکن است نیاز باشد هر دو تصویر و متن را پاس دهید
# یا جاسازی‌های جداگانه تولید کرده و آن‌ها را ادغام کنید.
# در اینجا فرض می‌کنیم یک رمزگذار چندوجهی که هر دو را می‌پذیرد.
vector = embeddings.embed_query({"image": image, "text": text_description})

# ذخیره در ChromaDB
client = chromadb.Client()
collection = client.get_or_create_collection(name="enterprise_docs")

collection.add(
    ids=["doc_001"],
    embeddings=[vector],
    documents=[text_description],
    metadatas=[{"type": "multi_modal", "source": image_url}]
)

پرس‌وجو در نمایه چندوجهی

هنگامی که کاربر یک پرس‌وجو ارسال می‌کند، مانند "منطق سرویس پرداخت را به من نشان بده"، سیستم باید به دنبال نمودارهای بصری باشد که با قصد معنایی مطابقت دارند. با استفاده از همان تابع جاسازی برای متن پرس‌وجو، ما k نتیجه برتر را از مخزن برداری بازیابی می‌کنیم. سپس پایپ‌لاین RAG این قطعات بازیابی‌شده را - چه خالص متنی باشند و چه متن همراه با ارجاعات تصویر - به LLM تغذیه می‌کند. پیاده‌سازی‌های پیشرفته حتی می‌توانند بایت‌های تصویر را مستقیماً به LLMهای چندوجهی مانند GPT-4V یا LLaVA برای استدلال عمیق‌تر ارسال کنند.

چالش‌ها و بهترین شیوه‌ها

یکپارچه‌سازی تصاویر در RAG باعث تأخیر و سربار ذخیره‌سازی می‌شود. برای کاهش این اثرات، یک استراتژی بازیابی لایه‌ای پیاده‌سازی کنید: ابتدا کاندیداها را بر اساس شباهت متنی بازیابی کنید، سپس با استفاده از امتیازات چندوجهی بازمرتب‌سازی کنید. علاوه بر این، همیشه از فیلترهای متادیتا برای محدود کردن جستجوها به انواع خاص اسناد یا مناطق امنیتی استفاده کنید. در نهایت، اطمینان حاصل کنید که پایپ‌لاین جاسازی شما شامل پیش‌پردازش قوی است، مانند OCR برای اسناد اسکن‌شده، تا شکاف بین متن بصری و معنای معنایی را پر کند.

نتیجه‌گیری

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

Share: