البحث عن وثائق تخزين المتجهات حسب التشابه الدلالي

البحث في مستندات Vector Store باستخدام التشابه الدلالي وعمليات الدفعة

Initiate a search operation with a query text and receive most semantically similar responses from the vector store.

Path parameters
vector-store-idstringRequired

The ID of the vector store.

Query parameters
qstringRequired

The search query text.

nintegerOptional

Number of chunks to return.

tnumberOptional

Matching threshold.

prev_chunksintegerOptional

Number of chunks before the matched chunk to include.

next_chunksintegerOptional

Number of chunks after the matched chunk to include.

Header parameters
x-api-keystringRequired

The API key for authentication.

Responses
200
Search results retrieved successfully.
application/json
get
GET /api/v1/vector-stores/{vector-store-id}/documents/search HTTP/1.1
Host: api.rememberizer.ai
x-api-key: text
Accept: */*
200

Search results retrieved successfully.

{
  "vector_store": {
    "id": "text",
    "name": "text"
  },
  "matched_chunks": [
    {
      "document": {
        "id": 1,
        "name": "text",
        "type": "text",
        "size": 1,
        "indexed_on": "2025-07-05T00:57:05.190Z",
        "vector_store": "text",
        "created": "2025-07-05T00:57:05.190Z",
        "modified": "2025-07-05T00:57:05.190Z"
      },
      "matched_content": "text",
      "distance": 1
    }
  ]
}

طلبات مثال

curl -X GET \
  "https://api.rememberizer.ai/api/v1/vector-stores/vs_abc123/documents/search?q=كيف%20نقوم%20بدمج%20منتجنا%20مع%20أنظمة%20طرف%20ثالث&n=5&prev_chunks=1&next_chunks=1" \
  -H "x-api-key: YOUR_API_KEY"

استبدل YOUR_API_KEY بمفتاح واجهة برمجة التطبيقات الخاص بك لـ Vector Store و vs_abc123 بمعرف Vector Store الخاص بك.

معلمات المسار

المعلمة
النوع
الوصف

vector-store-id

سلسلة

مطلوب. معرف متجر المتجهات الذي سيتم البحث فيه.

معلمات الاستعلام

المعلمة
النوع
الوصف

q

سلسلة

مطلوب. نص استعلام البحث.

n

عدد صحيح

عدد النتائج التي سيتم إرجاعها. الافتراضي: 10.

t

رقم

عتبة المطابقة. الافتراضي: 0.7.

prev_chunks

عدد صحيح

عدد الأجزاء قبل الجزء المطابق لتضمينه. الافتراضي: 0.

next_chunks

عدد صحيح

عدد الأجزاء بعد الجزء المطابق لتضمينه. الافتراضي: 0.

تنسيق الاستجابة

{
  "vector_store": {
    "id": "vs_abc123",
    "name": "وثائق المنتج"
  },
  "matched_chunks": [
    {
      "document": {
        "id": 1234,
        "name": "دليل التكامل.pdf",
        "type": "application/pdf",
        "size": 250000,
        "indexed_on": "2023-06-15T10:30:00Z",
        "vector_store": "vs_abc123",
        "created": "2023-06-15T10:15:00Z",
        "modified": "2023-06-15T10:30:00Z"
      },
      "matched_content": "يقدم منتجنا عدة خيارات للتكامل مع أنظمة الطرف الثالث. الطريقة الأساسية هي من خلال واجهة برمجة التطبيقات RESTful الخاصة بنا، التي تدعم مصادقة OAuth2. بالإضافة إلى ذلك، يمكنك استخدام مجموعة أدوات التطوير المتاحة بلغة بايثون، وجافا سكريبت، وجافا.",
      "distance": 0.123
    },
    // ... المزيد من الأجزاء المتطابقة
  ]
}

المصادقة

تتطلب هذه النقطة النهائية المصادقة باستخدام مفتاح API في رأس x-api-key.

استجابات الخطأ

رمز الحالة
الوصف

400

طلب غير صالح - معلمات مطلوبة مفقودة أو تنسيق غير صالح

401

غير مصرح - مفتاح API غير صالح أو مفقود

404

غير موجود - لم يتم العثور على متجر المتجهات

500

خطأ في الخادم الداخلي

نصائح تحسين البحث

نوافذ السياق

استخدم معلمات prev_chunks و next_chunks للتحكم في مقدار السياق المضمن مع كل تطابق:

  • اضبط كلاهما على 0 للحصول على تطابقات دقيقة بدون سياق

  • اضبط كلاهما على 1-2 للحصول على تطابقات مع سياق ضئيل

  • اضبط كلاهما على 3-5 للحصول على تطابقات مع سياق كبير

عتبة المطابقة

يتحكم معلم t في مدى دقة تصفية المطابقات:

  • القيم الأعلى (مثل 0.9) تعيد فقط المطابقات القريبة جدًا

  • القيم الأدنى (مثل 0.5) تعيد المزيد من المطابقات بتنوع أكبر

  • القيمة الافتراضية (0.7) توفر نهجًا متوازنًا

العمليات الجماعية

لتطبيقات عالية الإنتاجية، يدعم Rememberizer عمليات جماعية فعالة على مخازن المتجهات. تعمل هذه الطرق على تحسين الأداء عند معالجة استعلامات بحث متعددة.

تنفيذ البحث الجماعي

import requests
import time
import concurrent.futures

def batch_search_vector_store(vector_store_id, queries, num_results=5, batch_size=10):
    """
    إجراء عمليات بحث جماعية ضد مخزن المتجهات
    
    Args:
        vector_store_id: معرف مخزن المتجهات للبحث
        queries: قائمة بسلاسل استعلام البحث
        num_results: عدد النتائج لكل استعلام
        batch_size: عدد الطلبات المتوازية
        
    Returns:
        قائمة بنتائج البحث
    """
    headers = {
        "x-api-key": "YOUR_API_KEY"
    }
    
    results = []
    
    # المعالجة في دفعات لتجنب إغراق واجهة برمجة التطبيقات
    for i in range(0, len(queries), batch_size):
        batch_queries = queries[i:i+batch_size]
        
        with concurrent.futures.ThreadPoolExecutor(max_workers=batch_size) as executor:
            futures = []
            
            for query in batch_queries:
                params = {
                    "q": query,
                    "n": num_results,
                    "prev_chunks": 1,
                    "next_chunks": 1
                }
                
                # إرسال الطلب إلى مجموعة الخيوط
                future = executor.submit(
                    requests.get,
                    f"https://api.rememberizer.ai/api/v1/vector-stores/{vector_store_id}/documents/search",
                    headers=headers,
                    params=params
                )
                futures.append(future)
            
            # جمع النتائج من جميع المستقبلات
            for future in futures:
                response = future.result()
                if response.status_code == 200:
                    results.append(response.json())
                else:
                    results.append({"error": f"فشل مع رمز الحالة: {response.status_code}"})
        
        # إضافة تأخير بين الدفعات لتجنب تحديد المعدل
        if i + batch_size < len(queries):
            time.sleep(1)
    
    return results

# مثال على الاستخدام
queries = [
    "التكامل مع واجهات برمجة التطبيقات REST",
    "بروتوكولات المصادقة",
    "كيفية النشر في الإنتاج",
    "تقنيات تحسين الأداء",
    "أفضل الممارسات في معالجة الأخطاء"
]

search_results = batch_search_vector_store("vs_abc123", queries, num_results=3, batch_size=5)

تحسين الأداء لعمليات الدفعات

عند تنفيذ عمليات الدفعات لعمليات بحث متجر المتجهات، ضع في اعتبارك هذه الممارسات الجيدة:

  1. حجم الدفعة الأمثل: بالنسبة لمعظم التطبيقات، فإن معالجة 5-10 استفسارات في وقت واحد توفر توازنًا جيدًا بين الإنتاجية واستخدام الموارد.

  2. الوعي بتحديد المعدل: قم بتضمين آليات تأخير بين الدفعات (عادةً 1-2 ثانية) لتجنب الوصول إلى حدود معدل واجهة برمجة التطبيقات.

  3. معالجة الأخطاء: نفذ معالجة أخطاء قوية للاستفسارات الفردية التي قد تفشل ضمن دفعة.

  4. إدارة الاتصالات: بالنسبة للتطبيقات ذات الحجم الكبير، نفذ تجميع الاتصالات لتقليل التكاليف.

  5. تكوين المهلة: قم بتعيين مهلات مناسبة لكل طلب لمنع الاستفسارات التي تستغرق وقتًا طويلاً من حظر الدفعة بأكملها.

  6. معالجة النتائج: ضع في اعتبارك معالجة النتائج بشكل غير متزامن عند توفرها بدلاً من الانتظار للحصول على جميع النتائج.

  7. المراقبة: تتبع مقاييس الأداء مثل متوسط وقت الاستجابة ومعدلات النجاح لتحديد فرص التحسين.

بالنسبة للتطبيقات الإنتاجية ذات أحجام الاستفسارات العالية جدًا، ضع في اعتبارك تنفيذ نظام قائمة انتظار مع عمليات عمال لإدارة الدفعات الكبيرة بكفاءة.

تتيح لك هذه النقطة البحث في متجر المتجهات الخاص بك باستخدام التشابه الدلالي. إنها تعيد المستندات التي ترتبط مفهوميًا باستفسارك، حتى لو لم تحتوي على الكلمات الرئيسية الدقيقة. وهذا يجعلها قوية بشكل خاص لاستفسارات اللغة الطبيعية والإجابة على الأسئلة.

Last updated