Milvus
Zilliz
  • Home
  • Blog
  • LangChain 1.0 وMilvus: كيفية بناء وكلاء جاهزين للإنتاج بذاكرة حقيقية طويلة المدى

LangChain 1.0 وMilvus: كيفية بناء وكلاء جاهزين للإنتاج بذاكرة حقيقية طويلة المدى

  • Tutorials
December 19, 2025
Min Yin

LangChain هو إطار عمل شائع مفتوح المصدر لتطوير تطبيقات مدعومة بنماذج لغوية كبيرة (LLMs). وهو يوفر مجموعة أدوات معيارية لبناء عوامل الاستدلال واستخدام الأدوات، وربط النماذج بالبيانات الخارجية، وإدارة تدفقات التفاعل.

وبإصدار الإصدار 1.0 من LangChain 1.0، يخطو إطار العمل خطوة نحو بنية أكثر ملاءمة للإنتاج. يستبدل الإصدار الجديد التصميم السابق المستند إلى السلسلة بحلقة ReAct الموحدة (الاستدلال ← استدعاء الأداة ← المراقبة ← اتخاذ القرار) ويقدم البرمجيات الوسيطة لإدارة التنفيذ والتحكم والسلامة.

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

في هذا المنشور، سنستكشف في هذا المنشور كيف يقوم LangChain 1.0 بتحديث بنية الوكيل، وكيف يساعد دمج Milvus الوكلاء على تجاوز مرحلة التفكير المنطقي - مما يتيح ذاكرة ذكية ومستمرة لحالات الاستخدام في العالم الحقيقي.

لماذا يقصر التصميم القائم على السلسلة

في أيامها الأولى (الإصدار 0.x)، تمحورت بنية LangChain حول السلاسل. كانت كل سلسلة تُعرّف تسلسلًا ثابتًا وتأتي مع قوالب معدة مسبقًا تجعل تنسيق LLM بسيطًا وسريعًا. كان هذا التصميم رائعًا لبناء النماذج الأولية بسرعة. ولكن مع تطور نظام LLM البيئي وتزايد تعقيد حالات الاستخدام في العالم الحقيقي، بدأت تظهر التصدعات في هذه البنية.

1. عدم المرونة

وفرت الإصدارات المبكرة من LangChain خطوط أنابيب معيارية مثل SimpleSequentialChain أو LLMChain، حيث يتبع كل منها تدفقًا خطيًا ثابتًا - إنشاء الموجة ← استدعاء النموذج ← معالجة الإخراج. عمل هذا التصميم بشكل جيد للمهام البسيطة والمتوقعة وجعل من السهل وضع نموذج أولي سريع.

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

2. عدم وجود تحكم على مستوى الإنتاج

ما كان يعمل بشكل جيد في العروض التوضيحية غالبًا ما يتعطل في الإنتاج. لم تتضمن السلاسل الضمانات اللازمة للتطبيقات واسعة النطاق أو المستمرة أو الحساسة. تضمنت المشكلات الشائعة ما يلي:

  • تجاوز السياق: يمكن أن تتجاوز المحادثات الطويلة حدود الرمز المميز، مما يتسبب في حدوث أعطال أو اقتطاع صامت.

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

  • عمليات غير خاضعة للإشراف: قد يقوم الوكلاء بحذف البيانات أو إرسال بريد إلكتروني دون موافقة بشرية.

3. عدم التوافق عبر النماذج

يطبّق كل مزوّد خدمة LLM - OpenAI و Anthropic والعديد من النماذج الصينية - بروتوكولاته الخاصة للاستدلال واستدعاء الأدوات. في كل مرة تقوم فيها بتبديل الموفرين، كان عليك إعادة كتابة طبقة التكامل: قوالب المطالبة والمهايئات ومحللي الاستجابة. أدى هذا العمل المتكرر إلى إبطاء التطوير وجعل التجربة مؤلمة.

سلسلة اللغات 1.0: وكيل ReAct الكل في الكل

عندما قام فريق LangChain بتحليل المئات من تطبيقات الوكلاء على مستوى الإنتاج، برزت فكرة واحدة: جميع الوكلاء الناجحين تقريبًا يتقاربون بشكل طبيعي مع نمط ReAct ("التفكير + التمثيل").

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

