پارس‌رگ
انگلیسی نصب

مربوط به پارس‌رگ ۱.۱.۲۲ آبان ۱۴۰۵

پارس‌رگ از درون

هر کاری که نسخهٔ فعلی انجام می‌دهد، از نصب تا خواندن پاسخی که به منبعش ارجاع می‌دهد. هر فصل از روی کد و اسناد همان نسخه‌ای نوشته شده که نامش پایین‌تر آمده است.

فصل‌ها

پارس‌رگ چیست

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

باز کردن در صفحهٔ جدا

از اسنادتان بپرسید

فایل‌ها را به یک گفت‌وگو اضافه کنید و به فارسی یا انگلیسی بپرسید. اگر با @ به یک فایل اشاره کنید، جست‌وجو فقط در همان فایل انجام می‌شود.

هر پاسخ را بررسی کنید

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

محلی از پایه

خواندن فایل‌ها، OCR، ایندکس جست‌وجو و تاریخچهٔ گفت‌وگو روی رایانهٔ خودتان می‌ماند. جای نوشته‌شدن پاسخ را هم خودتان انتخاب می‌کنید.

فارسی در اولویت

رابط راست‌به‌چپ، OCR فارسی، یکسان‌سازی املای فارسی و خواندن PDF فارسی به ترتیب درست، همه جزو خود برنامه‌اند.

این نسخه در یک نگاه

نسخه
۱.۱.۲، منتشرشده در ۲ آبان ۱۴۰۵
مجوز
کد منبع در دسترس، اما نه متن‌باز
سیستم‌عامل
ویندوز، مک و لینوکس با Docker Compose؛ اجرای مستقیم با Python 3.12 و Node.js 22
بک‌اند
Python، FastAPI، LlamaIndex، Qdrant، sentence-transformers، PyMuPDF و Tesseract OCR
فرانت‌اند
React 19، TypeScript 7، Vite و KaTeX
راه‌اندازی پیشنهادی مدل
همان Ollamaی که روی رایانه‌تان نصب است، با مدل‌ها و GPU خودش؛ در .env.example مدل qwen2.5:7b آمده است
تنظیمات
۲۷ گزینه بدون راه‌اندازی دوباره در خود برنامه تغییر می‌کنند و هرکدام را می‌توان به مقدار .env برگرداند
صفحهٔ آغاز پارس‌رگ به فارسی، در پوستهٔ روشن
صفحهٔ آغاز فضای کار. تصویرها از مخزن پارس‌رگ برداشته شده‌اند و نمونه‌هایشان ساختگی است.

نصب و نخستین اجرا

روش پیشنهادی برای اجرای پارس‌رگ، Docker Compose همراه با Ollamaی است که از قبل روی رایانه‌تان نصب است: یک کانتینر برنامه رابط کاربری و API را ارائه می‌کند، Qdrant بردارها را نگه می‌دارد و پاسخ‌ها را Ollamaی خودتان می‌نویسد. اجرای Ollama داخل Docker و استفاده از مدل‌های API، راه‌های دیگر اجرا هستند.

باز کردن در صفحهٔ جدا

پیش‌نیازها

  • برنامهٔ Docker Desktop در ویندوز یا مک، یا Docker Engine همراه با Compose در لینوکس، و ۸ تا ۱۶ گیگابایت RAM.
  • برنامهٔ Ollama نصب‌شده روی رایانه، برای راه‌اندازی پیشنهادی. اگر آن را ندارید، Ollama را داخل Docker اجرا کنید یا از یک مدل API استفاده کنید.
  • فضای دیسک کافی برای imageها و وزن مدل‌ها.

راه‌اندازی کامل

در راه‌اندازی پیشنهادی، پاسخ‌ها را همان Ollamaی می‌نویسد که روی رایانه‌تان نصب است، با مدل‌هایی که از قبل دارید و روی GPU خودش. برنامه از راه نشانی host.docker.internal به آن وصل می‌شود؛ پس نه پروفایل Compose لازم است و نه فایل override، و کانتینر برنامه هم به GPU نیازی ندارد. روی مک تنها راه تولید پاسخ با GPU همین است، چون Docker نمی‌تواند GPU مک را در اختیار کانتینر بگذارد.

  • برنامهٔ Ollama را نصب کنید و یک مدل بگیرید. روی GPU حدود ۶ گیگابایتی، مدل ۳ تا ۴ میلیارد پارامتری کاملاً روی GPU اجرا می‌شود.
  • فایل .env.example را با نام .env کپی کنید و در LLM_MODEL_NAME نام مدلی را بنویسید که گرفته‌اید. پیش‌فرض‌های این فایل از قبل برنامه را به Ollamaی همین رایانه وصل می‌کنند: OLLAMA_DOCKER_BASE_URL=http://host.docker.internal:11434.
  • فقط در لینوکس: Ollama به‌طور پیش‌فرض فقط روی 127.0.0.1 گوش می‌دهد و کانتینرها به آن نمی‌رسند. سرویس Ollama را روی نشانی پل Docker تنظیم کنید، مثلاً OLLAMA_HOST=172.17.0.1:11434. ویندوز و مک کاری لازم ندارند.
  • پارس‌رگ را اجرا کنید، نشانی http://127.0.0.1:8000 (یا پورتی که در PARSRAG_PORT گذاشته‌اید) را باز کنید، سند بارگذاری کنید و بپرسید.
ollama pull qwen2.5:7b
Copy-Item .env.example .env
docker compose up -d --build
ollama ps

در مک یا لینوکس، فایل تنظیمات را با cp .env.example .env کپی کنید. وقتی پاسخ در حال نوشته‌شدن است، دستور ollama ps نشان می‌دهد مدل کجا اجرا می‌شود؛ عبارت 100% GPU یعنی کل مدل روی GPU است. پورت فقط روی نشانی 127.0.0.1 در دسترس است، مگر اینکه PARSRAG_BIND_HOST را تغییر دهید.

برنامهٔ Ollama احراز هویت ندارد. در لینوکس نشانی پل را ترجیح دهید: مقدار OLLAMA_HOST=0.0.0.0 درگاه Ollama را روی همهٔ شبکه‌هایی که رایانه به آن‌ها وصل است باز می‌کند. اگر از آن استفاده می‌کنید، درگاه 11434 را فقط برای شبکه‌های Docker باز بگذارید.

روش‌های دیگر اجرا

