Local GenAI Search هو محرك البحث المحلي الخاص بك استنادًا إلى طراز Llama3 الذي يمكن تشغيله محليًا على كمبيوتر محمول أو كمبيوتر بسعة 32 جيجابايت (تم تطويره باستخدام MacBookPro M2 مع ذاكرة وصول عشوائي بسعة 32 جيجابايت).
الهدف الرئيسي للمشروع هو أنه يتيح للمستخدم طرح أسئلة حول محتوى ملفاته المحلية، والتي يجيب عليها بطريقة موجزة مع الإشارة إلى المستندات ذات الصلة التي يمكن فتحها بعد ذلك.
يستخدم المحرك تضمينات MS MARCO للبحث الدلالي، مع تمرير أهم المستندات إلى نموذج Llama 3.
افتراضيًا، سيعمل مع NVIDIA API، ويستخدم نموذج Llama 3 للمعلمة 70B. ومع ذلك، إذا استخدمت جميع أرصدة NVIDIA API الخاصة بك أو لا تريد استخدام API للبحث في مستنداتك المحلية، فيمكن أيضًا تشغيلها محليًا، باستخدام نموذج المعلمة 8B.
من أجل تشغيل بحث الذكاء الاصطناعي التوليدي المحلي الخاص بك (نظرًا لأن لديك ما يكفي من آلة السلسلة لتشغيل Llama3)، تحتاج إلى تنزيل المستودع:
git clone https://github.com/nikolamilosevic86/local-gen-search.git
سوف تحتاج إلى تثبيت جميع المتطلبات:
pip install -r requirements.txt
تحتاج إلى إنشاء ملف يسمى environment_var.py
، ووضع مفتاح HuggingFace API هناك. يجب أن يبدو الملف هكذا:
import os
hf_token = "hf_you_api_key"
nvidia_key = "nvapi-your_nvidia_nim_api_key"
يمكن استرداد مفتاح واجهة برمجة التطبيقات لـ HuggingFace على https://huggingface.co/settings/tokens
. لتشغيل المكون التوليدي، تحتاج إلى طلب الوصول إلى نموذج Llama3 على https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct
يمكن استرداد مفتاح API لـ Nvidia NIM API Endpoint على https://build.nvidia.com/explore/discover
الخطوة التالية هي فهرسة المجلد ومجلداته الفرعية التي تحتوي على المستندات التي ترغب في البحث فيها. يمكنك القيام بذلك باستخدام ملف index.py
. يجري
python index.py path/to/folder
على سبيل المثال، يمكنك تشغيله باستخدام TestFolder المقدم:
python index.py TestFolder
سيؤدي هذا إلى إنشاء فهرس عميل qdrant محليًا وفهرسة جميع الملفات الموجودة في هذا المجلد ومجلداته الفرعية ذات الامتدادات .pdf
و .txt
و .docx
و .pptx
ستكون الخطوة التالية هي تشغيل خدمة البحث التوليدية. لهذا يمكنك تشغيل:
python uvicorn_start.py
سيؤدي هذا إلى تشغيل خادم محلي، يمكنك الاستعلام عنه باستخدام ساعي البريد، أو إرسال طلبات POST. تحميل النماذج (بما في ذلك التنزيل من Huggingface، قد يستغرق بضع دقائق، خاصة لأول مرة). هناك واجهتان:
http://127.0.0.1:8000/search
http://127.0.0.1:8000/ask_localai
تحتاج كلا الواجهتين إلى نص بتنسيق:
{"query":"What are knowledge graphs?"}
ورؤوس القبول وتعيين نوع المحتوى على application/json
.
فيما يلي مثال على الكود:
import requests
import json
url = "http://127.0.0.1:8000/ask_localai"
payload = json . dumps ({
"query" : "What are knowledge graphs?"
})
headers = {
'Accept' : 'application/json' ,
'Content-Type' : 'application/json'
}
response = requests . request ( "POST" , url , headers = headers , data = payload )
print ( response . text )
وأخيرًا، يمكن بدء تشغيل واجهة المستخدم المبسطة بالطريقة التالية:
streamlit run user_interface.py
يمكنك الآن استخدام واجهة المستخدم وطرح الأسئلة التي سيتم الرد عليها بناءً على الملفات الموجودة في نظام الملفات لديك.
إذا كنت تريد الاطلاع على مزيد من التفاصيل حول تطوير هذه الأداة، يمكنك قراءة كيفية إنشاء محرك بحث توليدي لملفاتك المحلية باستخدام Llama 3 | نحو علم البيانات
كما يمكنك مراجعة الأوراق التالية:
@article{kovsprdic2024verif,
title={Verif.ai: Towards an Open-Source Scientific Generative Question-Answering System with Referenced and Verifiable Answers},
author={Ko{v{s}}prdi{'c}, Milo{v{s}} and Ljaji{'c}, Adela and Ba{v{s}}aragin, Bojana and Medvecki, Darija and Milo{v{s}}evi{'c}, Nikola},
journal={arXiv preprint arXiv:2402.18589},
year={2024}
}