POST /v1/namespaces/{ns}/search ما يصل إلى ثلاثة فروع مُرتَّبة على مجموعة صفوف مُرشَّحة واحدة. جميع الفروع اختيارية؛ يُشترَط وجود واحد على الأقل. يُطبَّق label وfilter على كل فرع.
المرشحات
يُقبَل شكلان:- مساواة مفردة:
{"property": "project", "value": "conare"}— تُقدَّم مباشرة من قوائم النشر. - DSL المصفوفة:
[property, op, value]معEqوNotEqوGtوGteوLtوLteوIn(قيمة مصفوفة)، مركّبة مع["And", [f1, f2, ...]]/["Or", [...]]حتى 16 مستوى.
false < true. عدم تطابق النوع أو غياب الخاصية لا يطابق شيئاً — بما في ذلك NotEq — ولا يُخطئ أبداً. عوامل التشغيل غير المعروفة، وقوائم And/Or الفارغة، وقيم In غير المصفوفية تكون 400 وتُسمِّي الجاني.
الفرع المتجهي
الدرجات هي التشابه الجيبي على متجهات مُطبَّعة L2، وهي دائماً دقيقة — يُرشِّح فهرس ANN (IVF + رموز RaBitQ ذات 1 بت) المرشحين ثم يعيد ترتيبهم مقابل متجهات بدقة كاملة. الخيارات:
يُعيد البحث المتجهي المُرشَّح بالضبط نتائج ANN على المجموعة الفرعية المطابقة — يوسّع المحرك السَّبْر للتعويض عن الانتقائية، لذا لا تُكلِّفك المرشحات استدعاءً بصمت.
الحتمية: لحالة فهرس ثابتة، تُعيد بايتات الاستعلام المتطابقة مع مقابض متطابقة قوائم إصابات متطابقة بايت ببايت — عند أي عدد خيوط أو تزامن. خلف الكواليس، يُعيد أخذ عيّنات مستمر تشغيل نحو 1% من استعلامات ANN مقابل الحقيقة الأرضية بالقوة الغاشمة وينشر الاستدعاء؛ تُبلِّغ نقطة النهاية
GET /recall-slo (بلا بيانات اعتماد) عن صحة استدعاء الأسطول.
فرع الكلمات المفتاحية
BM25 (k1=1.2 وb=0.75) على خاصية text. المُرمِّز: تحويل إلى أحرف صغيرة، وتقسيم على كل حرف غير أبجدي رقمي — دون جذور، دون كلمات إيقاف (تكافؤ مُرمِّز الكلمات مع Turbopuffer).
يتحكم match بتركيب الرموز:
"auto"(افتراضي) — تتطلب كل الرموز؛ إذا نتج عن ذلك عدد إصابات أقل منmax(5, top_k/8)، أعد المحاولة كأي رمز. تُبلِّغ الاستجابة عن الوضع الذي عمل ("mode": "and"/"or")."all"— كل رمز مطلوب."any"— BM25 فصلي عادي.
الفرع الزمني
يُرتِّب حسب أي خاصية عددية صحيحة،asc أو desc — الساق الرخيصة “الأحدث أولاً” لاستعلام هجين.
إسقاط الخصائص
يتحكمinclude_props بما يرافق كل إصابة: احذفها لتحصل على المعرِّف والدرجة فقط (بلا تكلفة إضافية)، ومرِّر مصفوفة أسماء لإسقاط تلك المفاتيح فقط، أو true لخريطة الخصائص الكاملة. يعني الإسقاط أن إعادة الترتيب يمكنها استهلاك الإصابات دون رحلة بحث ثانية.
وسيط متوافق مع Turbopuffer
يقبلPOST /v2/namespaces/{ns}/query شكل قراءة Turbopuffer — {rank_by, filters, top_k, include_attributes} — ويُعيد {"rows": [{"id", "$dist", ...}]} مع $dist كمسافة جيبية. يعطي rank_by: ["id", "asc"] مع filters: ["id", "Gt", cursor] ترقيم صفحات/تصدير بالمؤشر. الأشكال غير المدعومة تكون 400 صريحة تُسمِّي الحقل — أبداً استعلاماً مختلفاً بصمت.