埋め込みとテキスト生成に llamafile を使用してドキュメントのインデックス作成とクエリを実行するための、非常に基本的な対話型 CLI。インデックスは FAISS ベクトル ストアに基づいています。デフォルトの埋め込みモデルは mxbai-embed-large-v1 (llamafile リンク)、テキスト生成モデルは mistral-7b-instruct-v0.2 (llamafile リンク) です。 (これらはsetup.sh
編集することで変更できます。)
設定:
cp .env.example .env
./setup.sh
このスクリプトは HuggingFace から llamafile をダウンロードしますが、インターネット接続によっては数分かかる場合があります。
注: セットアップ スクリプトには 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/
、 .env
ファイルのINDEX_LOCAL_DATA_DIRS
リストから削除できます。別のディレクトリをINDEX_LOCAL_DATA_DIRS
リストに追加することもできます。.env
ファイルのINDEX_URLS
変数に 1 つ以上の URL を指定して、Web ページをインデックスに追加します (例: INDEX_URLS=url1,url2,...
。