فاز 19 · درس 8

پروژه‌ی پایانی: ساخت سیستم RAG عملیاتی برای حوزه‌های حساس

نوع
پروژه‌ی پایانی
زمان
حدود 10 دقیقه
زبان‌ها
Python (pipeline + API), TypeScript (chat UI)
پیش‌نیاز
فاز 5 (پردازش زبان طبیعی)، فاز 7 (ترنسفورمرها)، فاز 11 (مهندسی مدل‌های زبانی)، فاز 12 (چندوجهی)، فاز 17 (زیرساخت)، فاز 18 (ایمنی)
یک پلتفرم فلزی با لایه‌های شیشه‌ای محافظ و مسیرهای اتصالی نوری که داده‌ها را بازبینی و فیلتر می‌کنند
فهرست مطالب
  1. صورت مسئله
  2. مفهوم
  3. معماری
  4. استک فنی
  5. پیاده‌سازی از صفر
  6. استفاده از ابزارهای واقعی
  7. خروجی این درس
  8. تمرین‌ها
  9. اصطلاحات کلیدی
  10. برای مطالعه‌ی بیشتر

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

در معماری‌های عملیاتی سال 2026، الگوهای تثبیت‌شده‌ای برای غلبه بر این چالش‌ها شکل گرفته است. استفاده از بازیابی ترکیبی (Dense + Sparse)، بازرتبه‌بندی با مدل‌های تخصصی، اهرم کش کردن پرامپت (Prompt Caching) برای کاهش هزینه‌ها تا بیش از 60 درصد و لایه‌های نظارتی ایمنی همگی در کنار هم قرار می‌گیرند تا سامانه‌ای قابل‌اتکا و سازمانی بسازند.

اگر برای فراخوانی API مدل‌های زبانی مانند Claude یا سرویس‌های ابری با محدودیت‌های پرداخت ارزی یا مسدود بودن دسترسی از داخل ایران مواجه هستید، گزینه‌های جایگزین متعددی وجود دارد. در این معماری می‌توانید از مدل‌های متن‌باز مثل Llama 3.3 70B روی زیرساخت خودمیزبان بهره ببرید، یا از گیت‌وی‌های واسط سازگار با مشخصات OpenAI برای دسترسی به مدل‌های تجاری استفاده کنید.

شرکت‌های Harvey، Glean، Mendable و LlamaCloud همگی در سال 2026 از یک معماری عملیاتی مشترک استفاده می‌کنند: بارگذاری داده‌ها با docling یا Unstructured و استفاده از ColPali برای محتوای بصری؛ جستجوی ترکیبی؛ بازرتبه‌بندی با bge-reranker-v2-gemma؛ سنتز و تولید پاسخ با Claude Sonnet 4.7 با کش کردن پرامپت (Prompt caching) با نرخ اصابت 60 تا 80 درصد؛ محافظت با Llama Guard 4 و NeMo Guardrails؛ پایش مستمر با Langfuse و Phoenix؛ و در نهایت نمره‌دهی با RAGAS روی یک مجموعه‌ی طلایی (Golden set) شامل 200 پرسش. ساخت چنین سیستمی در یک حوزه‌ی تحت رگولاتوری (حقوقی، بالینی یا بیمه) پروژه‌ی پایانی این دوره است و موفقیت در آن یعنی قبولی در ارزیابی مجموعه‌ی طلایی، آزمون‌های تیم قرمز و داشبورد دریفت (Drift).

فازهای تمرین‌شده: P5 · P7 · P11 · P12 · P17 · P18
مدت زمان: 30 ساعت

صورت مسئله

سامانه‌های RAG در حوزه‌های تحت رگولاتوری (قراردادهای حقوقی، پروتکل‌های کارآزمایی بالینی، بیمه‌نامه‌ها) پرکاربردترین الگوهای پیاده‌سازی‌شده در محیط عملیاتی سال 2026 هستند؛ زیرا بازگشت سرمایه‌ی آن‌ها کاملاً مشخص و حساسیت خروجی‌هایشان بسیار ملموس است. شرکت Harvey (برای موسسه‌ی Allen & Overy) آن را برای حوزه‌ی حقوقی پیاده کرد. Mendable نسخه‌ی ویژه‌ی مستندات توسعه‌دهندگان را روانه‌ی بازار کرد و Glean جستجوی سازمانی را پوشش می‌دهد. الگوی اصلی این سامانه‌ها یکسان است: بارگذاری داده با وفاداری بالا، بازیابی ترکیبی همراه با بازرتبه‌بندی، سنتز پاسخ با الزام به ارائه‌ی استناد و کش کردن پرامپت، محافظت با چندین لایه‌ی ایمنی و پایش مستمر دریفت.