نوع نصبمناسب برایروش
اجرای Ollama داخل Docker روی CPUوقتی Ollama روی رایانه نصب نیست؛ روی هر سیستمی اجرا می‌شودپروفایل local-model، همراه با OLLAMA_DOCKER_BASE_URL=http://ollama:11434 و OLLAMA_MODEL در فایل .env
کارت NVIDIAاجرای Ollama داخل Docker با ساخت embedding و تولید پاسخ سریع‌تر در ویندوز یا لینوکسافزودن فایل compose.gpu.yaml
کارت NVIDIA با VRAM کمکارت‌های حدود ۶ گیگابایتی که جای هر دو مدل را ندارندافزودن فایل compose.gpu-low-vram.yaml: embedding روی CPU و پنجرهٔ زمینهٔ Ollama برابر ۲۰۴۸
کارت AMDمیزبان‌های لینوکسی پشتیبانی‌شده با ROCmافزودن فایل compose.amd.yaml (با PyTorch 2.6 و wheelهای ROCm)
مدل از راه APIوقتی سخت‌افزار محلی مناسبی نداریدتنظیم LLM_PROVIDER=api و نشانی سرویس در فایل .env، یا انتخاب آن در تنظیمات برنامه
docker compose --profile local-model up -d qdrant ollama
docker compose --profile local-model run --rm ollama-init
docker compose --profile local-model up -d --build app

نخستین اجرا

  • مدل تبدیل متن به بردار (intfloat/multilingual-e5-base) و رتبه‌بند حالت ترکیبی (حدود ۱۰۰ مگابایت) در کش مدل‌ها دانلود می‌شوند.
  • با Ollamaی خود رایانه، پارس‌رگ هیچ مدلی دانلود نمی‌کند. با Ollama داخل Docker، سرویس ollama-init مدل تنظیم‌شده را فقط یک بار، در volume مخصوص خودش، دانلود می‌کند.
  • تا وقتی همه‌چیز آماده نشده، نشانی /health/ready با کد 503 و وضعیت preparing پاسخ می‌دهد و رابط هم نشان می‌دهد که مدل و پایگاه اسناد در حال آماده‌شدن‌اند.
  • اگر هنگام شروع برنامه Ollama خاموش باشد، برنامه باز هم آماده می‌شود. تا Ollama روشن نشود، پرسش‌ها پیام می‌گیرند که سرویس مدل در دسترس نیست و بعد بدون راه‌اندازی دوباره کار می‌کنند.
  • پس از نخستین دانلودها، نصبی که با Ollama محلی کار می‌کند می‌تواند آفلاین اجرا شود.

اجرا بدون Docker

برای اجرای مستقیم به Python 3.12، Node.js 22، یک Qdrant در حال اجرا، Ollama یا یک سرویس سازگار با OpenAI، و برای OCR به Tesseract با داده‌های فارسی و انگلیسی نیاز دارید. فایل .env.example را با نام .env کپی کنید و علامت # را از سطرهای بخش «Running without Docker» در انتهای آن بردارید: نشانی Qdrant، نشانی Ollama، فایل تنظیمات و OCR_ENABLED=1.

py -3.12 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements-runtime.txt -c requirements.lock
Set-Location frontend
npm ci
npm run build
Set-Location ..
.\.venv\Scripts\python.exe -m uvicorn backend.main:app --host 127.0.0.1 --port 8000

در اجرای مستقیم، تا وقتی OCR_ENABLED=1 را تنظیم نکنید OCR خاموش می‌ماند. در نصب با Docker، OCR روشن است.

دستورهای روزمره

docker compose ps
docker compose logs -f app
docker compose down

دستور docker compose down داده‌ها را نگه می‌دارد. اما docker compose down -v بردارها، تنظیماتی که در برنامه ذخیره کرده‌اید، کش‌ها و وزن مدل‌های Ollama داخل Docker را برای همیشه پاک می‌کند.

اتصال به مدل

پارس‌رگ پاسخ را با مدلی می‌نویسد که خودتان انتخاب می‌کنید. همین انتخاب مشخص می‌کند پاسخ کجا تولید شود و چه چیزی از رایانهٔ شما بیرون برود. خواندن فایل‌ها، OCR و جست‌وجو در هر حالت محلی می‌ماند.

باز کردن در صفحهٔ جدا
ارائه‌دهندهپاسخ کجا نوشته می‌شودچه چیزی از پارس‌رگ بیرون می‌رود
مدل محلی با Ollamaهمین رایانههیچ‌چیز، از مسیر آداپتور مدل
سرویس API خصوصیسروری که در اختیار خودتان استپرسش شما و بخش‌های بازیابی‌شده
سرویس API خارجیسرویس یک شخص ثالثپرسش شما و بخش‌های بازیابی‌شده

تنظیمات «مدل و اتصال»

  • روش اجرای مدل: «API سازگار با OpenAI» یا «Ollama محلی». تغییر از پرسش بعدی و بدون راه‌اندازی دوباره اعمال می‌شود.
  • در حالت Ollama، نشانی پیش‌فرض http://host.docker.internal:11434 است و «یافتن مدل‌های نصب‌شده» مدل‌های نصب‌شده را همراه با حجمشان در یک فهرست نشان می‌دهد.
  • کلید API فقط در حافظهٔ سرویس نگه داشته می‌شود، نه در مرورگر و نه در فایل تنظیمات. پس از هر راه‌اندازی مجدد، باید آن را از نو وارد کنید یا در یک متغیر محیطی قرار دهید.
  • مرز حریم خصوصی API: پیش از استفاده از API خارجی، تأیید می‌کنید که پرسش شما و بخش‌های مرتبط اسناد برای آن فرستاده می‌شود.
  • پیش از ذخیرهٔ تنظیمات غیرمحرمانه، اتصال آزمایش می‌شود. اگر Ollama خطا بدهد، تنظیمات علتش را می‌گوید (نشانی مجاز نیست یا Ollama پاسخ نداد) و اگر API فعال باشد، نشانی Ollamaی خود سرور را پیشنهاد می‌کند.
  • بخش «تنظیمات پیشرفتهٔ مدل» اندازهٔ زمینه، «فکر کردن» مدل، تلاش دوباره و مهلت‌ها را در خود دارد.

قواعد ایمنی برای نشانی سرویس‌ها

  • نشانی‌های عمومی API باید HTTPS باشند. استفاده از HTTP فقط برای نشانی‌های loopback و شبکهٔ خصوصی مجاز است.
  • نشانی‌های link-local، multicast و رزروشده پذیرفته نمی‌شوند.
  • نشانی Ollama باید ساده و به شکل http://host:port باشد، روی localhost، 127.0.0.1، ::1، ollama، host.docker.internal یا میزبانی که در OLLAMA_ALLOWED_HOSTS نوشته‌اید، مثلاً یک سرور GPU در شبکهٔ محلی. نام کاربری، مسیر، پارامتر و HTTPS پذیرفته نمی‌شوند.
  • سرویس‌های خصوصی سازگار با OpenAI می‌توانند بدون کلید هم کار کنند.

