Local GenAI Search เป็นเครื่องมือค้นหาทั่วไปในท้องถิ่นของคุณซึ่งใช้โมเดล Llama3 ที่สามารถเรียกใช้ในเครื่องแล็ปท็อปหรือคอมพิวเตอร์ขนาด 32GB (พัฒนาด้วย MacBookPro M2 พร้อม RAM ขนาด 32BG)
เป้าหมายหลักของโครงการคือการช่วยให้ผู้ใช้ถามคำถามเกี่ยวกับเนื้อหาของไฟล์ในเครื่องของตน ซึ่งจะตอบในลักษณะที่กระชับโดยอ้างอิงเอกสารที่เกี่ยวข้องซึ่งสามารถเปิดได้
เอ็นจิ้นใช้การฝัง MS MARCO สำหรับการค้นหาเชิงความหมาย โดยเอกสารยอดนิยมจะถูกส่งไปยังโมเดล Llama 3
โดยค่าเริ่มต้น มันจะทำงานกับ NVIDIA API และใช้พารามิเตอร์ 70B โมเดล Llama 3 อย่างไรก็ตาม หากคุณใช้เครดิต NVIDIA API ทั้งหมดหรือไม่ต้องการใช้ API เพื่อค้นหาเอกสารในเครื่องของคุณ API ก็สามารถทำงานภายในเครื่องได้โดยใช้โมเดลพารามิเตอร์ 8B
ในการรัน Local Generative AI Search ของคุณ (เนื่องจากคุณมีเครื่องสตริงเพียงพอที่จะรัน 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"
สามารถดึงคีย์ API สำหรับ 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?"}
และส่วนหัวสำหรับ Accept และ Content-Type ตั้งค่าเป็น 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 สามารถเริ่มต้นได้ด้วยวิธีต่อไปนี้:
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}
}