> ## Documentation Index
> Fetch the complete documentation index at: https://docs.crewai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# أداة البحث المتجهي في MongoDB

> تقوم `MongoDBVectorSearchTool` بإجراء بحث متجهي على MongoDB Atlas مع أدوات مساعدة اختيارية لإنشاء الفهارس.

# `MongoDBVectorSearchTool`

## الوصف

تُمكّن `MongoDBVectorSearchTool` من إجراء استعلامات التشابه المتجهي على مجموعات MongoDB Atlas. يدعم
MongoDB Atlas البحث المتجهي الأصلي. كما تدعم الأداة أدوات مساعدة لإنشاء الفهارس وإدراج النصوص المضمنة بكميات كبيرة.

يُعد البحث المتجهي في MongoDB مفيدًا للتطبيقات التي تريد استخدام قاعدة بيانات بحث متجهي للاستعلام عن البيانات
باستخدام البحث الدلالي، أو تصفية الاستعلامات حسب حقول أخرى في مجموعتك، أو تشغيل تطبيقات الذكاء الاصطناعي
وأنظمة الوكلاء الخاصة بك من خلال تنفيذ التوليد المعزز بالاسترجاع (RAG).

اعرف المزيد: [https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-overview/](https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-overview/)

## التثبيت

قم بالتثبيت مع إضافة MongoDB:

```shell theme={null}
pip install crewai-tools[mongodb]
```

أو

```shell theme={null}
uv add crewai-tools --extra mongodb
```

## معاملات التهيئة

* `connection_string` (str): مطلوب. بيانات اعتماد سلسلة الاتصال بـ MongoDB Atlas للاتصال بمجموعتك (cluster).
* `database_name` (str): مطلوب. اسم قاعدة بيانات MongoDB المراد استخدامها.
* `collection_name` (str): مطلوب. المجموعة ضمن قاعدة البيانات حيث تُخزَّن المستندات والتضمينات (embeddings).
* `vector_index_name` (str، الافتراضي: `vector_index`): اختياري. اسم فهرس البحث المتجهي في MongoDB المراد
  الاستعلام عنه (يجب أن يطابق الفهرس الذي تم إنشاؤه في Atlas).
* `text_key` (str، الافتراضي: `text`): اختياري. اسم حقل المستند الذي يُخزَّن فيه النص الخام.
* `embedding_key` (str، الافتراضي: `embedding`): اختياري. اسم حقل المستند الذي يُخزَّن فيه التضمين المتجهي.
* `dimensions` (int، الافتراضي: `1536`): اختياري. عدد أبعاد نموذج التضمين (يجب أن يطابق نموذجك).
* `query_config` (MongoDBVectorSearchConfig): اختياري. كائن `MongoDBVectorSearchConfig` لإعدادات الاستعلام
  المتقدمة، مثل `limit` و `oversampling_factor`.

## طرق MongoDBVectorSearchTool

* `run(query=...)`: يُضمّن استعلامًا وينفّذ بحث تشابه متجهي، ويُعيد المستندات المطابقة. يأخذ معامل
  `query` (`str`) بلغة طبيعية لتضمينه والبحث عنه.
* `add_texts(list of strings)`: يأخذ قائمة من النصوص لتضمينها وإدراجها كمستندات في قاعدة بيانات MongoDB Atlas الخاصة بك.
* `create_vector_search_index(dimensions=...)`: يُنشئ فهرس بحث متجهي في MongoDB بالأبعاد والتشابه الصحيحين.
  يأخذ معامل `dimensions` (int).

## بداية سريعة

يوضح المثال التالي كيفية تهيئة الأداة وتنفيذ بحث تشابه متجهي على مجموعة MongoDB Atlas المحددة:

```python Code theme={null}
from crewai_tools import MongoDBVectorSearchTool

tool = MongoDBVectorSearchTool(
  connection_string="mongodb+srv://...",
  database_name="mydb",
  collection_name="docs",
)

print(tool.run(query="how to create vector index"))
```

