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
и поместить туда свой ключ API HuggingFace. Файл должен выглядеть так:
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 для конечной точки API Nvidia NIM можно получить по адресу 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}
}