مدل‌های فکرکننده و رفتارهای خاص API

  • پارس‌رگ از Ollama می‌خواهد پیش از پاسخ «فکر» نکند (OLLAMA_THINK=0). وگرنه مدل‌هایی مثل qwen3، qwen3.5 یا deepseek-r1 ممکن است کل بودجهٔ پاسخ را صرف استدلال کنند و پاسخ خالی برگردانند. مقدار OLLAMA_THINK=1 را فقط همراه با OLLAMA_CONTEXT_LENGTH بزرگ‌تر به کار ببرید.
  • استدلالی که بعضی APIها داخل پاسخ می‌گذارند (بلوک‌های <thought> یا <think>) از پاسخ، متن جریانی، عنوان گفت‌وگو و پرسش‌های پیشنهادی حذف می‌شود.
  • خطاهای موقت API (HTTP 5xx و 429) با فاصله‌هایی که کم‌کم بیشتر می‌شوند، حداکثر به تعداد MODEL_API_MAX_RETRIES دوباره امتحان می‌شوند.
  • سرویس Google AI Studio از راه نشانی سازگار با OpenAI کار می‌کند و پیشوند models/ که لازم دارد خودکار اضافه می‌شود. اگر اعتبار حساب سرویس‌دهنده تمام شده باشد (HTTP 402)، پیام خطا همین را می‌گوید.
مدل در .env.example
مدل qwen2.5:7b روی Ollamaی نصب‌شده روی رایانه
نشانی پیش‌فرض API
https://openrouter.ai/api/v1
مهلت پاسخ
به‌طور پیش‌فرض ۱۲۰ ثانیه؛ اگر مهلت درخواست API تمام شود، یک بار دیگر فرستاده می‌شود
تلاش دوباره برای API
به‌طور پیش‌فرض ۴ بار، برای خطاهای HTTP 5xx و 429
پنجرهٔ زمینه
۸٬۱۹۲ توکن برای Ollama و ۳۲٬۷۶۸ توکن برای API؛ هر دو قابل تنظیم‌اند
تنظیمات مدل و اتصال با گزینهٔ Ollama محلی روی نشانی http://host.docker.internal:11434 و فهرست باز مدل‌ها: qwen3.5:4b با ۳٫۳، qwen2.5:7b با ۴٫۷ و gemma3:12b با ۸٫۱ گیگابایت
بخش «مدل و اتصال»: مدل‌های نصب‌شدهٔ Ollama همراه با حجمشان در یک فهرست.

افزودن اسناد

هر گفت‌وگو اسناد خودش را دارد. اسناد را در پنل «اسناد» اضافه می‌کنید، مشخص می‌کنید پاسخ‌ها از کدام‌ها استفاده کنند و می‌توانید فایلی را که در گفت‌وگوی دیگری ایندکس شده، به این گفت‌وگو بیاورید.

باز کردن در صفحهٔ جدا

بارگذاری

  • فایل‌ها را بکشید و رها کنید یا انتخاب کنید. برای هر فایل سه مرحله نمایش داده می‌شود: «انتقال فایل»، «استخراج و ایندکس» و «آمادهٔ پرسش»؛ بعد هم تعداد بخش‌های ایندکس‌شده.
  • ظرفیت پیش‌فرض: ۱۰ فایل در هر گفت‌وگو، هر فایل تا ۱۰۰ مبی‌بایت و هر بارگذاری تا ۵۰۰ مبی‌بایت. رابط، محدودیت‌های واقعی را از خود سرویس می‌گیرد و می‌توانید آن‌ها را در «تنظیمات ← اسناد و سرعت» تغییر دهید.
  • بارگذاری گروهی یا کامل انجام می‌شود یا اصلاً انجام نمی‌شود. اگر یکی از فایل‌ها خطا بدهد، هیچ‌چیز از آن درخواست نیمه‌ایندکس‌شده باقی نمی‌ماند.

فایل‌های پشتیبانی‌شده

نوعپسوندهاشیوهٔ خواندن
اسناد.pdf .docx .pptxاستخراج ساختاریافتهٔ متن؛ OCR برای صفحه‌های اسکن‌شده یا پرتصویر PDF و تصویرهای جاسازی‌شده
تصویرها.png .jpg .jpeg .webp .bmp .tif .tiffاعتبارسنجی و خواندن با OCR
متن و داده.txt .md .markdown .json .csv .tsv .logکدگذاری UTF-8، UTF-16 با BOM، Windows-1256 (فارسی) یا Windows-1252؛ فایل JSON اعتبارسنجی می‌شود
نشانه‌گذاری و پیکربندی.html .htm .xml .yaml .yml .toml .ini .cfgمتن قابل‌مشاهده از فایل‌های نشانه‌گذاری؛ متن ساده از فایل‌های پیکربندی
کد منبع.py .js .jsx .ts .tsx .css .sqlمتن همراه با فرادادهٔ قسمت‌ها

بررسی‌های پیش از خواندن

  • نام فایل باید یک نام سادهٔ حداکثر ۲۵۵ نویسه‌ای و بدون مسیر باشد.
  • فایل PDF باید واقعاً PDF باشد و فایل Word یا PowerPoint یک آرشیو واقعی Office. اگر فایلی رمز داشته باشد، پیام خطا همین را می‌گوید.
  • سقف آرشیوهای Office: ۱۰٬۰۰۰ ورودی، ۲۰۰ مبی‌بایت حجم بازشده و نسبت فشرده‌سازی ۲۰۰ برای هر ورودی.
  • اگر محتوای فایلی با سندی که در گفت‌وگو هست یکی باشد، شناسایی می‌شود و دو بار اضافه نمی‌شود.

وقتی فقط بخشی از فایل خوانده می‌شود

اعلانمعنا
سقف OCRفقط صفحه‌های اسکن‌شدهٔ ابتدای فایل خوانده شد (سقف پیش‌فرض ۳۰ صفحه است).
سقف تصویر OCRبعضی از تصویرهای درون فایل Word یا PowerPoint خوانده نشد (سقف پیش‌فرض ۲۰۰ تصویر است).
خوانش ناقص OCRبعضی از صفحه‌ها یا تصویرها با OCR خوانده نشد.
در دسترس نبودن OCRابزار Tesseract نصب نیست، ولی صفحه‌های متنی ایندکس شدند.

مدیریت اسناد

  • گزینهٔ «استفاده در پاسخ»: هر سند را علامت بزنید یا علامتش را بردارید. برداشتن علامت همهٔ اسناد هم ممکن است.
  • بخش «از گفت‌وگوهای قبلی»: سندی را که قبلاً ایندکس شده، بدون بارگذاری دوباره اضافه کنید. وقتی کپی تمام شد، این نسخه از نسخهٔ اصلی مستقل است.
  • حذف سند با تأیید دومرحله‌ای انجام می‌شود و بخش‌ها و تصویرهای نگه‌داشته‌شدهٔ آن از ایندکس پاک می‌شوند.

اسنادی که با نسخهٔ 1.0.0 ایندکس شده‌اند همچنان کار می‌کنند. فایل‌های Word و PowerPoint را دوباره بارگذاری کنید تا ارجاع به تصویر و جدول، نمایش تصویر کنار منبع، خواندن تصویرهای بعد از سی‌امین و OCR بهتر اسکرین‌شات‌ها را داشته باشید.

اسناد چطور خوانده می‌شوند

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

باز کردن در صفحهٔ جدا