وللبناء على هذه البنية المثبتة، تضع LangChain 1.0 حلقة ReAct في صميم بنيتها، مما يجعلها البنية الافتراضية لبناء وكلاء موثوقين وقابلين للتفسير وجاهزين للإنتاج.

ولدعم كل شيء بدءًا من الوكلاء البسيطين إلى عمليات التنسيق المعقدة، يتبنى LangChain 1.0 تصميمًا متعدد الطبقات يجمع بين سهولة الاستخدام والتحكم الدقيق:

  • السيناريوهات القياسية: ابدأ بالدالة create_agent() - وهي حلقة ReAct نظيفة وموحدة تتعامل مع الاستدعاءات المنطقية واستدعاءات الأدوات خارج الصندوق.

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

  • سيناريوهات معقدة: بالنسبة لتدفقات العمل ذات الحالة أو التنسيق متعدد العوامل، استخدم LangGraph، وهو محرك تنفيذ قائم على الرسم البياني يوفر تحكمًا دقيقًا في التدفق المنطقي والتبعيات وحالات التنفيذ.

والآن دعونا نفصل المكونات الرئيسية الثلاثة التي تجعل تطوير الوكيل أبسط وأكثر أمانًا واتساقًا عبر النماذج.

1. إنشاء_الوكيل(): طريقة أبسط لبناء الوكلاء

أحد الإنجازات الرئيسية في LangChain 1.0 هو كيفية تقليل تعقيد بناء الوكلاء إلى دالة واحدة - create_agent(). لم تعد بحاجة إلى التعامل يدويًا مع إدارة الحالة أو معالجة الأخطاء أو تدفق المخرجات. هذه الميزات على مستوى الإنتاج تُدار الآن تلقائيًا بواسطة وقت تشغيل LangGraph الموجود تحتها.

بثلاث معلمات فقط، يمكنك تشغيل وكيل يعمل بكامل طاقته:

  • النموذج - إما مُعرِّف نموذج (سلسلة) أو كائن نموذج مُثبَّت.

  • الأدوات - قائمة بالوظائف التي تمنح الوكيل قدراته.

  • system_prompt - التعليمات التي تحدد دور الوكيل ونبرته وسلوكه.

تحت الغطاء، تعمل عملية إنشاء_وكيل() على حلقة الوكيل القياسية - استدعاء نموذج، والسماح له باختيار الأدوات للتنفيذ، والانتهاء بمجرد عدم الحاجة إلى المزيد من الأدوات:

كما أنه يرث أيضًا قدرات LangGraph المدمجة لاستمرارية الحالة واستعادة الانقطاع والتدفق. المهام التي كانت تستغرق مئات الأسطر من التعليمات البرمجية للتنسيق يتم التعامل معها الآن من خلال واجهة برمجة تطبيقات واحدة توضيحية.

from langchain.agents import create_agent
agent = create_agent(
    model="openai:gpt-4o",
    tools=[get_weather, query_database],
    system_prompt="You are a customer service assistant who helps users check the weather and order information."
)
result = agent.invoke({
    "messages": [{"role": "user", "content": "What’s the weather like in Shanghai today?"}]
})

2. البرمجيات الوسيطة: طبقة قابلة للتركيب للتحكم الجاهز للإنتاج

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

تتبع الحلقة الرئيسية للوكيل عملية قرار من ثلاث خطوات - النموذج ← الأداة ← الإنهاء:

يوفر LangChain 1.0 بعض البرامج الوسيطة المعدة مسبقًا للأنماط الشائعة. فيما يلي أربعة أمثلة.

  • كشف PII: أي تطبيق يتعامل مع بيانات المستخدم الحساسة
from langchain.agents import create_agent
from langchain.agents.middleware import PIIMiddleware