بخش‌های دشوار این کار به خود مدل مربوط نمی‌شوند؛ بلکه چالش اصلی رعایت انطباق قانونی بسته به حوزه‌ی قضایی (HIPAA، GDPR، SOC2)، قابلیت حسابرسی در سطح استنادها، کنترل هزینه‌ها (کش کردن پرامپت با نرخ اصابت بالا هزینه‌ها را 60 تا 90 درصد کاهش می‌دهد)، تشخیص توهم (Hallucination Detection) با سنجه‌ی وفاداری RAGAS و تشخیص دریفت اسناد زمانی است که فایل‌های منبع به‌روزرسانی می‌شوند ولی ایندکس همگام نشده است. در این پروژه‌ی پایانی باید کل این پایپ‌لاین را پیاده کنید و آن را با یک مجموعه‌ی طلایی 200 سوالی در کنار مجموعه‌ای از آزمون‌های تیم قرمز بسنجید.

مفهوم

این پایپ‌لاین دو بخش اساسی دارد: بارگذاری داده (Ingestion): ابزار docling یا Unstructured اسناد ساختاریافته را تحلیل می‌کند؛ مدل ColPali صفحات با بار بصری بالا را پردازش می‌کند؛ و چانک‌ها خلاصه‌سازی و برچسب‌گذاری می‌شوند و برچسب‌های دسترسی مبتنی بر نقش می‌گیرند. سپس بردارها درون pgvector به همراه pgvectorscale (برای کمتر از 50 میلیون بردار) یا Qdrant Cloud ذخیره می‌شوند و در کنار آن‌ها جستجوی پراکنده با BM25 اجرا می‌شود. بخش گفت‌وگو: فریم‌ورک LangGraph مدیریت حافظه و گفت‌وگوهای چندنوبتی را به دست می‌گیرد؛ هر پرسش از مسیر بازیابی ترکیبی می‌گذرد، با مدل bge-reranker-v2-gemma-2b بازرتبه‌بندی می‌شود، با Claude Sonnet 4.7 (با پرامپتِ کش‌شده) سنتز می‌شود، خروجی از فیلترهای Llama Guard 4 و NeMo Guardrails عبور می‌کند و پاسخی دقیق با ارجاع محکم به استنادها ارائه می‌دهد.

استک ارزیابی از چهار لایه تشکیل شده است: مجموعه‌ی طلایی (200 جفت پرسش و پاسخ برچسب‌خورده همراه با استناد) برای سنجش صحت؛ تیم قرمز (جیل‌بریک‌ها، تلاش برای استخراج اطلاعات هویتی حساس یا PII، پرسش‌های خارج از دامنه) برای ارزیابی ایمنی؛ RAGAS برای ارزیابی خودکار وفاداری، ارتباط پاسخ و دقت زمینه در هر نوبت گفت‌وگو؛ و داشبورد دریفت (Arize Phoenix) برای نظارت هفتگی بر کیفیت بازیابی و نمره‌ی توهم.

کش کردن پرامپت اهرم اصلی کاهش هزینه است. مدل‌های Claude 4.5 به بالا و GPT-5 به بالا از کش کردن پرامپت سیستم و زمینه‌ی بازیابی‌شده پشتیبانی می‌کنند. در نرخ اصابت 60 تا 80 درصد، هزینه‌ی هر پرسش 3 تا 5 برابر کمتر می‌شود. برای رسیدن به بالاترین نرخ اصابت کش، باید پایپ‌لاین را طوری طراحی کنید که پیشوندهای پایداری داشته باشد (ابتدا پرامپت سیستم و سپس زمینه‌های بازرتبه‌بندی‌شده قرار بگیرند).

معماری

documents (contracts, protocols, policies)
      |
      v
docling / Unstructured parse + ColPali for visuals
      |
      v
chunks + summaries + role-labels + jurisdiction tags
      |
      v
pgvector + pgvectorscale  +  BM25 (Tantivy)
      |
query + role + jurisdiction
      |
      v
