مخازن المتجهات: Chroma وFAISS
إنشاء مخازن المتجهات وحفظها، والبحث عن التشابه، والاسترجاع باستخدام MMR، والبحث الهجين
مخازن المتجهات: Chroma وFAISS درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
ما هو مخزن المتجهات؟
يحتفظ مخزن المتجهات بالمقاطع المضمَّنة، ويعثر على أكثرها تشابهاً مع متجه الاستعلام. وهو محرك البحث الذي يشكل جوهر RAG. ومن الخيارات الشائعة Chroma وFAISS.
pip install langchain-chroma faiss-cpuإنشاء مخزن Chroma
تضمّن Chroma.from_documents مقاطعكم وتفهرسها في استدعاء واحد. مرّروا المستندات وكائن التضمينات، فتعيد Chroma مخزناً يمكنكم البحث فيه فوراً.
from langchain_chroma import Chroma
from langchain_openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
db = Chroma.from_documents(chunks, embeddings)حفظ Chroma على القرص
مرّروا persist_directory لحفظ الفهرس على القرص بحيث يظل موجوداً بعد إعادة التشغيل. ويمكنكم إعادة تحميله لاحقاً بإنشاء Chroma باستخدام الدليل والتضمينات نفسيهما، مما يتجنب تكلفة إعادة التضمين.
db = Chroma.from_documents(
chunks, embeddings,
persist_directory="./chroma_db"
)
# Reload later
db = Chroma(persist_directory="./chroma_db", embedding_function=embeddings)البحث عن التشابه
أجروا الاستعلام باستخدام similarity_search(query, k=4). فهي تضمّن الاستعلام، وتعثر على أقرب k مقاطع، ثم تعيدها في صورة Documents. وتتحكم k في عدد المقاطع التي تسترجعونها.
results = db.similarity_search("How do I reset my password?", k=4)
for doc in results:
print(doc.page_content[:80])الدرجات مع البحث
استخدموا similarity_search_with_score للحصول أيضاً على درجة مسافة لكل نتيجة. وتعني المسافة الأقل تشابهاً أكبر. وتساعدكم الدرجات على تصفية المطابقات الضعيفة قبل إرسالها إلى LLM.
pairs = db.similarity_search_with_score("password reset", k=4)
for doc, score in pairs:
print(round(score, 3), doc.page_content[:60])التعريف بـ FAISS
تُعد FAISS (Facebook AI Similarity Search) مكتبة عالية الأداء للبحث المتجهي. وهي سريعة جداً وفعالة في استهلاك الذاكرة، ما يجعلها مثالية للفهارس المحلية الكبيرة من دون خادم منفصل.
إنشاء مخزن FAISS
تشبه واجهة API واجهة Chroma: إذ ينشئ FAISS.from_documents الفهرس. ويحتفظ FAISS بالفهرس في الذاكرة، لذا فهو مناسب جداً للبحث داخل العملية الذي تكثر فيه عمليات القراءة.
from langchain_community.vectorstores import FAISS
db = FAISS.from_documents(chunks, embeddings)
results = db.similarity_search("refund policy", k=3)حفظ FAISS وتحميله
احفظوا فهرس FAISS باستخدام save_local وأعيدوا تحميله باستخدام load_local. ويتطلب إعادة التحميل allow_dangerous_deserialization=True لأن الفهرس يستخدم pickle.
db.save_local("faiss_index")
db = FAISS.load_local(
"faiss_index", embeddings,
allow_dangerous_deserialization=True
)الصلة مقابل التنوع
قد يعيد البحث بالتشابه العادي أربعة مقاطع متطابقة تقريباً. وأحياناً تحتاجون إلى نتائج متنوعة تغطي جوانب مختلفة من الإجابة. وهنا يأتي دور MMR.
الاسترجاع باستخدام MMR
يوازن Maximal Marginal Relevance (MMR) بين الصلة والتنوع، فيختار مقاطع ذات صلة وغير متكررة. استخدموا search_type="mmr" عبر واجهة أداة الاسترجاع.
retriever = db.as_retriever(
search_type="mmr",
search_kwargs={"k": 4, "fetch_k": 20}
)
docs = retriever.invoke("password reset")اختيار Chroma أو FAISS
تتميز Chroma بسهولة الاستخدام واستمرارية التخزين، وتناسب النماذج الأولية والتطبيقات الصغيرة. أما FAISS فأسرع عند التوسع ومثالي للبحث داخل الذاكرة. وتوفر كلتاهما similarity_search وas_retriever، لذا فإن التبديل بينهما سهل.
تحقق سريع
اختبروا معرفتكم بمخازن المتجهات.
مراجعة: Chroma وFAISS
أنشأتم مخازن متجهات باستخدام Chroma.from_documents (مع persist_directory) وFAISS.from_documents، وأجريتم البحث باستخدام similarity_search(query, k=4)، وحفظتم كليهما وحمّلتموهما. واستخدمتم as_retriever مع MMR للحصول على نتائج متنوعة، وتعلمتم متى تختارون كل مخزن.
الأسئلة الشائعة
هل درس «مخازن المتجهات: Chroma وFAISS» مجاني؟
نعم — نص درس «مخازن المتجهات: Chroma وFAISS» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
ماذا ستتعلم في «مخازن المتجهات: Chroma وFAISS»؟
إنشاء مخازن المتجهات وحفظها، والبحث عن التشابه، والاسترجاع باستخدام MMR، والبحث الهجين تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟
لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «مخازن المتجهات: Chroma وFAISS»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟
نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- بنية LangChain وLCEL
- تحميل المستندات وتقسيمها وتضمينها
- مخازن المتجهات: Chroma وFAISS
- بناء نظام أسئلة وأجوبة بتقنية RAG من البداية إلى النهاية