[{"data":1,"prerenderedAt":276},["ShallowReactive",2],{"seo-verification":3,"blog-استضافة-weaviate-على-خادم-vps-ma-ar":6,"promo-bar-likely":275},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-استضافة-weaviate-على-خادم-vps-ma-ar",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":36,"sections":37,"ctaTitle":211,"ctaBody":212,"ctaButton":213,"ctaUrl":214,"relatedPosts":215},66,"استضافة-weaviate-على-خادم-vps",{"fr":12,"en":13,"ar":10,"es":14},"heberger-weaviate-vps","hosting-weaviate-on-a-vps","alojar-weaviate-en-un-vps","استضافة Weaviate على خادم VPS","Weaviate على خادم VPS: ملف Docker Compose مشروح، مفتاح API، اختيار الـvectorizer، فهرس HNSW والضغط، النسخ الاحتياطي، عميل Python v4 وحل الأعطال.",12,0,false,"2026-04-15T00:00:00+00:00","2026-11-04T16:30:25+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},6,"قواعد البيانات","bases-de-donnees","bg-teal-500\u002F10 text-teal-400","database",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-weaviate-vps-poster.svg",{"categorySlug":34,"appSlug":35},"الذكاء-الاصطناعي","weaviate","Weaviate قاعدة بيانات متجهية مفتوحة المصدر مكتوبة بلغة Go، صُمِّمت للبحث الدلالي ولأنظمة RAG. ما يميّزها هو وحدات تحوّل كائناتك إلى متجهات لحظة استيرادها، ويمكنها توليد إجابة انطلاقًا من النتائج، دون أي سلسلة معالجة خارجية. يشرح هذا الدليل نشر Weaviate على خادم VPS باستخدام Docker Compose، وتأمين الواجهة البرمجية بمفاتيح API، واختيار الـvectorizer المناسب، وتقدير الذاكرة اللازمة لفهرس HNSW، والنسخ الاحتياطي، وحل الأخطاء الأكثر شيوعًا. وتساعدك مقارنة مع Qdrant وpgvector وMilvus على اتخاذ القرار.",[38,42,53,56,84,115,118,127,130,133,136,139,148,204,207],{"type":39,"title":40,"body":41},"h2","لماذا تستضيف Weaviate ذاتيًا على خادم VPS","لا يكتفي Weaviate بتخزين المتجهات. فكل كائن يحمل خصائصه (نصوص وأرقام وتواريخ ومراجع) ومتجهًا واحدًا أو أكثر، بحيث يعيد استعلام واحد المستندات ذات الصلة مع كل بياناتها الوصفية. تحسب وحدات `text2vec-*` التضمينات (embeddings) عند الاستيراد، وترسل وحدات `generative-*` النتائج إلى نموذج لغوي كبير، وتعيد وحدات إعادة الترتيب (reranker) ترتيب المرشحين. ويمكن الاستعلام عن كل ذلك عبر REST أو GraphQL أو gRPC. تتيح لك الاستضافة الذاتية على خادم VPS اختيار الوحدات المفعّلة، وربط نماذج التضمين الخاصة بك (مثلًا عبر Ollama على الجهاز نفسه)، والإبقاء على المستندات والمتجهات في خادم تديره بنفسك. وسواء تعلّق الأمر بمساعد توثيق داخلي أو محرك بحث في كتالوج أو ذاكرة لوكيل ذكي، فأنت تتحكم في زمن الاستجابة ومدة الاحتفاظ بالبيانات ومخطط المجموعات ووتيرة النسخ الاحتياطي. كما توسّع موارد الخادم بحسب نمو بياناتك، لا بحسب جدول فوترة قائم على الحجم.",{"type":43,"title":44,"items":45},"ul","ما يقدّمه Weaviate عمليًا",[46,47,48,49,50,51,52],"**تحويل متجهي مدمج** — مع وحدة `text2vec-*` تُدرج نصًا خامًا ويحسب Weaviate المتجه بنفسه.","**بحث هجين أصلي** — يجمع استعلام `hybrid` بين الدرجة المتجهية ودرجة BM25، بوزن يحدده المعامل `alpha`.","**RAG داخل قاعدة البيانات** — ترسل وحدات `generative-*` الكائنات المسترجعة إلى نموذج لغوي وتعيد الإجابة مع مصادرها.","**تعدد المستأجرين (multi-tenancy)** — shard معزول لكل عميل داخل المجموعة نفسها، وهو مثالي لخدمة SaaS تفصل بيانات كل حساب.","**المتجهات المسمّاة (named vectors)** — عدة متجهات لكل كائن (العنوان والمحتوى والصورة)، لكلٍّ منها vectorizer وفهرس خاص به.","**ضغط الفهرس** — تكميم PQ أو BQ أو SQ لتقليص الذاكرة التي تشغلها المتجهات.","**رخصة BSD-3-Clause** — شيفرة قابلة للتدقيق ويمكن نشرها دون الاعتماد على خدمة مُدارة.",{"type":39,"title":54,"body":55},"المتطلبات بالأرقام لخادم VPS يشغّل Weaviate","للتجربة على بضعة آلاف من الكائنات تكفي ذاكرة 2 غيغابايت. أما للاستخدام الفعلي مع تفويض التحويل المتجهي إلى واجهة API أو إلى Ollama، فإن 4 غيغابايت ومعالجين افتراضيين (2 vCPU) نقطة انطلاق مريحة. وإذا شغّلت `text2vec-transformers` على الجهاز نفسه فخطّط لـ8 غيغابايت أو أكثر، لأن الاستدلال على المعالج المركزي بطيء عند الاستيراد الكثيف. على مستوى القرص، احسب من 30 إلى 60 غيغابايت من SSD بحسب الحجم، واترك هامشًا كافيًا لأن Weaviate ينتقل إلى وضع القراءة فقط عندما يتجاوز إشغال القرص عتبة محددة (`DISK_USE_READONLY_PERCENTAGE`، وقيمتها الافتراضية 90%). ثلاثة منافذ مهمة: `8080` لـREST وGraphQL، و`50051` لـgRPC (يستخدمه عميل Python v4 في الاستعلامات والاستيراد)، و`2112` لمقاييس Prometheus إن فعّلتها. لا ينبغي كشف أيٍّ منها مباشرة على الإنترنت، بل يجب أن يواجه الجمهورَ وكيلٌ عكسي (reverse proxy) عبر HTTPS فقط، على نطاق فرعي مثل `vectors.example.com`. وتحتاج أخيرًا إلى Docker وDocker Compose، وهما مثبّتان مسبقًا على الخوادم المنشأة من Marketplace.",{"type":57,"title":58,"headers":59,"rows":63},"comparison","أي vectorizer تختار",[60,61,62],"الخيار","أين يعمل النموذج","متى تختاره",[64,68,72,76,80],[65,66,67],"none مع متجهاتك الخاصة","داخل تطبيقك، قبل الاستيراد","عندما تحسب التضمينات بنفسك أو تريد تحكمًا كاملًا في النموذج",[69,70,71],"text2vec-openai","واجهة API خارجية، والمفتاح يُرسل في الترويسة X-OpenAI-Api-Key","بداية سريعة، خادم خفيف، وبيانات يُسمح لها بمغادرة الخادم",[73,74,75],"text2vec-ollama","خادم Ollama على الـVPS أو على الشبكة الخاصة","تضمينات محلية دون معالج رسوميات مخصص، بنموذج مثل nomic-embed-text",[77,78,79],"text2vec-transformers","حاوية استدلال بجانب Weaviate","نموذج مضمّن في الصورة، ويُفضّل مع معالج رسوميات للاستيراد الكبير",[81,82,83],"عدة خيارات عبر named vectors","مزيج من الخيارات السابقة","مقارنة نموذجين أو تحويل العنوان والمحتوى كلٍّ على حدة",{"type":85,"title":86,"steps":87},"steps","نشر Weaviate خطوة بخطوة",[88,91,94,97,100,103,106,109,112],{"title":89,"body":90},"تجهيز الخادم وسجلات DNS","تحقق من Docker بالأمر `docker compose version`. أنشئ سجل DNS من النوع A للنطاق `vectors.example.com` يشير إلى عنوان IP الخادم، ثم مجلدًا `\u002Fopt\u002Fweaviate` يحتوي على ملف `docker-compose.yml`.",{"title":92,"body":93},"كتابة خدمة weaviate","صرّح بالصورة `semitechnologies\u002Fweaviate:1.27.2` (المنشورة أيضًا على `cr.weaviate.io`). انشر المنافذ محليًا فقط: `127.0.0.1:8080:8080` و`127.0.0.1:50051:50051`. يتجاوز Docker قواعد `ufw` في المنافذ المنشورة، لذا يبقى ربط من نوع `8080:8080` متاحًا من الإنترنت حتى مع تفعيل الجدار الناري. اربط مجلدًا مسمّى (named volume) بالمسار `\u002Fvar\u002Flib\u002Fweaviate` وأضف `restart: unless-stopped`.",{"title":95,"body":96},"ضبط المتغيرات الأساسية","`PERSISTENCE_DATA_PATH=\u002Fvar\u002Flib\u002Fweaviate` لحفظ البيانات، و`QUERY_DEFAULTS_LIMIT=25` لعدد النتائج الافتراضي، و`CLUSTER_HOSTNAME=node1` لاسم عقدة ثابت: فإذا تغيّر بين إعادتي تشغيل لم تعد العقدة تجد حالتها. أضف `DEFAULT_VECTORIZER_MODULE=none` أو الوحدة التي تختارها، و`ENABLE_API_BASED_MODULES=true` لتفعيل الوحدات التي تستدعي واجهة API (`text2vec-openai` و`text2vec-ollama` و`generative-openai`…).",{"title":98,"body":99},"تفعيل المصادقة بمفتاح API","اضبط `AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=false`، ثم `AUTHENTICATION_APIKEY_ENABLED=true` و`AUTHENTICATION_APIKEY_ALLOWED_KEYS=admin-key,read-key` و`AUTHENTICATION_APIKEY_USERS=admin,app-reader`، إذ تتطابق المفاتيح والمستخدمون بحسب الترتيب. ولّد المفاتيح بالأمر `openssl rand -hex 32`. ولقصر المفتاح الثاني على القراءة، أضف `AUTHORIZATION_ADMINLIST_ENABLED=true` و`AUTHORIZATION_ADMINLIST_USERS=admin` و`AUTHORIZATION_ADMINLIST_READONLY_USERS=app-reader`.",{"title":101,"body":102},"التشغيل والتحقق","شغّل `docker compose up -d` ثم `curl -s localhost:8080\u002Fv1\u002F.well-known\u002Fready` الذي يعيد الرمز 200 عندما تصبح العقدة جاهزة. ويعيد الأمر `curl -s -H \"Authorization: Bearer $KEY\" localhost:8080\u002Fv1\u002Fmeta` رقم الإصدار وقائمة الوحدات المحمّلة، وهو أول فحص تجريه حين يبدو أن أحد الـvectorizers غير متاح.",{"title":104,"body":105},"وضع Nginx وTLS أمام المنفذ 8080","اضبط كتلة `server` في Nginx للنطاق `vectors.example.com` مع `proxy_pass http:\u002F\u002F127.0.0.1:8080;`، وأصدر الشهادة بالأمر `certbot --nginx -d vectors.example.com`، وارفع قيمة `client_max_body_size` إن كنت تستورد دفعات عبر REST. تُمرَّر الترويسة `Authorization` إلى Weaviate كما هي.",{"title":107,"body":108},"الاتصال بعميل Python v4","ثبّت العميل بالأمر `pip install -U weaviate-client`. على الخادم نفسه: `client = weaviate.connect_to_local(port=8080, grpc_port=50051, auth_credentials=Auth.api_key(KEY))` مع `from weaviate.classes.init import Auth`. ومن خادم آخر، استخدم `weaviate.connect_to_custom(...)` مع تحديد المضيف والمنفذ وTLS لكلٍّ من HTTP وgRPC. تحقق بالأمر `client.is_ready()` واختم بـ`client.close()`.",{"title":110,"body":111},"إنشاء مجموعة والاستيراد","استخدم `client.collections.create(\"Article\", ...)` مع خصائصها والـvectorizer، ثم `articles = client.collections.get(\"Article\")`. استورد على دفعات داخل كتلة `with articles.batch.dynamic() as batch:` باستدعاء `batch.add_object(properties={...})`، وأضف `vector=[...]` إذا كان الـvectorizer هو `none`. ثم افحص `articles.batch.failed_objects` لرصد الكائنات المرفوضة.",{"title":113,"body":114},"ربط بقية منظومة الذكاء الاصطناعي","للحصول على تضمينات وتوليد محليّين بالكامل، ثبّت Ollama على الخادم نفسه ووجّه `text2vec-ollama` و`generative-ollama` إلى واجهته البرمجية. بعد ذلك يستعلم Open WebUI أو تطبيق RAG الخاص بك من Weaviate بوصفه ذاكرة المستندات.",{"type":39,"title":116,"body":117},"نمذجة البيانات: المجموعات وتعدد المستأجرين والمتجهات المسمّاة","تعيش البيانات في Weaviate داخل **مجموعات** (collections)، وكانت تُسمّى أصنافًا (classes) في الواجهة البرمجية القديمة. تحدّد المجموعة خصائصها المصنّفة بأنواع (`text` و`int` و`number` و`date` و`boolean` ومراجع إلى مجموعات أخرى)، والـvectorizer الخاص بها، وإعدادات فهرسها. صرّح بالخصائص صراحةً بدل ترك المخطط التلقائي يخمّنها عند أول إدراج، لأن حقل تاريخ يُخمَّن على أنه نص لم يعد يُصفّى بشكل صحيح. ولخدمة SaaS، فعّل **تعدد المستأجرين** عند الإنشاء عبر `multi_tenancy_config=Configure.multi_tenancy(enabled=True)`: يحصل كل مستأجر على shard خاص به، ويُستعلم عنه عبر `collection.with_tenant(\"customer-a\")`، ويمكن تعطيل المستأجر غير النشط لتحرير الذاكرة. وأخيرًا تتيح **المتجهات المسمّاة** إرفاق عدة متجهات بالكائن نفسه، مثلًا واحد للعنوان وآخر للمحتوى، لكلٍّ منهما نموذجه وفهرسه. انتبه إلى أن الـvectorizer ونوع الفهرس في مجموعة ما لا يمكن تغييرهما لاحقًا، وأي تغيير يتطلب مجموعة جديدة وإعادة استيراد.",{"type":43,"title":119,"items":120},"الاستعلام في Weaviate: الاستعلامات المفيدة",[121,122,123,124,125,126],"**البحث الدلالي** — يتطلب `articles.query.near_text(query=\"فسخ العقد\", limit=5)` وجود vectorizer، وإلا فاستخدم `near_vector` مع تضمينك الخاص.","**البحث الهجين** — في `articles.query.hybrid(query=\"فاتورة مكررة\", alpha=0.5)` تعطي `alpha=1` بحثًا متجهيًا خالصًا، وتعطي `alpha=0` بحثًا بـBM25 خالصًا.","**الكلمات المفتاحية فقط** — يستخدم `articles.query.bm25(query=\"GDPR\")` الفهرس المعكوس، وهو مفيد للمراجع ورموز المنتجات وأسماء العلم.","**المرشّحات** — يُستورد `filters=Filter.by_property(\"language\").equal(\"ar\")` من `weaviate.classes.query`، ويمكن دمجه مع كل الاستعلامات السابقة.","**RAG مدمج** — يعيد `articles.generate.near_text(query=..., limit=3, grouped_task=\"أجب انطلاقًا من هذه المقتطفات\")` الكائنات وإجابة النموذج اللغوي المضبوط.","**GraphQL** — تبقى نقطة النهاية `\u002Fv1\u002Fgraphql` متاحة للأدوات التي تعتمد عليها، مع المعاملات `nearText` و`hybrid` و`bm25`.",{"type":39,"title":128,"body":129},"فهرس HNSW أو flat أو dynamic وتقدير الذاكرة","تستخدم كل مجموعة افتراضيًا فهرس **HNSW**، وهو سريع لكنه محفوظ في الذاكرة. وتقدّم وثائق Weaviate قاعدة تقريبية: خطّط لنحو ضعف الحجم الخام للمتجهات. فمليون متجه بـ768 بُعدًا بصيغة `float32` يشغل قرابة 3 غيغابايت، أي نحو 6 غيغابايت من الذاكرة للفهرس. أما فهرس **flat** فلا يحتفظ بشيء في الذاكرة ويناسب المجموعات الصغيرة، ولا سيما مستأجري خدمة SaaS. ويبدأ فهرس **dynamic** بصيغة flat ثم ينتقل إلى HNSW بعد تجاوز عتبة من الكائنات، ويتطلب `ASYNC_INDEXING=true`. ولتقليص الاستهلاك فعّل **التكميم** (quantization): يضغط PQ (product quantization) بقوة بعد مرحلة تدريب على بياناتك، ويختزل BQ (binary quantization) كل بُعد إلى بت واحد ويناسب خصوصًا المتجهات عالية الأبعاد، ويخزّن SQ (scalar quantization) كل بُعد في بايت واحد. اضبط أيضًا `GOMEMLIMIT` على نحو 80% من الذاكرة المخصصة للحاوية، حتى يتدخل جامع المهملات في Go قبل أن تُنهي النواةُ العملية.",{"type":39,"title":131,"body":132},"النسخ الاحتياطي والتحديثات","أضف `ENABLE_MODULES=backup-filesystem` و`BACKUP_FILESYSTEM_PATH=\u002Fvar\u002Flib\u002Fweaviate\u002Fbackups`، ثم أطلق نسخة احتياطية بالأمر `curl -X POST -H \"Authorization: Bearer $KEY\" -H \"Content-Type: application\u002Fjson\" -d '{\"id\":\"nightly-20261001\"}' localhost:8080\u002Fv1\u002Fbackups\u002Ffilesystem`. تُقرأ الحالة عبر `GET \u002Fv1\u002Fbackups\u002Ffilesystem\u002Fnightly-20261001`، وتتم الاستعادة عبر `POST \u002Fv1\u002Fbackups\u002Ffilesystem\u002Fnightly-20261001\u002Frestore`. لا تحميك نسخة احتياطية على القرص نفسه من فقدان الخادم، لذا انسخ المجلد إلى مكان آخر أو استخدم `backup-s3` مع `BACKUP_S3_BUCKET` نحو تخزين كائنات متوافق مع S3. وللتحديث، اقرأ ملاحظات الترحيل الخاصة بالإصدار المستهدف، وخذ نسخة احتياطية، وغيّر وسم الصورة، ثم شغّل `docker compose pull && docker compose up -d`. انتقل بين الإصدارات الفرعية واحدًا تلو الآخر، ولا تعد أبدًا إلى إصدار أقدم على البيانات نفسها دون استعادة نسخة احتياطية.",{"type":134,"body":135},"tip","لا تترك منفذ gRPC رقم `50051` مفتوحًا على الإنترنت: تستخدمه تطبيقات الخادم نفسه محليًا، ويمر الجهاز البعيد عبر نفق `ssh -L 50051:localhost:50051 user@vps`. ويربط النشر من Marketplace هذا المنفذ بالعنوان `127.0.0.1`، ويبدأ مع إتاحة الوصول المجهول لتسهيل التجربة الأولى، لذا فعّل المصادقة بمفتاح API قبل استيراد أي بيانات. امنح تطبيقك مفتاحًا للقراءة فقط، واحتفظ بمفتاح الإدارة لعمليات الاستيراد والنسخ الاحتياطي.",{"type":39,"title":137,"body":138},"مراقبة Weaviate","فعّل `PROMETHEUS_MONITORING_ENABLED=true`، فيعرض Weaviate حينها مقاييسه على المنفذ `2112` (`\u002Fmetrics`) لتجمعها أداة Prometheus وتعرضها Grafana. راقب أولًا ذاكرة العملية ومدة الاستيراد على دفعات وعدد الكائنات في كل مجموعة. وتصلح نقطتا النهاية `\u002Fv1\u002F.well-known\u002Flive` و`\u002Fv1\u002F.well-known\u002Fready` مجسّاتٍ لفحص صحة Docker (healthcheck) أو لأداة مثل Uptime Kuma. وعلى مستوى النظام، يعرض `docker stats` الاستهلاك اللحظي للحاوية، ويعرض `df -h` إشغال المجلد، وهو ما يستحق متابعة دقيقة لأن الانتقال إلى القراءة فقط يسببه القرص لا الذاكرة. وأخيرًا تابع السجلات بالأمر `docker compose logs -f weaviate`، إذ تظهر فيها أخطاء الوحدات وإخفاقات التحويل المتجهي مع اسم الكائن المعني.",{"type":43,"title":140,"items":141},"حل الأعطال: الأخطاء الأكثر شيوعًا",[142,143,144,145,146,147],"**استجابة 401 على كل الطلبات** — الوصول المجهول معطّل والطلب لا يرسل `Authorization: Bearer \u003Ckey>`، أو أن المفتاح غير مدرج في `AUTHENTICATION_APIKEY_ALLOWED_KEYS`.","**عميل Python v4 يرفض الاتصال** — فهو يتحقق من gRPC أيضًا: يجب أن يكون المنفذ `50051` متاحًا من جهة العميل، محليًا أو عبر نفق SSH، وأن تتطابق قيمة `grpc_port`.","**وحدة غير موجودة عند إنشاء مجموعة** — الوحدة غير محمّلة: افحص `ENABLE_MODULES` و`ENABLE_API_BASED_MODULES` والقائمة التي تعيدها `\u002Fv1\u002Fmeta`.","**حاوية تعيد التشغيل برمز الخروج 137** — أنهتها النواة لنفاد الذاكرة: اضبط `GOMEMLIMIT` أو فعّل التكميم أو زِد ذاكرة الخادم.","**استيراد مرفوض بسبب وضع القراءة فقط** — تجاوز القرص قيمة `DISK_USE_READONLY_PERCENTAGE`: حرّر مساحة أو وسّع المجلد، ثم أعد الـshards إلى وضع الكتابة.","**أخطاء تحويل متجهي عند الاستيراد** — مفتاح API لدى المزوّد مفقود (`X-OpenAI-Api-Key` يُمرَّر في `headers` الخاصة بالعميل)، أو أن خادم Ollama غير متاح من حاوية Weaviate.",{"type":57,"title":149,"headers":150,"rows":156},"Weaviate أم Qdrant أم pgvector أم Milvus",[151,152,153,154,155],"المعيار","Weaviate","Qdrant","pgvector","Milvus",[157,163,169,175,181,187,193,198],[158,159,160,161,162],"الطبيعة","قاعدة متجهية مكتوبة بـGo","قاعدة متجهية مكتوبة بـRust","امتداد لـPostgreSQL","قاعدة متجهية موزّعة",[164,165,166,167,168],"تحويل متجهي مدمج","نعم، عبر وحدات text2vec-*","لا، يوفّر العميلُ التضمينات","لا، يوفّر التطبيقُ التضمينات","غالبًا من جهة العميل",[170,171,172,173,174],"الواجهة البرمجية","REST وGraphQL وgRPC","REST وgRPC","SQL","gRPC وREST وحزم SDK",[176,177,178,179,180],"البحث الهجين والمرشّحات","BM25 مع المتجهات أصليًا، ومرشّحات","مرشّحات على الـpayload، ومتجهات متفرقة","WHERE في SQL، والبحث النصي في PostgreSQL يُدمج يدويًا","مرشّحات قياسية، وBM25 في الإصدارات الحديثة",[182,183,184,185,186],"الاستهلاك على خادم VPS","متوسط، حاوية واحدة","منخفض، حاوية واحدة","استهلاك PostgreSQL لديك","أثقل، مع etcd وMinIO في الوضع standalone",[188,189,190,191,192],"الضغط","PQ وBQ وSQ","قياسي وثنائي وضغط المنتج","halfvec وbit","عدة فهارس مكمّمة (IVF_PQ وIVF_SQ8…)",[194,195,196,197,196],"الرخصة","BSD-3-Clause","Apache 2.0","رخصة PostgreSQL",[199,200,201,202,203],"حالة الاستخدام النموذجية","RAG متكامل مع تحويل متجهي مدمج","بحث متجهي مقتصد في الموارد","متجهات بجانب بيانات علائقية","أحجام ضخمة جدًا ونشر في عنقود",{"type":39,"title":205,"body":206},"متى يكون Weaviate الخيار المناسب","يكون Weaviate مبرَّرًا حين تريد أن تتولى قاعدة البيانات التحويل المتجهي والبحث الهجين والتوليد، بدل أن تجمعها بنفسك في شيفرة التطبيق. وهو يناسب مساعد التوثيق، والبحث في كتالوج متعدد اللغات، وخدمة SaaS تعزل كل عميل في مستأجر خاص به. أما إذا كنت تحسب التضمينات بنفسك وتبحث عن أدنى استهلاك للموارد، فإن Qdrant أكثر اقتصادًا. وإذا كانت بياناتك أصلًا في PostgreSQL والحجم متواضعًا، فإن pgvector يوفّر عليك مكوّنًا إضافيًا. ويستهدف Milvus الأحجام الموزعة الضخمة جدًا، على حساب بنية تحتية أثقل. على خادم VPS، ابدأ بعقدة واحدة وفهرس HNSW ومفتاح API ونسخ احتياطي يومي، ثم أضف التكميم وتعدد المستأجرين حين تستدعي القياسات ذلك. وللتعمق أكثر، اطّلع على أدلتنا حول Qdrant وOllama وOpen WebUI، التي تكمل Weaviate ضمن منظومة RAG مستضافة ذاتيًا.",{"type":208,"title":209,"body":210},"callout","انشر Weaviate على خادم VPS","اطلب خادم VPS من ServOrbit وانشر Weaviate في نقرات قليلة من Marketplace — Ubuntu 24.04 وDocker مثبَّت مسبقًا وصورة `semitechnologies\u002Fweaviate:1.27.2` جاهزة للتشغيل.","انشر منصة RAG الخاصة بك على Weaviate","يمنحك خادم VPS Cloud من ServOrbit الموارد وبيئة Docker لاستضافة Weaviate ووحداتها، ولبناء خط بحث دلالي متكامل وآمن وسيادي.","النشر على VPS Cloud","\u002Fapplications\u002Fالذكاء-الاصطناعي\u002Fweaviate",[216,236,257],{"id":217,"slug":218,"slugs":219,"title":223,"excerpt":224,"readTime":225,"views":226,"isPinned":19,"noindex":19,"publishedAt":227,"updatedAt":228,"category":229,"categories":230,"featuredImage":30,"bgImage":31,"posterImage":232,"relatedSolution":233},65,"استضافة-qdrant-على-خادم-vps",{"fr":220,"en":221,"ar":218,"es":222},"heberger-qdrant-vps","hosting-qdrant-on-a-vps","alojar-qdrant-en-un-vps","استضافة Qdrant على خادم VPS","استضِف ‎Qdrant‎ على خادمك الـ‎VPS‎: ‎Docker Compose‎ ومفتاح ‎API‎ و‎TLS‎ وضبط ‎HNSW‎ والتكميم وعميل ‎Python v1‎ واللقطات ومراقبة ‎Prometheus‎.",8,1,"2026-04-16T00:00:00+00:00","2026-10-20T23:18:05+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[231],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-qdrant-vps-poster.svg",{"categorySlug":234,"appSlug":235},"قواعد-البيانات","qdrant",{"id":226,"slug":237,"slugs":238,"title":242,"excerpt":243,"readTime":244,"views":226,"isPinned":19,"noindex":19,"publishedAt":245,"updatedAt":246,"category":247,"categories":252,"featuredImage":30,"bgImage":31,"posterImage":254,"relatedSolution":255},"كيفية-استضافة-open-webui-على-خادم-vps",{"fr":239,"en":240,"ar":237,"es":241},"heberger-open-webui","how-to-host-open-webui-on-a-vps","como-alojar-open-webui-en-un-vps","كيفية استضافة Open WebUI على خادم VPS","دليل شامل لنشر Open WebUI على خادم VPS الخاص بك. احتفظ بالتحكم في بياناتك، وتجنب تكاليف واجهات برمجة التطبيقات السحابية، وادخل إلى نماذج LLM الخاصة بك من واجهة ويب نظيفة.",9,"2026-06-01T00:00:00+00:00","2026-11-09T20:55:18+00:00",{"id":226,"name":248,"slug":249,"color":250,"icon":251},"الذكاء الاصطناعي","intelligence-artificielle","bg-purple-500\u002F10 text-purple-400","ia",[253],{"id":226,"name":248,"slug":249,"color":250,"icon":251},"\u002Fblog\u002Fcovers\u002Fheberger-open-webui-poster.svg",{"categorySlug":34,"appSlug":256},"open-webui",{"id":258,"slug":259,"slugs":260,"title":264,"excerpt":265,"readTime":244,"views":266,"isPinned":19,"noindex":19,"publishedAt":267,"updatedAt":268,"category":269,"categories":270,"featuredImage":30,"bgImage":31,"posterImage":272,"relatedSolution":273},11,"كيفية-استضافة-ollama-على-خادم-vps",{"fr":261,"en":262,"ar":259,"es":263},"heberger-ollama-vps","how-to-host-ollama-on-a-vps","como-alojar-ollama-en-un-vps","استضافة Ollama على خادم VPS: دليل التشغيل المتقدم","إعداد Ollama المتقدم على VPS: إدارة النماذج، وكيل عكسي nginx، أمان الواجهة البرمجية، تكميم Q4_K_M\u002FQ8، ثغرة CVE-2026-45672 في Open WebUI والتكامل الآمن.",3,"2026-06-09T00:00:00+00:00","2026-11-04T16:30:24+00:00",{"id":226,"name":248,"slug":249,"color":250,"icon":251},[271],{"id":226,"name":248,"slug":249,"color":250,"icon":251},"\u002Fblog\u002Fcovers\u002Fheberger-ollama-vps-poster.svg",{"categorySlug":34,"appSlug":274},"ollama",true,1794270243511]