فایل‌های PDF

  • هر صفحه قسمتی جداگانه است تا ارجاع بتواند شمارهٔ صفحه را بیاورد.
  • صفحه‌های فارسی از روی جای هر حرف، به ترتیب خواندن بازسازی می‌شوند: سطرهای راست‌به‌چپ، متن لاتین و ارقام داخل سطر، پرانتزهای قرینه و نشانهٔ اضافه روی حرف خودش.
  • صفحه‌ای به OCR فرستاده می‌شود که متن نداشته باشد، لایهٔ متنی‌اش به‌هم‌ریخته باشد، یا کمتر از ۴۰ نویسه متن و دست‌کم یک تصویر داشته باشد.

نویسه‌خوانی (OCR)

  • ابزار Tesseract با داده‌های فارسی و انگلیسی، روی صفحه‌هایی که با ۲۰۰ dpi و به‌صورت خاکستری رندر شده‌اند، بدون کشش کنتراست.
  • اگر خوانش اول ضعیف باشد (میانگین اطمینان زیر ۷۵)، یک دور دوم به‌صورت تک‌بلوکی اجرا می‌شود و از دو خوانش، آنکه اطمینان بیشتری دارد انتخاب می‌شود.
  • صفحه‌هایی که ۹۰، ۱۸۰ یا ۲۷۰ درجه چرخیده‌اند و صفحه‌هایی که ۲ درجه یا بیشتر کج‌اند، شناسایی و دوباره خوانده می‌شوند.
  • تصویرها و اسکرین‌شات‌ها یک دور دیگر هم خوانده می‌شوند، روی نسخهٔ بزرگ‌شده و سیاه‌وسفید تصویر و با حالتی که متن پراکنده را پیدا می‌کند. این دور متن‌هایی را اضافه می‌کند که تحلیل چیدمان صفحه جا انداخته، مثل پنل‌های وضعیت، نوارابزارهای تیره و متن روی پنل‌های رنگی.
  • تصویرهای درون Word و PowerPoint چندتا با هم خوانده می‌شوند (OCR_WORKERS؛ پیش‌فرض: همهٔ هسته‌های CPU، حداکثر ۸) و متن حاصل با خواندن تک‌به‌تک فرقی ندارد.
  • محدودیت‌های پیش‌فرض: ۳۰ صفحهٔ اسکن‌شده در هر PDF و ۲۰۰ تصویر در هر فایل Word یا PowerPoint، ۴۵ ثانیه برای هر صفحه و ۴۰ میلیون پیکسل برای هر تصویر. تصویرهای کوچک‌تر از ۱۰٬۰۰۰ پیکسل، مثل آیکون‌ها، خوانده نمی‌شوند.

فایل‌های Word، PowerPoint و دیگر قالب‌ها

  • فایل Word: بندها زیر سرعنوان خودشان و تا سقف ۱۸۰ واژه گروه‌بندی می‌شوند و هر بخش مسیر سرعنوان‌هایش را با خود دارد. دستورها و کدهایی که در کادرهای تک‌خانه‌ای آمده‌اند، کنار جمله‌ای می‌مانند که معرفی‌شان می‌کند.
  • جدول‌های Word به جدول Markdown همراه با رکورد هر سطر تبدیل می‌شوند و با شمارهٔ جدول و بندی که پیش از آن آمده ارجاع می‌گیرند، مثلاً «بند ۱۲۰ · جدول ۳».
  • تصویرهای درون Word و PowerPoint: متنی که از هر تصویر خوانده می‌شود، همراه با عنوان تصویر، بخش جداگانه‌ای است و با «بند ۱۲۰ · تصویر ۷» یا «اسلاید ۲۵ · تصویر ۹» ارجاع می‌گیرد. این بخش متنی را هم که تصویر را معرفی می‌کند با خود دارد و پاسخ می‌گوید کدام مطلب از تصویر آمده است.
  • فایل PowerPoint: برای هر اسلاید یک قسمت، همراه با جدول‌هایش.
  • از فایل‌های HTML و XML فقط متن قابل‌مشاهده نگه داشته می‌شود. فایل JSON اعتبارسنجی و به شکلی خواناتر بازنویسی می‌شود.

بخش‌ها

  • متن به بخش‌هایی حدود ۵۱۲ توکنی تقسیم می‌شود که ۵۰ توکن با هم هم‌پوشانی دارند. بخش‌های هر سند به ترتیب طول، دسته‌دسته به بردار تبدیل می‌شوند.
  • برای صفحه‌های پشت‌سرهم PDF، یک بخش اضافه ۹۰ واژهٔ آخر هر صفحه را به ۹۰ واژهٔ اول صفحهٔ بعد وصل می‌کند. به این ترتیب مطلبی که با عوض‌شدن صفحه دو تکه شده، با بازهٔ صفحه‌ها ارجاع داده می‌شود.
  • املای فارسی در بخش‌ها و پرسش‌ها یکسان‌سازی می‌شود: ی و ک عربی، شکل‌های نمایشی حروف، اِعراب و ارقام. همزهٔ اضافه حفظ می‌شود.
  • از هر تصویری که با OCR خوانده می‌شود، یک نسخهٔ WebP با عرض حداکثر ۱۲۸۰ پیکسل نگه داشته می‌شود تا منبع بتواند آن را نشان دهد.

پرسیدن

کادر پیام جایی است که پرسش به جست‌وجو تبدیل می‌شود. در آن می‌توانید شیوهٔ پاسخ را انتخاب کنید، به فایل‌ها اشاره کنید یا از پرسشی شروع کنید که اسنادتان جوابش را دارند.

باز کردن در صفحهٔ جدا

کادر پیام

  • کلید Enter پیام را می‌فرستد و Shift+Enter سطر تازه باز می‌کند. پیام می‌تواند تا ۳۰٬۰۰۰ نویسه باشد.
  • با تایپ @ به یکی از اسناد ایندکس‌شده اشاره کنید. پرسش به چند تکه تقسیم می‌شود و هر تکه در فایل مربوط به خودش جست‌وجو می‌شود.
  • بدون @، اگر نام فایلی را در پرسش بیاورید جست‌وجو به همان فایل محدود می‌شود؛ اما داشتن یک واژهٔ معمولی مشترک با نام فایل، مثل «اول» یا «تست»، دیگر این کار را نمی‌کند.
  • با تایپ / در ابتدای سطر، دستورهای آماده باز می‌شوند.
  • تا پاسخ در حال دریافت است، دکمهٔ ارسال به «توقف» تبدیل می‌شود و آنچه تا آن لحظه نوشته شده، حفظ می‌شود.

دستورهای آماده

