一个非常基本的交互式 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,...
。