پرش به محتویات

داکر

از نسخه 0.3.1 هر انتشار یک ایمیج داکر از رابط HTTP را در GitHub Container Registry منتشر می کند:

ghcr.io/sadrmanesh/persian-rag
برچسب به چه اشاره می کند
0.3.1 دقیقا همین نسخه
0.3 تازه ترین نسخه 0.3.x
latest تازه ترین نسخه

ایمیج ها برای linux/amd64 و linux/arm64 ساخته می شوند. هر ایمیج بسته persian-rag[server,pdf,docx] را روی پایتون 3.12 دارد، با کاربر غیر ریشه (شناسه 10001) اجرا می شود و روی درگاه 8000 گوش می دهد. پوشه کاری و حجم داده /data است و فرمان پیش فرض، ایندکس موجود در /data/index را سرو می کند.

ساخت ایندکس و اجرای سرور

ابتدا از پوشه اسناد در یک حجم نام دار ایندکس بسازید و سپس آن را سرو کنید:

docker volume create persian-rag-data

docker run --rm \
  -v "$PWD/library:/library:ro" \
  -v persian-rag-data:/data \
  ghcr.io/sadrmanesh/persian-rag:0.3.1 ingest /library --index /data/index

docker run -d --name persian-rag -p 8000:8000 \
  -v persian-rag-data:/data \
  ghcr.io/sadrmanesh/persian-rag:0.3.1
curl -s localhost:8000/health
curl -s localhost:8000/retrieve -H 'content-type: application/json' \
  -d '{"query": "حافظ اهل کجا بود؟", "k": 3}'

نقطه ورود ایمیج فرمان persian-rag است، پس همه زیرفرمان ها کار می کنند: ingest، query، chat، eval یا serve با گزینه های دلخواه شما. ایندکسی را که روی سیستم خودتان ساخته اید هم می توانید مستقیم با -v "$PWD/.persian-rag:/data/index:ro" وصل کنید.

پاسخ با مدل زبانی

اتصال های OpenAI و Ollama در ایمیج هستند. کلید را با متغیر محیطی و گزینه ها را به serve بدهید:

docker run -d -p 8000:8000 -v persian-rag-data:/data \
  -e OPENAI_API_KEY \
  ghcr.io/sadrmanesh/persian-rag:0.3.1 \
  serve --index /data/index --host 0.0.0.0 --port 8000 --llm openai --citations

برای Ollama روی همان سیستم، -e OLLAMA_HOST=http://host.docker.internal:11434 را اضافه کنید (در لینوکس --add-host=host.docker.internal:host-gateway هم لازم است) و از --llm ollama استفاده کنید.

بررسی سلامت

ایمیج یک HEALTHCHECK دارد که هر ۳۰ ثانیه مسیر GET /health را صدا می زند. وقتی ایندکس بارگذاری شد، docker ps وضعیت ظرف را healthy نشان می دهد. اگر درگاه را در فرمان تغییر دادید، -e PERSIAN_RAG_PORT=<port> را هم تنظیم کنید تا بررسی سلامت از همان درگاه استفاده کند.

ساخت ایمیج توسط خودتان

docker build -t persian-rag .
docker build -t persian-rag --build-arg EXTRAS=server,pdf,docx,sentence-transformers .

آرگومان EXTRAS بسته های اضافه داخل ایمیج را تعیین می کند. ایمیج منتشر شده sentence-transformers را ندارد چون چند گیگابایت حجم اضافه می کند. برای سرو کردن ایندکسی که با --embedder sentence-transformers ساخته شده، ایمیج خودتان را با این بسته بسازید.

این سرور احراز هویت ندارد. پیش از انتشار عمومی، آن را پشت دروازه امن خودتان قرار دهید.