Una CLI interactiva muy básica para indexar y consultar documentos utilizando llamafiles para incrustaciones y generación de texto. El índice se basa en un almacén de vectores FAISS. El modelo de incrustación predeterminado es mxbai-embed-large-v1 (enlace de llamafile) y el modelo de generación de texto es mistral-7b-instruct-v0.2 (enlace de llamafile). (Estos se pueden cambiar editando setup.sh
).
Configuración:
cp .env.example .env
./setup.sh
Este script descargará archivos llama de HuggingFace y puede tardar varios minutos dependiendo de su conexión a Internet.
NOTA: el script de configuración requiere pyev
Para iniciar la aplicación, ejecute:
./app.sh
Cuando ejecutes la aplicación, hará lo siguiente:
toy_data/
en un almacén de vectores (el "índice"). Contenido del directorio toy_data/
: 1.txt: Alice likes red squares.
2.txt: Bob likes blue circles.
3.txt: Chris likes blue triangles.
4.txt: David does not like green triangles.
5.txt: Mary does not like circles.
Enter query (ctrl-d to quit): [What does Alice like ? ] >
Si presiona Enter aquí, de forma predeterminada la consulta será "¿Qué le gusta a Alice?". La salida de la aplicación debería verse así:
=== Query ===
What does Alice like?
=== Search Results ===
0.7104 - " alice likes red squares ."
0.5229 - " bob likes blue circles ."
0.4088 - " chris likes blue triangles ."
=== Prompt ===
"You are an expert Q&A system. Answer the user's query using the provided context information.
Context information:
alice likes red squares .
bob likes blue circles .
chris likes blue triangles .
Query: What does Alice like?"
(prompt_ntokens: 55)
=== Answer ===
"
Answer: Alice likes red squares."
--------------------------------------------------------------------------------
Aquí algunas otras consultas que puedes probar:
Eso es todo.
Puede cambiar la mayoría de las configuraciones de la aplicación a través del archivo .env
. El archivo predeterminado debería verse así:
EMBEDDING_MODEL_PORT=8080
GENERATION_MODEL_PORT=8081
INDEX_LOCAL_DATA_DIRS=local_data,toy_data
INDEX_TEXT_CHUNK_LEN=128
INDEX_SAVE_DIR=./index-toy
Consulte settings.py para conocer todas las opciones disponibles.
De forma predeterminada, la aplicación utiliza:
De forma predeterminada, la aplicación está configurada para indexar el contenido de los directorios enumerados en INDEX_LOCAL_DATA_DIRS
, que son local_data
y toy_data
. Actualmente solo admitimos la indexación de archivos .txt
.
Primero, en su .env
, cambie INDEX_SAVE_DIR
a donde desee que se guarde su índice. La aplicación no cambiará ni sobrescribirá un índice existente, por lo tanto, cambie el directorio en .env
o elimine el índice existente en ./index-toy
.
Hay 2 formas de agregar datos:
.txt
al directorio local_data/
. Puede eliminar toy_data/
de la lista INDEX_LOCAL_DATA_DIRS
en nuestro archivo .env
. También puede simplemente agregar otro directorio a la lista INDEX_LOCAL_DATA_DIRS
.INDEX_URLS
en su archivo .env
, por ejemplo, INDEX_URLS=url1,url2,...
.