LangGraph conversational agent
   +--- retrieve (hybrid)
   +--- filter by role + jurisdiction
   +--- rerank (bge-reranker-v2-gemma-2b or Voyage rerank-2)
   +--- synthesize (Claude Sonnet 4.7, prompt cached)
   +--- guard (Llama Guard 4 + NeMo Guardrails + Presidio output PII scrub)
   +--- cite + return
      |
      v
eval:
  RAGAS faithfulness / answer_relevance / context_precision (online)
  Langfuse annotation queue (sampled)
  Arize Phoenix drift (weekly)
  red team suite (pre-release)

استک فنی

  • بارگذاری: Unstructured.io یا docling برای اسناد ساختاریافته؛ ColPali برای فایل‌های PDF با محتوای بصری غنی
  • دیتابیس برداری: ترکیب pgvector و pgvectorscale برای زیر 50 میلیون بردار؛ در غیر این صورت Qdrant Cloud
  • جستجوی پراکنده: Tantivy BM25 با وزن‌دهی به فیلدها
  • ارکستراسیون: جریان‌های کاری LlamaIndex Workflows (بارگذاری داده) + LangGraph (گفت‌وگو)
  • بازرتبه‌بندی (Re-ranker): مدل bge-reranker-v2-gemma-2b خودمیزبان یا Voyage rerank-2 میزبانی‌شده
  • مدل زبانی بزرگ: Claude Sonnet 4.7 به همراه کش کردن پرامپت؛ طرح پشتیبان Llama 3.3 70B خودمیزبان
  • ارزیابی: RAGAS 0.2 آنلاین؛ DeepEval برای مجموعه‌آزمون‌های توهم و جیل‌بریک
  • رصدپذیری: Langfuse خودمیزبان همراه با صف حاشیه‌نویسی؛ Arize Phoenix برای پایش دریفت
  • گاردریل‌ها: دسته‌بند ورودی و خروجی Llama Guard 4، سیاست‌های NeMo Guardrails v0.12 و ابزار پاک‌سازی اطلاعات هویتی Presidio
  • انطباق قانونی: برچسب‌های دسترسی مبتنی بر نقش روی چانک‌ها؛ برچسب‌های حوزه‌ی قضایی برای GDPR/HIPAA
استقرار قناریدرصد قناری را بکشید
CANARY ROLLOUTA canary release routes a small slice of traffic to the new version while the rest stays on the proven one. Error rate on the canary is watched against an SLA; the moment it breaches, traffic drains back to stable. Here the canary runs hot, so widening the split raises the blended error and keeps the rollback armed.پایدار 90%قناری 10%خطای قناری 2.6% در برابر SLA 1.5% - رول‌بک فعال شد
در یک انتشار قناری، بخش کوچکی از ترافیک به سمت نسخه جدید هدایت می‌شود و مابقی روی نسخه اثبات‌شده باقی می‌ماند. نرخ خطای نسخه قناری بر اساس SLA پایش می‌شود؛ به محض عبور از حد مجاز، ترافیک سریعاً به نسخه پایدار بازمی‌گردد. در اینجا نسخه قناری خطای بالایی دارد، بنابراین افزایش سهم آن خطای کلی را بالا برده و وضعیت بازگشت به عقب (Rollback) را فعال نگه می‌دارد.

