> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-locadex-parallel-t9n-main-irpovz79o3kkpgs4.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# هل يمكن استخدام ClickHouse للبحث المتجهي؟

> تعرّف على كيفية استخدام ClickHouse للبحث المتجهي، بما في ذلك تخزين التضمينات والبحث باستخدام دوال المسافة مثل تشابه جيب التمام.

{frontMatter.description}

<div id="clickhouse-for-vector-search">
  ## ClickHouse للبحث المتجهي!
</div>

نعم، يمكن لـ ClickHouse تنفيذ بحث متجهي.

تشمل أبرز مزايا استخدام ClickHouse للبحث المتجهي مقارنةً باستخدام قواعد بيانات متجهية أكثر تخصصًا ما يلي:

* استخدام إمكانات التصفية والبحث النصي الكامل في ClickHouse لتحسين مجموعة البيانات قبل إجراء البحث.
* إجراء التحليلات على مجموعات البيانات لديك.
* تنفيذ `JOIN` على بياناتك الحالية.
* من دون الحاجة إلى إدارة قاعدة بيانات أخرى تزيد تعقيد بنيتك التحتية.

إليك دليل عملي سريعًا حول كيفية استخدام ClickHouse للبحث المتجهي.

<Steps>
  <Step title="إنشاء التضمينات المتجهية">
    يجب تحويل بياناتك (المستندات أو الصور أو البيانات المنظَّمة) إلى *تضمينات متجهية*. نوصي بإنشاء التضمينات المتجهية باستخدام [واجهة برمجة تطبيقات OpenAI Embeddings](https://platform.openai.com/docs/api-reference/embeddings) أو باستخدام مكتبة بايثون مفتوحة المصدر [SentenceTransformers](https://www.sbert.net/).

    يمكنك اعتبار التضمين المتجهي مصفوفة كبيرة من الأعداد ذات الفاصلة العائمة تمثل بياناتك. [اطلع على هذا الدليل من OpenAI لمعرفة المزيد عن التضمينات المتجهية](https://platform.openai.com/docs/guides/embeddings/what-are-embeddings).
  </Step>

  <Step title="تخزين التضمينات المتجهية">
    بمجرد إنشاء التضمينات المتجهية، تحتاج إلى تخزينها في ClickHouse. يجب تخزين كل تضمين متجهي في صف منفصل، ويمكن أن يتضمن بيانات وصفية لأغراض التصفية أو التجميع أو التحليلات. إليك مثالًا على جدول يمكنه تخزين الصور مع التسميات التوضيحية:

    ```sql theme={null}
    CREATE TABLE images
    (
    	`_file` LowCardinality(String),
    	`caption` String,
    	`image_embedding` Array(Float32)
    )
    ENGINE = MergeTree;
    ```
  </Step>

  <Step title="البحث عن تضمينات متجهية ذات صلة">
    لنفترض أنك تريد البحث عن صور للكلاب في مجموعة البيانات لديك. يمكنك استخدام دالة مسافة مثل `cosineDistance` لأخذ تضمين متجهي لصورة كلب والبحث عن الصور ذات الصلة:

    ```sql theme={null}
    SELECT
        _file,
    	caption,
    	cosineDistance(
            -- تضمين متجهي لصورة الكلب "المدخلة"
            [0.5736801028251648, 0.2516217529773712, ...,  -0.6825592517852783],
            image_embedding
        ) AS score
    FROM images
    ORDER BY score ASC
    LIMIT 10
    ```

    يعيد هذا الاستعلام أسماء `_file` و`caption` لأفضل 10 صور يُرجَّح أن تكون الأكثر صلة بصورة الكلب التي قدمتها.
  </Step>
</Steps>

<div id="further-reading">
  ## للمزيد من القراءة
</div>

للاطلاع على دليل عملي أكثر تفصيلًا حول البحث المتجهي باستخدام ClickHouse، يُرجى مراجعة:

* [البحث المتجهي الدقيق والتقريبي](/ar/reference/engines/table-engines/mergetree-family/annindexes)
