أداة البحث المتجهي في MongoDB
MongoDBVectorSearchTool
Section titled “MongoDBVectorSearchTool”تنفيذ استعلامات التشابه المتجهي على مجموعات MongoDB Atlas. تدعم أدوات مساعدة لإنشاء الفهارس وإدراج النصوص المضمنة بكميات كبيرة.
يدعم MongoDB Atlas البحث المتجهي الأصلي. اعرف المزيد: https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-overview/
التثبيت
Section titled “التثبيت”قم بالتثبيت مع إضافة MongoDB:
pip install crewai-tools[mongodb]أو
uv add crewai-tools --extra mongodbالمعاملات
Section titled “المعاملات”التهيئة
Section titled “التهيئة”connection_string(str, مطلوب)database_name(str, مطلوب)collection_name(str, مطلوب)vector_index_name(str, الافتراضيvector_index)text_key(str, الافتراضيtext)embedding_key(str, الافتراضيembedding)dimensions(int, الافتراضي1536)
معاملات التشغيل
Section titled “معاملات التشغيل”query(str, مطلوب): استعلام بلغة طبيعية لتضمينه والبحث عنه.
بداية سريعة
Section titled “بداية سريعة”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"))أدوات مساعدة لإنشاء الفهارس
Section titled “أدوات مساعدة لإنشاء الفهارس”استخدم create_vector_search_index(...) لإنشاء فهرس بحث متجهي في Atlas بالأبعاد والتشابه الصحيحين.
المشكلات الشائعة
Section titled “المشكلات الشائعة”- فشل المصادقة: تأكد من أن قائمة الوصول إلى عناوين IP في Atlas تسمح بخادمك وأن سلسلة الاتصال تتضمن بيانات الاعتماد.
- الفهرس غير موجود: أنشئ الفهرس المتجهي أولاً؛ يجب أن يتطابق الاسم مع
vector_index_name. - عدم تطابق الأبعاد: قم بمحاذاة أبعاد نموذج التضمين مع
dimensions.
أمثلة إضافية
Section titled “أمثلة إضافية”التهيئة الأساسية
Section titled “التهيئة الأساسية”from crewai_tools import MongoDBVectorSearchTool
tool = MongoDBVectorSearchTool( database_name="example_database", collection_name="example_collection", connection_string="<your_mongodb_connection_string>",)تكوين استعلام مخصص
Section titled “تكوين استعلام مخصص”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],)تحميل قاعدة البيانات مسبقاً وإنشاء الفهرس
Section titled “تحميل قاعدة البيانات مسبقاً وإنشاء الفهرس”import osfrom crewai_tools import MongoDBVectorSearchTool
tool = MongoDBVectorSearchTool( database_name="example_database", collection_name="example_collection", connection_string="<your_mongodb_connection_string>",)
# Load text content from a local folder and add to MongoDBtexts = []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 Atlas Vector Search index (e.g., 3072 dims for text-embedding-3-large)tool.create_vector_search_index(dimensions=3072)from crewai import Agent, Task, Crewfrom 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()