معماری گراف RAG عاملی
توسعه عاملهای هوشمند (Agentic Ai) با Langchain و Langgraph
- Design a graph that classifies a request, retrieves file evidence, optionally uses supporting tools, and generates cited output.
- Define state fields for question, rewritten query, retrieved documents, tool results, citations, and answer.
- Separate deterministic orchestration from model-based decisions.
چرا Agentic RAG؟
**ایده اصلی**
هر نوع سؤال مسیر مناسب خودش را دارد: پاسخ مستقیم، بازیابی فایل، یا اجرای ابزار.
```mermaid
flowchart LR
A["Question"] --> B["Classify"]
B -->|"file needed"| C["Retrieve"]
B -->|"tool needed"| D["Tool"]
B -->|"direct"| E["Generate"]
C --> E
D --> E
E --> F["Cited answer"]
```
State؛ حافظه مشترک
**نمونه: سؤال تا پاسخ**
سؤال: شرایط بازگشت چیست؟
۱. بازنویسی: شرایط بازگشت کالا
۲. بازیابی: بند ۳، صفحه ۲
۳. تولید: پاسخ همراه با citation
هر مرحله خروجی خود را در فیلد جداگانه ثبت میکند.
```mermaid
flowchart TD
Q["question: شرایط بازگشت چیست؟"] --> R["rewrite"]
R --> S["rewritten_query: شرایط بازگشت کالا"]
S --> T["retrieve"]
T --> D["documents: بند ۳، صفحه ۲"]
D --> G["generate"]
G --> A["answer + citations: پاسخ مستند"]
```
معماری گامبهگام
**دو تصمیم واقعی**
فایل: مهلت پرداخت → بازنویسی → بازیابی → بررسی شواهد → پاسخ با صفحه.
محاسبه: ۲۷ × ۱۴ → ابزار → ۲۷۰ + ۱۰۸ → ۳۷۸.
در هر دو مورد، انتخاب مسیر قبل از تولید پاسخ انجام میشود.
```mermaid
flowchart TD
S["START"] --> C["classify"]
C -->|"direct"| G["generate"]
C -->|"file"| R["rewrite"]
C -->|"tool"| T["tool"]
R --> V["retrieve"]
V --> D{"evidence enough?"}
D -->|"yes"| G
D -->|"no"| T
T --> G
G --> E["END"]
```
نمونه کامل با LangGraph
**ردیابی اجرای نمونه**
ورودی: سؤال فایلمحور، با فهرستهای خالی.
۱. classify: مقدار rewritten_query ثبت میشود.
۲. route: چون rewritten_query وجود دارد، retrieve انتخاب میشود.
۳. retrieve: متن سند و source جدا ذخیره میشوند.
۴. generate: پاسخ فقط از context ساخته میشود.
نکته: بررسی documents در route اشتباه است، چون قبل از retrieve خالی است.
**اتصال به درس قبل**
در درس Checkpointing و Durable Execution، state صریح امکان ذخیره و ادامه اجرای گراف را فراهم میکند.
کنترل، citation و اطمینان
**تقسیم مسئولیت**
کارهای قطعی مانند شروع، پایان و محدودیت ابزار را با deterministic کنترل کنید. کارهای زبانی مانند بازنویسی و تولید متن را به model-based بسپارید، اما با evidence محدودشان کنید.
**نمونه citation**
شاهد: policy.pdf، صفحه ۴، مهلت پرداخت ۳۰ روز است.
نتیجه: مهلت پرداخت ۳۰ روز است [policy.pdf، ص. ۴].
اگر عدد یا صفحه در شاهد نبود، نتیجه درست این است: پاسخ قابل اتکا پیدا نشد.
**گام بعدی**
در Answer Verification and Repair Loops، پوشش evidence، پشتیبانی citation و کاملبودن پاسخ بررسی میشود.
بازگشت به دوره