Local GenAI Search é o seu mecanismo de pesquisa generativo local baseado no modelo Llama3 que pode ser executado localmente em um laptop ou computador de 32 GB (desenvolvido com MacBookPro M2 com 32 GB de RAM).
O principal objetivo do projeto é permitir ao usuário fazer perguntas sobre o conteúdo de seus arquivos locais, às quais responde de forma concisa com referência a documentos relevantes que podem ser abertos.
O mecanismo está usando embeddings MS MARCO para pesquisa semântica, com os principais documentos sendo passados para o modelo Llama 3.
Por padrão, ele funcionaria com API NVIDIA e usaria o modelo Llama 3 de parâmetro 70B. No entanto, se você usou todos os seus créditos da API NVIDIA ou não deseja usar a API para pesquisar seus documentos locais, ela também pode ser executada localmente, usando o modelo de parâmetros 8B.
Para executar sua Pesquisa Generativa de IA Local (desde que você tenha uma máquina de string suficiente para executar o Llama3), você precisa baixar o repositório:
git clone https://github.com/nikolamilosevic86/local-gen-search.git
Você precisará instalar todos os requisitos:
pip install -r requirements.txt
Você precisa criar um arquivo chamado environment_var.py
e colocar lá sua chave de API HuggingFace. O arquivo deve ficar assim:
import os
hf_token = "hf_you_api_key"
nvidia_key = "nvapi-your_nvidia_nim_api_key"
A chave API para HuggingFace pode ser recuperada em https://huggingface.co/settings/tokens
. Para executar o componente generativo, você precisa solicitar acesso ao modelo Llama3 em https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct
A chave de API para Nvidia NIM API Endpoint pode ser recuperada em https://build.nvidia.com/explore/discover
A próxima etapa é indexar uma pasta e suas subpastas contendo os documentos que você deseja pesquisar. Você pode fazer isso usando o arquivo index.py
. Correr
python index.py path/to/folder
Por exemplo, você pode executá-lo com TestFolder fornecido:
python index.py TestFolder
Isso criará um índice de cliente qdrant localmente e indexará todos os arquivos nesta pasta e suas subpastas com extensões .pdf
, .txt
, .docx
, .pptx
A próxima etapa seria executar o serviço de pesquisa generativa. Para isso você pode executar:
python uvicorn_start.py
Isso iniciará um servidor local, que você pode consultar usando o carteiro ou enviar solicitações POST. O carregamento dos modelos (incluindo o download do Huggingface, pode levar alguns minutos, especialmente pela primeira vez). Existem duas interfaces:
http://127.0.0.1:8000/search
http://127.0.0.1:8000/ask_localai
Ambas as interfaces precisam de corpo em um formato:
{"query":"What are knowledge graphs?"}
e cabeçalhos para Accept e Content-Type definidos como application/json
.
Aqui está um exemplo de código:
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 )
Finalmente, a interface de usuário streamlit pode ser iniciada da seguinte maneira:
streamlit run user_interface.py
Agora você pode usar a interface do usuário e fazer perguntas que serão respondidas com base nos arquivos do seu sistema de arquivos.
Se quiser ver mais detalhes sobre o desenvolvimento desta ferramenta, você pode ler Como construir um mecanismo de pesquisa generativo para seus arquivos locais usando o Llama 3 | Rumo à ciência de dados
Além disso, você pode verificar os seguintes documentos:
@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}
}