دستورکاربرد
/summaryخلاصهٔ اسناد انتخاب‌شده، با ذکر منبع
/compareمقایسهٔ اسناد انتخاب‌شده و بیان شباهت‌ها و تفاوت‌ها، با ذکر منبع
/translateترجمهٔ متن به زبان رابط
/outlineفهرست نکته‌های کلیدی، با ذکر منبع
/strictرفتن به شیوهٔ «فقط بر اساس اسناد»
/hybridرفتن به شیوهٔ «اسناد و دانش مدل»
/freeرفتن به «گفت‌وگوی آزاد»
/documentsبازکردن پنل اسناد
/helpنمایش راهنمای برنامه

نقطهٔ شروع

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

هنگام پردازش

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

خواندن پاسخ

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

باز کردن در صفحهٔ جدا

ارجاع‌ها و منابع

  • مدل با [n] به بخش‌ها ارجاع می‌دهد و رابط این ارجاع‌ها را به برچسب‌های شماره‌داری تبدیل می‌کند که همان بخش را باز می‌کنند.
  • فهرست «منابع پاسخ» هر بخش ارجاع‌شده را با پیش‌نمایشی کوتاه، نام فایل و جای آن در فایل نشان می‌دهد، مثل «بند ۸۱۲ · جدول ۶» یا «بند ۸۴۵ · تصویر ۱۵». در حالت باز، تا ۱٬۶۰۰ نویسه از متن دیده می‌شود و واژه‌های پرسش در آن برجسته‌اند.
  • بخش‌های جدولی به شکل جدول نمایش داده می‌شوند و بخشی که از یک تصویر خوانده شده، خود تصویر را هم کنار متن نشان می‌دهد.
  • بخش‌هایی که بررسی شده‌اند ولی ارجاعی نگرفته‌اند، زیر «بخش‌های دیگری هم بررسی شد» جمع می‌شوند.

پاسخ از کجا آمده است

برچسبزمان نمایش
فقط از اسنادپاسخ در شیوهٔ «فقط اسناد»
اسناد و دانش مدلپاسخ در شیوهٔ «ترکیبی»
دانش عمومی مدلپاسخ در «گفت‌وگوی آزاد»
در اسناد پیدا نشدپاسخی در اسناد نبود

وقتی پاسخی پیدا نمی‌شود

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

کار با پاسخ

  • دکمه‌های «کپی پاسخ»، «تلاش دوباره»، «کپی پیام» و «ویرایش پیام». تلاش دوباره یا ویرایش، نسخهٔ تازه‌ای از پاسخ می‌سازد و می‌توانید بین نسخه‌ها جابه‌جا شوید. ویرایش پیام شاخهٔ تازه‌ای باز می‌کند که ادامهٔ خودش را دارد.
  • فرمول‌ها با KaTeX نمایش داده می‌شوند. واژه‌های فارسی هرگز به شکل فرمول چیده نمی‌شوند، جداکننده‌هایی که بسته نشده‌اند حذف می‌شوند و نشانه‌گذاری ریاضی‌ای که بعضی مدل‌های Gemini وارد پاسخ می‌کنند، به شکل فرمول نمایش داده می‌شود.
  • تصویرهای خارجی درون پاسخ بارگیری نمی‌شوند.
  • خطاها بر اساس کدشان توضیح داده می‌شوند؛ مثلاً PDF رمزدار، کلید API ردشده، مدلی که نصب نیست یا حساب APIای که اعتبارش تمام شده است.
پاسخی در شیوهٔ «فقط اسناد» دربارهٔ نتیجهٔ آزمون بار با دو منبع باز: جدول ۳-۱، داده‌های تجمعی آزمون (بند ۸۱۲ · جدول ۶) به شکل جدول، و پنل محاسبه‌گر قابلیت اطمینان (بند ۸۴۵ · تصویر ۱۵) به شکل همان تصویری که متن از آن خوانده شده
پاسخی که به یک جدول Word و به تصویری که متن از آن خوانده شده ارجاع می‌دهد، همراه با جای هرکدام در فایل. فایل‌ها نمونهٔ ساختگی‌اند.

حریم خصوصی و امنیت

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

باز کردن در صفحهٔ جدا

آنچه سرویس هرگز ذخیره نمی‌کند

  • فایل‌های بارگذاری‌شده: فقط در زمان پردازش، در حافظه و یک پوشهٔ موقت روی RAM هستند. آنچه می‌ماند متن استخراج‌شده، بردارهای آن و نسخهٔ کوچکی از هر تصویر خوانده‌شده با OCR است که همه در Qdrant نگه داشته می‌شوند. با SOURCE_IMAGE_PREVIEWS=0 تصویرها نگه داشته نمی‌شوند.
  • پرسش‌ها و بخش‌های بازیابی‌شده: در لاگ ثبت نمی‌شوند.
  • گفت‌وگوها: در IndexedDB مرورگر خودتان ذخیره می‌شوند، نه روی سرور.
  • کلیدهای API: فقط در حافظهٔ فرایند یا متغیرهای محیطی.

محافظت‌های شبکه

  • فقط درخواست‌هایی پذیرفته می‌شوند که مقصدشان localhost، 127.0.0.1 یا ::1 باشد؛ همین جلوی حملهٔ DNS rebinding را می‌گیرد. با PARSRAG_ALLOWED_HOSTS می‌توانید نام‌های دیگری را برای استفاده در شبکهٔ محلی اضافه کنید.
  • درخواست‌هایی که داده را تغییر می‌دهند باید از نشانی خود برنامه یا از یک مبدأ مجاز بیایند.
  • نشانی Ollama به loopback، سرویس ollama، host.docker.internal و میزبان‌های فهرست OLLAMA_ALLOWED_HOSTS محدود است و مرورگر نمی‌تواند این فهرست را گسترش دهد.
  • تنظیماتی که در برنامه تغییر می‌دهید به چیزهایی که از مرز اعتماد محافظت می‌کنند دست نمی‌زنند: پورت‌ها، میزبان‌ها و مبدأهای مجاز، OLLAMA_ALLOWED_HOSTS، سقف درخواست، سقف حافظه و دانلود مدل.
  • برنامه به‌طور پیش‌فرض روی 127.0.0.1 گوش می‌دهد و Qdrant روی شبکه‌ای داخلی و بدون دسترسی بیرونی است.

ایمن‌سازی کانتینر

  • سیستم فایل فقط‌خواندنی، پوشهٔ ‎/tmp روی RAM، بدون امکان گرفتن امتیاز تازه و با حذف همهٔ capabilityهای لینوکس.
  • برنامه با کاربری غیر از root اجرا می‌شود و pip از image نهایی حذف شده است.
  • سقف حافظه به‌طور پیش‌فرض: ۶ گیگابایت برای برنامه، ۲ گیگابایت برای Qdrant و ۱۲ گیگابایت برای Ollama داخل Docker.

اگر می‌خواهید پارس‌رگ را روی شبکهٔ مشترک یا نامطمئن بگذارید، به یک reverse proxy با احراز هویت نیاز دارید. خود Ollama هم احراز هویت ندارد؛ پس Ollamaی رایانه را روی شبکهٔ عمومی باز نگذارید. آسیب‌پذیری‌ها را به‌صورت خصوصی و از زبانهٔ Security مخزن در گیت‌هاب گزارش کنید.

