一個非常基本的互動式 CLI,用於使用 llamafiles 進行嵌入和文字生成來索引和查詢文件。索引基於 FAISS 向量存儲。預設嵌入模型是 mxbai-embed-large-v1 (llamafile 連結),文字產生模型是 mistra-7b-instruct-v0.2 (llamafile 連結)。 (這些可以透過編輯setup.sh
來更改。)
設定:
cp .env.example .env
./setup.sh
此腳本將從 HuggingFace 下載 llamafiles,可能需要幾分鐘時間,具體取決於您的網路連線。
注意:安裝腳本需要 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,預設情況下查詢將是「Alice 喜歡什麼?」。應用程式輸出應如下所示:
=== 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/
目錄。您可以從.env
檔案的INDEX_LOCAL_DATA_DIRS
清單中刪除toy_data/
。您也可以將另一個目錄新增至INDEX_LOCAL_DATA_DIRS
清單中。.env
檔案中的INDEX_URLS
變數指定一個或多個 URL,將網頁加入索引,例如INDEX_URLS=url1,url2,...
。