پیاده‌سازی از صفر

  1. بارگذاری داده. داده‌های متنی خود را (1000 تا 10000 سند برای یک پروژه‌ی واقعی) با Unstructured یا docling پردازش کنید. صفحات اسکن‌شده یا متکی به تصاویر را به ColPali بفرستید. چانک‌ها را همراه با خلاصه‌ها، برچسب‌های نقش و تگ‌های حوزه‌ی قضایی بسازید.

  2. ایندکس‌گذاری. امبدینگ‌های متراکم (Voyage-3 یا Nomic-embed-v2) را داخل pgvector + pgvectorscale بریزید. ایندکس جانبی BM25 را با Tantivy بسازید. فیلترهای نقش و حوزه‌ی قضایی را به عنوان پی‌لود (Payload) ذخیره کنید.

  3. بازیابی ترکیبی. ابتدا داده‌ها را بر اساس نقش و حوزه‌ی قضایی فیلتر کنید؛ سپس جستجوی متراکم و BM25 را به صورت موازی اجرا کنید؛ نتایج را با ادغام بر پایه‌ی رتبه‌ی متقابل (Reciprocal Rank Fusion) ترکیب کنید؛ 20 نتیجه‌ی برتر را به بازرتبه‌بندی بفرستید و 5 مورد برتر نهایی را برای سنتز ارسال کنید.

  4. تولید پاسخ با کش کردن پرامپت. پرامپت سیستم و قوانین ثابت را در هدر کش قرار دهید؛ زمینه‌ی بازرتبه‌بندی‌شده را به عنوان ادامه‌ی کش اضافه کنید؛ و پرسش کاربر را در انتهای کش‌نشده بیاورید. هدف‌گذاری کنید که در شرایط پایدار به نرخ اصابت 60 تا 80 درصد برسید.

  5. گاردریل‌ها. از Llama Guard 4 روی ورودی استفاده کنید؛ با NeMo Guardrails جلوی موضوعات ممنوعه در شیوه‌نامه یا پرسش‌های خارج از دامنه را بگیرید؛ اطلاعات هویتی تصادفی در خروجی را با Presidio حذف کنید؛ و پس از فیلتر، سیستم را به درج استنادها ملزم سازید.

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

  7. تیم قرمز. 50 پرامپت خصمانه اجرا کنید: جیل‌بریک‌ها (PAIR، TAP)، تلاش برای استخراج غیرمجاز PII، پرسش‌های خارج از دامنه و نشت اطلاعات بین حوزه‌های قضایی مختلف. نتایج را با قبولی/ردی و سطح شدت ثبت کنید.

  8. داشبورد دریفت. کیفیت بازیابی (nDCG، وفاداری استنادها) را به صورت هفتگی با Arize Phoenix رصد کنید. در صورت افت 5 درصدی، هشدار ارسال کنید.

  9. گزارش هزینه‌ها. در Langfuse این موارد را ثبت کنید: نرخ اصابت کش پرامپت، تعداد توکن در هر پرسش و تفکیک هزینه به ازای هر پرسش در هر مرحله.

استفاده از ابزارهای واقعی

$ chat --role=analyst --jurisdiction=GDPR
> what is the data-retention obligation for EU user profiles under our contract?
[retrieve]  hybrid top-20 filtered to GDPR + analyst-role
[rerank]    top-5 kept
[synth]     claude-sonnet-4.7, cache hit 74%, 0.8s
answer:
  The contract (Section 12.4, Master Services Agreement dated 2024-03-11)
  obligates EU user profile deletion within 30 days of termination per GDPR
  Article 17. The DPA amendment (DPA-v2.1, Section 5) extends this to 14 days
  for "restricted" category data.
  citations: [MSA-2024-03-11 s12.4, DPA-v2.1 s5]

خروجی این درس

سند outputs/skill-production-rag.md مشخصات تحویلی را شرح می‌دهد: یک چت‌بات در حوزه‌ی تحت رگولاتوری که با برچسب‌های انطباق قانونی مستقر شده، شیوه‌نامه‌ی نمره‌دهی را با موفقیت گذرانده و مجهز به پایش زنده‌ی دریفت است.

وزن معیار نحوه‌ی ارزیابی
25 وفاداری RAGAS + ارتباط پاسخ نمره‌دهی آنلاین روی مجموعه‌ی طلایی (200 جفت پرسش و پاسخ)
20 صحت استنادها نسبت پاسخ‌هایی که استنادهای مبنای قابل‌راستی‌آزمایی دارند
20 پوشش گاردریل‌ها نرخ قبولی Llama Guard 4 + نتایج مجموعه‌آزمون جیل‌بریک
20 مهندسی هزینه و تاخیر نرخ اصابت کش پرامپت، تاخیر صدک 95 (p95) و هزینه به ازای هر پرسش
15 داشبورد پایش دریفت داشبورد فعال Phoenix همراه با روند هفتگی کیفیت بازیابی
100

تمرین‌ها

  1. بخش دومی از دادگان را تحت حوزه‌ی قضایی متفاوتی بسازید (مثلاً HIPAA در کنار GDPR). با طراحی 20 آزمون ارزیابی تقاطع حوزه‌ها، نشان دهید که فیلتر نقش و حوزه‌ی قضایی جلوی نشت داده‌ها را می‌گیرد.

  2. نرخ اصابت کش پرامپت را طی یک هفته ترافیک عملیاتی اندازه بگیرید. بررسی کنید کدام پرسش‌ها پیشوند کش را به هم می‌زنند؛ سپس ساختار را اصلاح کنید.

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

  4. مدل Claude Sonnet 4.7 را با Llama 3.3 70B خودمیزبان جایگزین کنید. تفاوت هزینه به ازای هر پرسش و تغییر نمره‌ی وفاداری را بسنجید.

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