فضای کار شما

رابط پارس‌رگ یک فضای کار کامل است، با گفت‌وگوها، تنظیمات، پوسته‌ها و دو زبان، و می‌توان آن را مانند یک برنامه نصب کرد.

باز کردن در صفحهٔ جدا

گفت‌وگوها

  • تاریخچه در سه گروه «امروز»، «دیروز» و «پیش‌تر» مرتب می‌شود و جست‌وجو هم در عنوان‌ها می‌گردد و هم در متن پیام‌ها.
  • هر گفت‌وگو را می‌توانید تغییر نام دهید، به‌صورت فایل Markdown دریافت کنید یا حذف کنید.
  • از همهٔ گفت‌وگوها و ترجیحات، یک فایل پشتیبان JSON بگیرید و روی رایانهٔ دیگری بازیابی کنید. اسناد باید آنجا دوباره بارگذاری شوند.
  • گزینهٔ «پاک‌کردن همهٔ داده‌ها» همهٔ گفت‌وگوها و اسناد ایندکس‌شده را حذف می‌کند. اگر سرویس نتواند حذف را تأیید کند، داده‌های مرورگر نگه داشته می‌شوند.

تنظیمات

  • چهار زبانه: «ظاهر و زبان»، «پاسخ‌گویی»، «مدل و اتصال» و «اسناد و سرعت».
  • تغییر تنظیمات مدل، بازیابی، بارگذاری، OCR و سرعت ایندکس در حین اجرای پارس‌رگ و بدون راه‌اندازی دوباره اعمال می‌شود. کنار هر تنظیم مقدار .env آن آمده و می‌توان به آن برگشت.

ظاهر و زبان

  • پوستهٔ روشن و تیره؛ جابه‌جایی بین آن‌ها با یک جلوهٔ دایره‌ای از همان نقطه‌ای که کلیک کرده‌اید انجام می‌شود.
  • چهار رنگ‌بندی: «سبز پارس‌رگ»، «آبی اقیانوس»، «نیلی آرام» و «خاکی گرم».
  • زبان پیش‌فرض فارسی است. با تغییر زبان، کل چیدمان بین راست‌به‌چپ و چپ‌به‌راست عوض می‌شود و جهت هر پاسخ از زبان خود آن پاسخ پیروی می‌کند.
  • در صفحه‌های باریک، فهرست گفت‌وگوها به پنلی تبدیل می‌شود که هر وقت لازم بود بازش می‌کنید.

میانبرهای صفحه‌کلید

کارویندوز / لینوکسمک
گفت‌وگوی تازهCtrl+Shift+O⌘⇧O
جست‌وجوی گفت‌وگوهاCtrl+Shift+K⌘⇧K
بازکردن اسنادCtrl+Shift+D⌘⇧D
بازکردن تنظیماتCtrl+,⌘,
رفتن به کادر پیام//
نمایش راهنماCtrl+Shift+H⌘⇧H
تغییر حالت روشن و تیرهCtrl+Shift+Y⌘⇧Y

راهنمای گام‌به‌گام و نصب برنامه

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

معماری

بک‌اند با الگوی پورت و آداپتور سازمان‌دهی شده است: هسته فقط رابط‌ها (interface) را می‌شناسد و یک ریشهٔ ترکیب (composition root) آن‌ها را به Qdrant، تجزیه‌گرها، OCR و کلاینت‌های مدل وصل می‌کند.

باز کردن در صفحهٔ جدا
لایهچه چیزی در آن است
دامنهاسناد، قسمت‌ها، شیوه‌های پرسش، سیاست بارگذاری، تنظیمات زمان اجرا، خطاها
اشیای انتقال داده (DTO)درخواست‌های اعتبارسنجی‌شده و پاسخ‌های نوع‌دار
پورت‌هامخزن داده، تجزیه‌گر، بخش‌بند، خلاصه‌گر پرسش، دروازهٔ مدل، گزارش پیشرفت، رتبه‌بند، انبارهٔ تنظیمات زمان اجرا
یوزکیس‌هابرای هر عملیات یک کلاس: دریافت و ایندکس سند، پاسخ، پیشنهاد پرسش، استفادهٔ دوباره، حذف، تنظیم مدل، فهرست مدل‌های Ollama، تغییر تنظیمات زمان اجرا، نمایش تصویر ارجاع‌شده و…
راهبردهامسیرهای «فقط اسناد»، «ترکیبی» و «گفت‌وگوی آزاد»؛ ارجاع‌ها؛ بودجهٔ زمینه؛ یکسان‌سازی فارسی
آداپتورهاپایگاه برداری Qdrant و ایندکس BM25، کلاینت‌های مدل LlamaIndex، رتبه‌بند FlashRank، تجزیه‌گرهای PDF، Office و OCR
لایهٔ APIمسیرهای FastAPI، میان‌افزارها، نگاشت خطاها و رویدادهای جریانی (Server-Sent Events)

در Compose سه کانتینر تعریف شده است: برنامه، Qdrant و Ollama که فقط با پروفایل local-model اجرا می‌شود. برنامه می‌تواند به‌جای کانتینر Ollama از Ollamaی نصب‌شده روی میزبان استفاده کند که از راه host.docker.internal در دسترس است؛ در این حالت مدل‌ها و GPU میزبان مستقیم به کار می‌روند. خطاها با کدهای ollama_url_not_allowed یا ollama_unreachable گزارش می‌شوند.

رابط HTTP

مسیرکاربرد
GET /health/live, /health/readyبررسی زنده‌بودن سرویس، و آمادگی آن وقتی مدل‌ها و Qdrant در دسترس‌اند
GET /capabilitiesمحدودیت‌های بارگذاری و نوع فایل‌های پشتیبانی‌شده
GET, PUT /models/configurationخواندن اتصال مدل، یا بررسی و اعمال آن
GET /models/ollamaمدل‌های نصب‌شدهٔ Ollama
GET, PUT, DELETE /settings/runtimeخواندن، تغییر یا بازگرداندن تنظیماتی که در برنامه تغییر کرده‌اند
POST /ingestبارگذاری و ایندکس فایل‌ها
POST /query, /query/streamپاسخ به پرسش، یکجا یا جریانی
POST /sessions/{id}/suggestionsسه پرسشی که اسناد جوابشان را دارند
POST /sessions/{id}/files/reuseکپی سند ایندکس‌شده از گفت‌وگوی دیگر
GET /sessions/{id}/images/{n}تصویری که بخش ارجاع‌شده از آن خوانده شده
GET, DELETE /sessions/{id}/filesفهرست یا حذف اسناد یک گفت‌وگو
DELETE /sessions/{id}حذف ایندکس یک گفت‌وگو

پاسخ جریانی

