Local GenAI Search es su motor de búsqueda generativo local basado en el modelo Llama3 que puede ejecutarse localmente en una computadora portátil o computadora de 32 GB (desarrollada con MacBookPro M2 con 32 GB de RAM).
El objetivo principal del proyecto es permitir al usuario hacer preguntas sobre el contenido de sus archivos locales, que responde de manera concisa haciendo referencia a documentos relevantes que luego se pueden abrir.
El motor utiliza incrustaciones de MS MARCO para la búsqueda semántica, y los documentos principales se pasan al modelo Llama 3.
De forma predeterminada, funcionaría con la API de NVIDIA y utilizaría el modelo Llama 3 con el parámetro 70B. Sin embargo, si utilizó todos sus créditos API de NVIDIA o no desea utilizar la API para buscar documentos locales, también puede ejecutarse localmente, utilizando el modelo de parámetros 8B.
Para ejecutar su búsqueda local de IA generativa (dado que tiene suficiente máquina de cadena para ejecutar Llama3), necesita descargar el repositorio:
git clone https://github.com/nikolamilosevic86/local-gen-search.git
Necesitará instalar todos los requisitos:
pip install -r requirements.txt
Debe crear un archivo llamado environment_var.py
y colocar allí su clave API de HuggingFace. El archivo debería verse así:
import os
hf_token = "hf_you_api_key"
nvidia_key = "nvapi-your_nvidia_nim_api_key"
La clave API para HuggingFace se puede recuperar en https://huggingface.co/settings/tokens
. Para ejecutar el componente generativo, debe solicitar acceso al modelo Llama3 en https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct
La clave API para Nvidia NIM API Endpoint se puede recuperar en https://build.nvidia.com/explore/discover
El siguiente paso es indexar una carpeta y sus subcarpetas que contienen los documentos que desea buscar. Puedes hacerlo usando el archivo index.py
. Correr
python index.py path/to/folder
Como ejemplo, puedes ejecutarlo con TestFolder proporcionado:
python index.py TestFolder
Esto creará un índice de cliente qdrant localmente e indexará todos los archivos en esta carpeta y sus subcarpetas con extensiones .pdf
, .txt
, .docx
, .pptx
El siguiente paso sería ejecutar el servicio de búsqueda generativa. Para esto puedes ejecutar:
python uvicorn_start.py
Esto iniciará un servidor local, que puede consultar mediante cartero o enviar solicitudes POST. La carga de modelos (incluida la descarga desde Huggingface, puede tardar unos minutos, especialmente la primera vez). Hay dos interfaces:
http://127.0.0.1:8000/search
http://127.0.0.1:8000/ask_localai
Ambas interfaces necesitan un cuerpo en formato:
{"query":"What are knowledge graphs?"}
y encabezados para Aceptar y Tipo de contenido establecidos en application/json
.
Aquí hay un ejemplo 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, la interfaz de usuario optimizada se puede iniciar de la siguiente manera:
streamlit run user_interface.py
Ahora puede utilizar la interfaz de usuario y hacer preguntas que serán respondidas en función de los archivos de su sistema de archivos.
Si desea ver más detalles sobre el desarrollo de esta herramienta, puede leer Cómo construir un motor de búsqueda generativo para sus archivos locales usando Llama 3 | Hacia la ciencia de datos
Además, podrás consultar los siguientes papeles:
@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}
}