Uma CLI interativa muito básica para indexação e consulta de documentos usando llamafiles para incorporações e geração de texto. O índice é baseado em um armazenamento de vetores FAISS. O modelo de incorporação padrão é mxbai-embed-large-v1 (link llamafile) e o modelo de geração de texto é mistral-7b-instruct-v0.2 (link llamafile). (Eles podem ser alterados editando setup.sh
.)
Configurar:
cp .env.example .env
./setup.sh
Este script baixará arquivos lhama do HuggingFace e pode levar vários minutos dependendo da sua conexão com a Internet.
NOTA: o script de configuração requer pyenv
Para iniciar o aplicativo, execute:
./app.sh
Quando você executa o aplicativo, ele irá:
toy_data/
em um armazenamento de vetores (o "índice"). Conteúdo do diretório 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 ? ] >
Se você apenas clicar Enter aqui, por padrão a consulta será "O que Alice gosta?". A saída do aplicativo deve ser semelhante a:
=== 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."
--------------------------------------------------------------------------------
Aqui estão algumas outras consultas que você pode tentar:
É basicamente isso.
Você pode alterar a maioria das configurações do aplicativo por meio do arquivo .env
. O arquivo padrão deve ser semelhante a:
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 todas as opções disponíveis.
Por padrão, o aplicativo usa:
Por padrão, o aplicativo está configurado para indexar o conteúdo dos diretórios listados em INDEX_LOCAL_DATA_DIRS
, que são local_data
e toy_data
. Atualmente, oferecemos suporte apenas à indexação de arquivos .txt
.
Primeiro, no seu .env
, altere INDEX_SAVE_DIR
para onde você deseja que seu índice seja salvo. O aplicativo não alterará ou substituirá um índice existente; portanto, altere o diretório em .env
ou exclua o índice existente em ./index-toy
.
Existem 2 maneiras de adicionar dados:
.txt
ao diretório local_data/
. Você pode remover toy_data/
da lista INDEX_LOCAL_DATA_DIRS
em nosso arquivo .env
. Você também pode simplesmente adicionar outro diretório à lista INDEX_LOCAL_DATA_DIRS
.INDEX_URLS
em seu arquivo .env
, por exemplo INDEX_URLS=url1,url2,...
.