مسیر POST /query/stream رویدادها را به این ترتیب می‌فرستد: stage (درک، بازیابی، نگارش)، sources، یک token برای هر تکه از متن، و در پایان done همراه با پاسخ کامل، نتیجهٔ آن و شمارهٔ بخش‌های ارجاع‌شده. خطاها به شکل رویداد error با یک کد ثابت می‌رسند.

هر پاسخ خطا، کنار پیامش یک کد ثابت دارد تا رابط بتواند خطا را به زبان شما توضیح دهد.

کیفیت و انتشار

همهٔ تغییرها از بررسی‌های یکسانی می‌گذرند که نتیجه‌شان عمومی است، و هر نسخه پیش از انتشار وارسی می‌شود.

باز کردن در صفحهٔ جدا

در هر تغییر

  • بک‌اند: قالب‌بندی و lint با Ruff، بررسی سخت‌گیرانهٔ نوع‌ها با mypy و آزمون‌های pytest با پوشش شاخه‌ای دست‌کم ۸۵ درصد.
  • فرانت‌اند: بازبینی امنیتی وابستگی‌ها، آزمون‌های واحد، build همراه با بررسی نوع‌ها، و آزمون‌های مرورگر و نصب برنامه با Playwright.
  • هر دو روی لینوکس، ویندوز و مک اجرا می‌شوند.
  • آزمون سرتاسری: تجزیهٔ واقعی فایل، embedding، Qdrant، رتبه‌بندی و پاسخ جریانی، با یک مدل جایگزین. دست‌کم در ۷ پرسش از ۸ پرسش فارسیِ بازنویسی‌شده، اولین ارجاع باید به قسمت مربوط به همان پرسش باشد.
  • روی رایانهٔ خودتان، همهٔ آزمون‌های بک‌اند بدون ردشدن هیچ آزمونی و بدون Docker اجرا می‌شوند: با PARSRAG_E2E=1 آزمون‌های سرتاسری روی یک Qdrant درون‌حافظه‌ای اجرا می‌شوند، مگر اینکه QDRANT_HOST به یک سرور اشاره کند.
  • بسته‌بندی: image داکر ساخته می‌شود و import برنامه درون آن آزمایش می‌شود.

زنجیرهٔ تأمین

  • بازبینی وابستگی‌ها در Pull Requestها و بررسی آسیب‌پذیری بسته‌های Python.
  • فهرست اجزای نرم‌افزار (SBOM) ساخته و image اسکن می‌شود. یافته‌های پرخطر یا بحرانی که راه‌حل دارند، build را متوقف می‌کنند.
  • ابزار Dependabot هر هفته به‌روزرسانی وابستگی‌ها را پیشنهاد می‌کند.

بهبودهای اندازه‌گیری‌شده در نسخهٔ 1.0

  • جست‌وجوی کلیدواژه‌ای در کنار جست‌وجوی برداری: میانگین رتبهٔ معکوس روی ۱۲۷ پرسش کلیدواژه‌ای از ۰٫۷۴۸ به ۰٫۸۲۳ رسید.
  • خواندن صفحه‌های فارسیِ ۹۰ درجه چرخیده با OCR: خطای نویسه از ۰٫۸۵ به ۰٫۰۹ رسید.
  • عملکرد کلی OCR: میانگین خطای نویسه از ۰٫۲۲۵ به ۰٫۱۳۳ رسید.

بهبودهای اندازه‌گیری‌شده در نسخهٔ 1.1

  • پرسش‌های چندبخشی: ۵ پاسخ از ۶ پاسخی که بخشی از پرسش را جا انداخته بودند کامل شدند و هیچ پرسشی بدتر نشد.
  • خواندن هم‌زمان تصویرها: گزارشی با ۹۶ تصویر به‌جای ۱۲۱ ثانیه در ۳۳ ثانیه پردازش شد و متن به‌دست‌آمده تغییری نکرد. ایندکس کل همان گزارش از حدود ۴٫۵ دقیقه به حدود ۳ دقیقه رسید.
  • خواندن اسکرین‌شات‌ها با OCR: تعداد واقعیت‌های خوانده‌شده از ۳۳ به ۳۷ از ۴۰ رسید، به بهای حدود یک‌سوم زمان بیشتر برای هر تصویر.
  • مدل‌های فکرکننده: روی GPU شش‌گیگابایتی با qwen3.5:4b، به‌جای پاسخ خالی پس از ۵۹ ثانیه، پاسخی با ارجاع در ۷ ثانیه به دست آمد.

این اندازه‌گیری‌ها روی مجموعه‌سندهایی انجام شده که منتشر نشده‌اند. بنابراین از روی مخزن عمومی نمی‌توان آن‌ها را بازتولید کرد.

مرجع پیکربندی

تنظیمات، متغیرهای محیطی فایل .env هستند و ۲۷ مورد از آن‌ها را بدون راه‌اندازی دوباره از بخش تنظیمات خود برنامه هم می‌توانید تغییر دهید. این‌ها متغیرهایی‌اند که به احتمال زیاد تغییرشان می‌دهید. مقدارهای پیش‌فرض، همان مقدارهای Docker هستند.

باز کردن در صفحهٔ جدا

در خود برنامه

  • بخش تنظیمات ۲۷ گزینه را در چهار گروه تغییر می‌دهد: مدل (اندازهٔ زمینه، «فکر کردن»، تلاش دوباره و مهلت‌ها)، بازیابی (آستانه، عمق جست‌وجو و جست‌وجوی کلیدواژه‌ای)، اسناد (سقف بارگذاری، OCR و نمایش تصویر) و سرعت ایندکس (تصویرهای هم‌زمان، رشته‌های CPU و اندازهٔ دسته‌ها).
  • کنار هر گزینه مقدار .env آن آمده و می‌توانید یکی‌یکی یا با دکمهٔ «بازگشت همه به .env» به آن برگردید. مقدارهایی که در برنامه ذخیره می‌شوند بر .env مقدم‌اند، پس از راه‌اندازی دوباره هم می‌مانند و در volume به نام app_config نگه داشته می‌شوند.
  • پورت، نشانی‌های مجاز، Qdrant، سقف حافظه، بزرگ‌ترین درخواست بارگذاری و مدل بردارسازی فقط در .env تغییر می‌کنند و پس از راه‌اندازی دوباره اعمال می‌شوند.
  • در فایل .env.example فقط انتخاب مدل فعال است. بقیهٔ سطرها مقدار پیش‌فرض را نشان می‌دهند و بر این اساس گروه‌بندی شده‌اند که از تنظیمات برنامه هم تغییر می‌کنند یا نه.
گروه «سرعت ایندکس» در تنظیمات: «تصویرهایی که هم‌زمان خوانده می‌شوند» روی «خودکار»، «هسته‌های CPU برای بردارسازی» با مقدار ۸ و برچسب «در برنامه تغییر کرده»، مقدار .env برابر ۴ با دکمهٔ بازگشت، دکمهٔ «بازگشت همه به .env» و یادداشتی که می‌گوید درگاه، نشانی‌های مجاز، Qdrant، سقف حافظه و مدل بردارسازی فقط از .env تغییر می‌کنند
تنظیمات «اسناد و سرعت». مقداری که در برنامه تغییر کرده، مقدار .env خودش را نشان می‌دهد و می‌توان به آن برگشت.