agent = create_agent( model=“gpt-4o”, tools=[], # Add tools as needed middleware=[ # Redact emails in user input PIIMiddleware(“email”, strategy=“redact”, apply_to_input=True), # Mask credit cards (show last 4 digits) PIIMiddleware(“credit_card”, strategy=“mask”, apply_to_input=True), # Custom PII type with regex PIIMiddleware( “api_key”, detector=r"sk-[a-zA-Z0-9]{32}", strategy=“block”, # Raise error if detected ), ], )

  • التلخيص: تلخيص سجل المحادثة تلقائيًا عند الاقتراب من حدود الرمز المميز.
from langchain.agents import create_agent
from langchain.agents.middleware import SummarizationMiddleware

agent = create_agent( model=“gpt-4o”, tools=[weather_tool, calculator_tool], middleware=[ SummarizationMiddleware( model=“gpt-4o-mini”, #Summarize using a cheaper model max_tokens_before_summary=4000, # Trigger summarization at 4000 tokens messages_to_keep=20, # Keep last 20 messages after summary ), ], )

  • إعادة محاولة الأداة: إعادة محاولة مكالمات الأداة الفاشلة تلقائياً مع إمكانية تكوينها بشكل أسي قابل للتكوين.
from langchain.agents import create_agent
from langchain.agents.middleware import ToolRetryMiddleware
agent = create_agent(
    model="gpt-4o",
    tools=[search_tool, database_tool],
    middleware=[
        ToolRetryMiddleware(
            max_retries=3,  # Retry up to 3 times
            backoff_factor=2.0,  # Exponential backoff multiplier
            initial_delay=1.0,  # Start with 1 second delay
            max_delay=60.0,  # Cap delays at 60 seconds
            jitter=True,  # Add random jitter to avoid thundering herd (±25%)
    ),
],

)

  • البرمجيات الوسيطة المخصصة

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

على سبيل المثال، يوضح المقتطف أدناه كيفية تسجيل استدعاءات النموذج قبل التنفيذ:

from langchain.agents.middleware import before_model
from langchain.agents.middleware import AgentState
from langgraph.runtime import Runtime
@before_model
def log_before_model(state: AgentState, runtime: Runtime) -> dict | None:
    print(f"About to call model with {len(state['messages'])} messages")
    return None  # Returning None means the normal flow continues
agent = create_agent(
    model="openai:gpt-4o",
    tools=[...],
    middleware=[log_before_model],
)

3. الإخراج المهيكل: طريقة موحدة للتعامل مع البيانات

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

في LangChain 1.0، يتم التعامل مع الإخراج المهيكل مباشرةً من خلال معلمة_تنسيق_الاستجابة في create_agent(). تحتاج فقط إلى تحديد مخطط بياناتك مرة واحدة. تقوم LangChain تلقائيًا باختيار أفضل استراتيجية تنفيذ تلقائيًا بناءً على النموذج الذي تستخدمه - لا حاجة إلى إعداد إضافي أو رمز خاص بالبائع.

from langchain.agents import create_agent
from pydantic import BaseModel, Field
class WeatherReport(BaseModel):
    location: str = Field(description="City name")
    temperature: float = Field(description="Temperature (°C)")
    condition: str = Field(description="Weather condition")
agent = create_agent(
    model="openai:gpt-4o",
    tools=[get_weather],
    response_format=WeatherReport  # Use the Pydantic model as the response schema
)
result = agent.invoke({"role": "user", "content": "What’s the weather like in Shanghai today??"})
weather_data = result['structured_response']  # Retrieve the structured response
print(f"{weather_data.location}: {weather_data.temperature}°C, {weather_data.condition}")

تدعم LangChain استراتيجيتين للإخراج المنظم:

1. استراتيجية الموفر: يدعم بعض مزودي النماذج الإخراج المنظم أصلاً من خلال واجهات برمجة التطبيقات الخاصة بهم (مثل OpenAI و Grok). عندما يتوفر مثل هذا الدعم، تستخدم LangChain تطبيق المخطط المدمج الخاص بالمزود مباشرةً. يوفر هذا النهج أعلى مستوى من الموثوقية والاتساق، لأن النموذج نفسه يضمن تنسيق الإخراج.

2. استراتيجية استدعاء الأداة: بالنسبة للنماذج التي لا تدعم الإخراج المهيكل الأصلي، تستخدم LangChain استراتيجية استدعاء الأداة لتحقيق نفس النتيجة.

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

كيف يعزز ميلفوس ذاكرة الوكيل

بالنسبة للوكلاء على مستوى الإنتاج، لا يكون عنق الزجاجة الحقيقي في الأداء في كثير من الأحيان هو محرك التفكير - بل نظام الذاكرة. في LangChain 1.0، تعمل قواعد البيانات المتجهة في نظام LangChain 1.0 بمثابة ذاكرة خارجية للوكيل، مما يوفر استدعاءً طويل المدى من خلال الاسترجاع الدلالي.

تُعدMilvus واحدة من أكثر قواعد البيانات المتجهة مفتوحة المصدر المتاحة اليوم نضجًا، وهي مصممة خصيصًا للبحث المتجه على نطاق واسع في تطبيقات الذكاء الاصطناعي. وهي تتكامل بشكل أصلي مع LangChain، لذا لن تضطر إلى التعامل يدويًا مع عملية تحويل المتجهات أو إدارة الفهرس أو البحث عن التشابه. تقوم حزمة langchain_milvus بتغليف Milvus كواجهة VectorStore قياسية، مما يسمح لك بتوصيلها بالوكلاء الخاصين بك ببضعة أسطر من التعليمات البرمجية.

من خلال القيام بذلك، يعالج Milvus ثلاثة تحديات رئيسية في بناء أنظمة ذاكرة وكلاء قابلة للتطوير وموثوقة:

1. الاسترجاع السريع من قواعد المعرفة الضخمة

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

from langchain.agents import create_agent
from langchain_milvus import Milvus
from langchain_openai import OpenAIEmbeddings
# Initialize the vector database as a knowledge base
vectorstore = Milvus(
    embedding=OpenAIEmbeddings(),  
    collection_name="company_knowledge",
    connection_args={"uri": "http://localhost:19530"}  #
)
# Convert the retriever into a Tool for the Agent
agent = create_agent(
    model="openai:gpt-4o",
    tools=[vectorstore.as_retriever().as_tool(
        name="knowledge_search",
        description="Search the company knowledge base to answer professional questions"
    )],
    system_prompt="You can retrieve information from the knowledge base to answer questions."
)

2. الذاكرة المستمرة طويلة المدى

يمكن لبرنامج LangChain's SummarizationMiddleware الخاص بـ LangChain تلخيص تاريخ المحادثة عندما يطول كثيرًا، ولكن ماذا يحدث لجميع التفاصيل التي يتم تلخيصها؟ يحتفظ بها ميلفوس. يمكن تلخيص كل محادثة ومكالمة أداة وخطوة تفكير وتخزينها للرجوع إليها على المدى الطويل. عند الحاجة، يمكن للوكيل استرجاع الذكريات ذات الصلة بسرعة من خلال البحث الدلالي، مما يتيح الاستمرارية الحقيقية عبر الجلسات.

from langchain_milvus import Milvus
from langchain.agents import create_agent
from langchain.agents.middleware import SummarizationMiddleware
from langgraph.checkpoint.memory import InMemorySaver
# Long-term memory storage(Milvus)
long_term_memory = Milvus.from_documents(
    documents=[],  # Initially empty; dynamically updated at runtime
    embedding=OpenAIEmbeddings(),
    connection_args={"uri": "./agent_memory.db"}
)
# Short-term memory management(LangGraph Checkpointer + Summarization)
agent = create_agent(
    model="openai:gpt-4o",
    tools=[long_term_memory.as_retriever().as_tool(
        name="recall_memory",
        description="Retrieve the agent’s historical memories and past experiences"
    )],
    checkpointer=InMemorySaver(),  # Short-term memory
    middleware=[
        SummarizationMiddleware(
            model="openai:gpt-4o-mini",
            max_tokens_before_summary=4000  # When the threshold is exceeded, summarize and store it in Milvus
        )
    ]
)

3. الإدارة الموحدة للمحتوى متعدد الوسائط

يتعامل الوكلاء الحديثون مع أكثر من مجرد نصوص - فهم يتفاعلون مع الصور والصوت والفيديو. يدعم Milvus التخزين متعدد النواقل والمخطط الديناميكي، مما يسمح لك بإدارة التضمينات من طرائق متعددة في نظام واحد. يوفر هذا أساسًا موحدًا للذاكرة للوكلاء متعددي الوسائط، مما يتيح استرجاعًا متسقًا عبر أنواع مختلفة من البيانات.

# Filter retrievals by source (e.g., search only medical reports)
vectorstore.similarity_search(
    query="What is the patient's blood pressure reading?",
    k=3,
    expr="source == 'medical_reports' AND modality == 'text'"  # Milvus scalar filtering
)

LangChain مقابل LangGraph: كيفية اختيار النظام الذي يناسب وكلاءك

تُعد الترقية إلى الإصدار 1.0 من LangChain خطوة أساسية نحو بناء وكلاء على مستوى الإنتاج - ولكن هذا لا يعني أنه الخيار الوحيد أو الأفضل دائمًا لكل حالة استخدام. يحدد اختيار إطار العمل المناسب مدى سرعة دمج هذه الإمكانيات في نظام عامل وقابل للصيانة.

في الواقع، يمكن النظر إلى LangChain 1.0 وLangGraph 1.0 كجزء من نفس المكدس متعدد الطبقات، مصممين للعمل معًا بدلًا من استبدال أحدهما الآخر: يساعدك LangChain على بناء وكلاء قياسيين بسرعة، بينما يمنحك LangGraph تحكمًا دقيقًا في سير العمل المعقد. بعبارة أخرى، يساعدك LangChain على التحرك بسرعة، بينما يساعدك LangGraph على التعمق.

فيما يلي مقارنة سريعة لكيفية اختلافهما في التموضع التقني:

البعدسلسلة اللغات 1.0سلسلة اللغات 1.0
مستوى التجريدتجريد عالي المستوى، مصمم لسيناريوهات الوكيل القياسيةإطار عمل تزامن منخفض المستوى، مصمم لسير العمل المعقد
القدرة الأساسيةحلقة ReAct القياسية (السبب ← استدعاء الأداة ← المراقبة ← الاستجابة)آلات الحالة المخصصة ومنطق التفرع المعقد (مخطط الحالة + التوجيه الشرطي)
آلية التمديدالبرمجيات الوسيطة للقدرات على مستوى الإنتاجالإدارة اليدوية للعقد، والحواف، وانتقالات الحالة
التنفيذ الأساسيالإدارة اليدوية للعقد والحواف وانتقالات الحالةوقت تشغيل أصلي مع مثابرة واسترداد مدمجة
حالات الاستخدام النموذجية80% من سيناريوهات الوكيل القياسيةالتعاون متعدد الوكلاء وتنسيق سير العمل طويل الأمد
منحنى التعلمبناء وكيل في حوالي 10 أسطر من التعليمات البرمجيةيتطلب فهم المخططات البيانية للحالة وتنسيق العقدة

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

يمكن أن يتعايش كلا الإطارين في نفس المشروع - يمكنك البدء باستخدام LangChain بشكل بسيط ثم استخدام LangGraph عندما يحتاج نظامك إلى مزيد من التحكم والمرونة. المفتاح هو اختيار الأداة المناسبة لكل جزء من سير عملك.

الخلاصة

قبل ثلاث سنوات، بدأت LangChain قبل ثلاث سنوات كغلاف خفيف الوزن لاستدعاء LLMs. أما اليوم، فقد تطورت لتصبح إطار عمل متكامل على مستوى الإنتاج.

في الأساس، توفر طبقات البرمجيات الوسيطة السلامة والامتثال وإمكانية المراقبة. ويضيف LangGraph التنفيذ المستمر، وتدفق التحكم، وإدارة الحالة. وفي طبقة الذاكرة، يسدّ ميلفوس فجوة حرجة - توفير ذاكرة طويلة الأجل قابلة للتطوير وموثوقة تسمح للوكلاء باسترجاع السياق والاستدلال على التاريخ والتحسين بمرور الوقت.

وتشكل كل من LangChain وLangGraph وMilvus معًا سلسلة أدوات عملية لعصر الوكلاء الحديث - تربط بين النماذج الأولية السريعة والنشر على نطاق المؤسسة، دون التضحية بالموثوقية أو الأداء.

🚀 هل أنت مستعد لمنح وكيلك ذاكرة موثوقة طويلة الأمد؟ استكشف Milvus وشاهد كيف يعمل على تشغيل ذاكرة ذكية طويلة المدى لوكلاء LangChain في الإنتاج.

هل لديك أسئلة أو تريد التعمق في أي ميزة؟ انضم إلى قناة Discord الخاصة بنا أو قم بتسجيل المشكلات على GitHub. يمكنك أيضًا حجز جلسة فردية مدتها 20 دقيقة للحصول على رؤى وإرشادات وإجابات لأسئلتك من خلال ساعات عمل Milvus المكتبية.

    Try Managed Milvus for Free

    Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

    Get Started

    Like the article? Spread the word

    استمر في القراءة