اصطلاحات کلیدی

اصطلاح اصطلاح رایج معنای واقعی
کش کردن پرامپت (Prompt caching) «کش کردن پرامپت سیستم و زمینه» قابلیتی در Claude و OpenAI که در صورت اصابت به کش، هزینه‌ی توکن‌های پیشوند را بین 60 تا 90 درصد کاهش می‌دهد.
RAGAS «ارزیاب RAG» امتیازدهی خودکار به وفاداری، ارتباط پاسخ و دقت زمینه.
مجموعه‌ی طلایی (Golden set) «ارزیابی برچسب‌خورده» بیش از 200 پرسش و پاسخ برچسب‌خورده توسط کارشناس همراه با استنادها؛ داده‌ی واقعی (Ground truth).
برچسب حوزه‌ی قضایی (Jurisdiction tag) «برچسب انطباق قانونی» دامنه‌ی شمول GDPR/HIPAA/SOC2 که به چانک‌ها متصل و با فیلتر بازیابی اعمال می‌شود.
وفاداری استنادها (Citation faithfulness) «نرخ پاسخ‌های مستند» درصدی از ادعاهای متن که به اسپن‌های بازیابی‌شده از منبع تکیه دارند.
دریفت (Drift) «افت کیفیت بازیابی» تغییرات هفتگی در nDCG یا نمره‌ی استنادها؛ با آستانه‌ی هشدار 5 درصد.
تیم قرمز (Red team) «ارزیابی خصمانه» آزمون‌های ارزیابی پیش از عرضه برای جیل‌بریک، استخراج غیرمجاز PII و سوالات خارج از دامنه.

برای مطالعه‌ی بیشتر

خودآزمایی

به سؤال‌ها جواب بدهید تا ببینید چقدر از درس در ذهنتان مانده است.

  1. پیش از درسچرا کش کردن پرامپت در چت‌بات‌های RAG حوزه‌های قانون‌مند اهمیت بسیار بالایی دارد؟
  2. پیش از درسچه محتوایی در هدر کش و چه مواردی در پسوند کش‌نشده هر درخواست قرار می‌گیرد؟
  3. حین درسلایه بازیابی چگونه تگ‌های حوزه قضایی مانند GDPR یا HIPAA را رعایت می‌کند؟
  4. حین درسمرحله سنتز، خروجی را از کدام ترکیب لایه‌ایِ گاردریل‌ها عبور می‌دهد؟
  5. حین درسداشبورد انحراف (Drift) روی چه مواردی هشدار می‌دهد؟
  6. پس از درسمجموعه مرجع (Golden Set) مورد استفاده برای تعیین شیوه‌نامه‌ی نمره‌دهی صحت خروجی چقدر بزرگ است؟
  7. پس از درسکدام امتیازهای RAGAS به صورت آنلاین به ازای هر نوبت گفت‌وگو پایش می‌شوند؟

سؤالات متداول

کش کردن پرامپت (Prompt Caching) چگونه هزینه‌های RAG را کاهش می‌دهد؟

با قرار دادن پرامپت سیستم، قوانین ثابت و محتوای بازیابی‌شده در پیشوند درخواست، ارائه‌دهندگان مدل تخفیف 60 تا 90 درصدی روی توکن‌های کش‌شده اعمال می‌کنند که با نرخ اصابت 60 تا 80 درصد، هزینه هر پرسش را 3 تا 5 برابر کم می‌کند.

چه ابزارهایی برای ارزیابی و سنجش توهم در پایپ‌لاین RAG استفاده می‌شوند؟

از فریم‌ورک RAGAS برای محاسبه خودکار وفاداری، ارتباط پاسخ و دقت زمینه در هر نوبت و از Arize Phoenix برای پایش افت کیفیت بازیابی و دریفت هفتگی استفاده می‌شود.

لایه‌های ایمنی برای جلوگیری از پاسخ‌های خارج از دامنه و نشت اطلاعات چیست؟

دسته‌بند Llama Guard 4 ورودی‌ها و خروجی‌ها را بررسی می‌کند، NeMo Guardrails سیاست‌های مسدودسازی را اعمال می‌کند و Presidio اطلاعات هویتی حساس (PII) را از خروجی پاک‌سازی می‌نماید.

ما رو توی گوگل بیشتر ببین

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