مدل

متغیرپیش‌فرضکاربرددر برنامه
LLM_PROVIDERollamaمقدار ollama یا apiمدل و اتصال
LLM_MODEL_NAMEدر .env.example: qwen2.5:7bمدلی که پاسخ را می‌نویسدمدل و اتصال
OLLAMA_DOCKER_BASE_URLدر .env.example: http://host.docker.internal:11434نشانی Ollama از دید کانتینر برنامه؛ برای Ollama داخل Docker، http://ollama:11434مدل و اتصال
MODEL_API_BASE_URLhttps://openrouter.ai/api/v1نشانی سرویس سازگار با OpenAIمدل و اتصال
MODEL_API_KEYخالیکلید محرمانهٔ زمان اجرا؛ هرگز روی دیسک نوشته نمی‌شودمدل و اتصال
MODEL_API_DISCLOSURE_ACKNOWLEDGED0رضایت برای استفاده از API خارجیمدل و اتصال
OLLAMA_CONTEXT_LENGTH8192اندازهٔ زمینه‌ای که Ollama برای هر پرسش کنار می‌گذاردمدل و اتصال
OLLAMA_THINK0اجازهٔ «فکر کردن» پیش از پاسخ، برای مدل‌های فکرکنندهمدل و اتصال
MODEL_CONTEXT_WINDOW32768اندازهٔ زمینهٔ فرضی برای مدل‌های APIمدل و اتصال
MODEL_API_MAX_RETRIES4تعداد تلاش دوباره برای خطاهای HTTP 5xx و 429مدل و اتصال
LLM_REQUEST_TIMEOUT_SECONDS120مهلت هر پاسخمدل و اتصال
OLLAMA_ALLOWED_HOSTSخالیمیزبان‌های دیگری که نشانی Ollama می‌تواند داشته باشدفقط .env

جست‌وجو

متغیرپیش‌فرضکاربرددر برنامه
STRICT_RAG_THRESHOLD0.75آستانهٔ دروازهٔ شواهد در «فقط اسناد»پاسخ‌گویی
STRICT_RAG_TOP_Kخالیعمق ثابت جست‌وجو در «فقط اسناد» بین ۱ تا ۵۰؛ خالی یعنی انتخاب جداگانه برای هر پرسشپاسخ‌گویی
HYBRID_RETRIEVE_TOP_K25تعداد نامزدهای اولیه در حالت ترکیبیپاسخ‌گویی
KEYWORD_SEARCH1ترکیب BM25 با جست‌وجوی برداریپاسخ‌گویی
EMBED_MODEL_NAMEintfloat/multilingual-e5-baseمدل embedding؛ با تغییرش باید اسناد را دوباره بارگذاری کنیدفقط .env
EMBED_DEVICEautoیکی از auto، cpu، cuda یا mpsفقط .env
RERANK_MODELminiReranker_arabic_v1رتبه‌بند حالت ترکیبی؛ مقدار none آن را خاموش می‌کندفقط .env

اسناد و OCR

متغیرپیش‌فرضکاربرددر برنامه
PARSRAG_MAX_FILES_PER_SESSION10تعداد فایل در هر گفت‌وگواسناد و سرعت
PARSRAG_MAX_FILE_BYTES104857600۱۰۰ مبی‌بایت برای هر فایلاسناد و سرعت
PARSRAG_MAX_BATCH_BYTES524288000۵۰۰ مبی‌بایت برای هر بارگذاریاسناد و سرعت
OCR_ENABLED1روشن یا خاموش‌کردن OCRاسناد و سرعت
OCR_LANGUAGESfas+engزبان‌های Tesseractاسناد و سرعت
OCR_DPI200وضوح رندر صفحه‌های اسکن‌شدهاسناد و سرعت
OCR_MAX_PAGES30تعداد صفحه‌های اسکن‌شده‌ای که از هر فایل خوانده می‌شوداسناد و سرعت
OCR_MAX_IMAGES200تعداد تصویرهایی که از هر فایل Word یا PowerPoint خوانده می‌شوداسناد و سرعت
SOURCE_IMAGE_PREVIEWS1نگه‌داشتن نسخه‌ای از هر تصویر برای نمایش کنار منبعشاسناد و سرعت
PARSRAG_MAX_REQUEST_BYTES534773760بزرگ‌ترین درخواست بارگذاری؛ سقف‌های بالا از آن بیشتر نمی‌شوندفقط .env

سرعت ایندکس

متغیرپیش‌فرضکاربرددر برنامه
OCR_WORKERSخالیتعداد تصویرهایی که هم‌زمان خوانده می‌شوند؛ خالی یعنی همهٔ هسته‌های CPU، حداکثر ۸اسناد و سرعت
PARSRAG_CPU_THREADS4رشته‌های CPU برای بردارسازی، تا تعداد هسته‌های واقعیاسناد و سرعت
EMBED_BATCH_SIZE8تعداد متن در هر دور بردارسازی؛ با فایل GPU برابر ۳۲اسناد و سرعت
QDRANT_UPSERT_BATCH_SIZE64تعداد بخش‌هایی که در هر نوبت ذخیره می‌شونداسناد و سرعت

سرویس و حافظه

متغیرپیش‌فرضکاربرددر برنامه
PARSRAG_PORT8000پورت روی رایانهٔ شمافقط .env
PARSRAG_BIND_HOST127.0.0.1نشانی‌ای که پورت روی آن باز می‌شودفقط .env
PARSRAG_ALLOWED_HOSTSخالینام‌های میزبانی که جز localhost، 127.0.0.1 و ::1 پذیرفته می‌شوندفقط .env
PARSRAG_APP_MEMORY_LIMIT6gسقف حافظهٔ کانتینر برنامهفقط .env
QDRANT_MEMORY_LIMIT2gسقف حافظهٔ Qdrantفقط .env
OLLAMA_MEMORY_LIMIT12gسقف حافظهٔ کانتینر Ollamaفقط .env

مجوز و ارجاع

کد منبع پارس‌رگ در دسترس است، اما پارس‌رگ متن‌باز نیست. می‌توانید کد را بخوانید و نسخه‌های رسمی را اجرا کنید، اما برای تغییر یا بازنشر آن باید اجازه بگیرید.

باز کردن در صفحهٔ جدا

مجاز است

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

بدون اجازهٔ کتبی مجاز نیست

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

ارجاع به پارس‌رگ

نوشته‌ها و پژوهش‌هایی که از پارس‌رگ استفاده می‌کنند باید به آن ارجاع دهند. متن ارجاع در قالب‌های APA و BibTeX از فایل CITATION.cff مخزن ساخته می‌شود.

شیوهٔ ارجاع به پارس‌رگمجوزمشارکتسیاست امنیتی

در حال بارگذاری…