Очень простой интерактивный интерфейс командной строки для индексирования и запроса документов с использованием llamafiles для встраивания и генерации текста. Индекс основан на векторном хранилище FAISS. Модель внедрения по умолчанию — mxbai-embed-large-v1 (ссылка на файл llamafile), а модель генерации текста — mistral-7b-instruct-v0.2 (ссылка на файл llamafile). (Их можно изменить, отредактировав setup.sh
.)
Настраивать:
cp .env.example .env
./setup.sh
Этот скрипт загрузит файлы ламы с HuggingFace. Это может занять несколько минут в зависимости от вашего интернет-соединения.
ПРИМЕЧАНИЕ. Для сценария установки требуется pyenv.
Чтобы запустить приложение, запустите:
./app.sh
Когда вы запустите приложение, оно:
toy_data/
в векторное хранилище («индекс»). Содержимое каталога 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 ? ] >
Если вы просто нажмете Enter здесь, по умолчанию запрос будет «Что нравится Алисе?». Вывод приложения должен выглядеть так:
=== 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."
--------------------------------------------------------------------------------
Вот еще несколько запросов, которые вы можете попробовать:
Вот и все.
Вы можете изменить большинство настроек приложения через файл .env
. Файл по умолчанию должен выглядеть так:
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
См. settings.py для всех доступных опций.
По умолчанию приложение использует:
По умолчанию приложение настроено на индексацию содержимого каталогов, перечисленных в INDEX_LOCAL_DATA_DIRS
, а именно local_data
и toy_data
. В настоящее время мы поддерживаем индексирование только файлов .txt
.
Во-первых, в вашем .env
измените INDEX_SAVE_DIR
на то место, где вы хотите сохранить свой индекс. Приложение не будет изменять или перезаписывать существующий индекс, поэтому либо измените каталог в .env
, либо удалите существующий индекс в ./index-toy
.
Есть 2 способа добавления данных:
.txt
в каталог local_data/
. Вы можете удалить toy_data/
из списка INDEX_LOCAL_DATA_DIRS
в нашем файле .env
. Вы также можете просто добавить еще один каталог в список INDEX_LOCAL_DATA_DIRS
.INDEX_URLS
в вашем файле .env
, например INDEX_URLS=url1,url2,...
.