## المشكلات الشائعة

* فشل المصادقة: تأكد من أن قائمة الوصول إلى عناوين IP في Atlas تسمح بخادمك وأن سلسلة الاتصال تتضمن بيانات الاعتماد.
* الفهرس غير موجود: أنشئ الفهرس المتجهي أولاً؛ يجب أن يتطابق الاسم مع `vector_index_name`.
* عدم تطابق الأبعاد: قم بمحاذاة أبعاد نموذج التضمين مع `dimensions`.

## أمثلة

### تحميل قاعدة البيانات مسبقًا وإنشاء الفهرس

يوضح المثال التالي كيفية تحميل قاعدة بيانات MongoDB Atlas الخاصة بك مسبقًا بالمستندات
وإنشاء فهرس بحث متجهي في MongoDB للاستعلام عن مجموعتك:

```python Code theme={null}
import os
from crewai_tools import MongoDBVectorSearchTool

tool = MongoDBVectorSearchTool(
    database_name="example_database",
    collection_name="example_collection",
    connection_string="<your_mongodb_connection_string>",
    dimensions=3072,
)

# Load text content from a local folder and add to your MongoDB collection
texts = []
for fname in os.listdir("knowledge"):
    path = os.path.join("knowledge", fname)
    if os.path.isfile(path):
        with open(path, "r", encoding="utf-8") as f:
            texts.append(f.read())

tool.add_texts(texts)

# Create the MongoDB Vector Search index (e.g., 3072 dims for text-embedding-3-large)
tool.create_vector_search_index(dimensions=3072)
```

### تكوين استعلام مخصص وتكامل مع الوكيل

يوضح المثال التالي كيفية توفير تكوين استعلام مخصص لـ `MongoDBVectorSearchTool`
ودمجها مع وكيل CrewAI:

```python Code theme={null}
from crewai_tools import MongoDBVectorSearchConfig, MongoDBVectorSearchTool

query_config = MongoDBVectorSearchConfig(limit=10, oversampling_factor=2)
tool = MongoDBVectorSearchTool(
    database_name="example_database",
    collection_name="example_collection",
    connection_string="<your_mongodb_connection_string>",
    query_config=query_config,
    vector_index_name="my_vector_index",
)

rag_agent = Agent(
    name="rag_agent",
    role="You are a helpful assistant that can answer questions with the help of the MongoDBVectorSearchTool.",
    goal="...",
    backstory="...",
    tools=[tool],
)
```

### تشغيل سير عمل CrewAI

يوضح المثال التالي كيفية دمج `MongoDBVectorSearchTool` مع Agent و Task و Crew
لإنشاء وتشغيل سير عمل RAG قائم على الوكلاء في CrewAI:

```python Code theme={null}
from crewai import Agent, Task, Crew
from crewai_tools import MongoDBVectorSearchTool

tool = MongoDBVectorSearchTool(
    connection_string="mongodb+srv://...",
    database_name="mydb",
    collection_name="docs",
)

agent = Agent(
    role="RAG Agent",
    goal="Answer using MongoDB vector search",
    backstory="Knowledge retrieval specialist",
    tools=[tool],
    verbose=True,
)

task = Task(
    description="Find relevant content for 'indexing guidance'",
    expected_output="A concise answer citing the most relevant matches",
    agent=agent,
)

crew = Crew(
    agents=[agent],
    tasks=[task],
    verbose=True,
)

result = crew.kickoff()
```

## لمعرفة المزيد

لمعرفة المزيد حول تكاملات CrewAI مع MongoDB، راجع أدلة MongoDB التالية:

* [دمج MongoDB مع CrewAI](https://www.mongodb.com/docs/atlas/ai-integrations/crewai/)
* [بناء تطبيق RAG قائم على الوكلاء باستخدام CrewAI و MongoDB](https://www.mongodb.com/docs/atlas/ai-integrations/crewai/build-agents/)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.