Closed4
LlamaIndexのRAG CLIを試してみる
セットアップ
今回はdevcontainerで仮想環境作って試してみる。devcontainerの設定は適当だけど、いろいろ試した結果、
- nodeが必要
- ChromaDBが必要とするSQLite3のバージョンはbookwarmで提供されている。
ということだったので、以下のようにしてある。
{
"name": "Python 3",
"image": "mcr.microsoft.com/devcontainers/python:1-3.11-bookworm",
"features": {
"ghcr.io/devcontainers/features/node:1": {}
}
}
devcontainerが上がってきたら環境を確認。
$ which python
/usr/local/bin/python
$ python --version
Python 3.11.7
$ which node
/usr/local/share/nvm/versions/node/v20.11.0/bin/node
$ which npm
/usr/local/share/nvm/versions/node/v20.11.0/bin/npm
$ which npx
/usr/local/share/nvm/versions/node/v20.11.0/bin/npx
``
ではLlamaIndexをインストール。ChromaDBも必要になる。
```shell
$ pip install -U llama-index chromadb
ChromaDBの依存関係としてSQLite3をインストールする。3.35以上だったらOKだったはず。
$ sudo apt update
$ sudo apt install sqlite3
$ sqlite3 --version
3.40.1 2022-12-28 14:03:47 df5c253c0b3dd24916e4ec7cf77d3db5294cc9fd45ae7b9c5e82ad8197f3alt1
ヘルプを確認
$ llamaindex-cli -h
usage: llamaindex-cli [-h] {rag,download-llamapack,download-llamadataset} ...
LlamaIndex CLI tool.
options:
-h, --help show this help message and exit
commands:
{rag,download-llamapack,download-llamadataset}
rag Ask a question to a document / a directory of documents.
download-llamapack Download a llama-pack
download-llamadataset
Download a llama-dataset
OpenAIのAPIキーをセット
$ export OPENAI_API_KEY=sk-XXXXXXX
CLIからRAG
まずデータを用意する。いつものようにwikipediaのコンテンツをmarkdown化したものを使う。
こんな感じで配置。
$ tree docs
docs
├── doduece.txt
└── equinox.txt
このドキュメントをllamaindex-cliに食わせる。
$ llamaindex-cli rag --files "./docs/*.txt"
エラーが出なければ問題ないみたい。
ではクエリを投げてみる。
$ llamaindex-cli rag --question "ドウデュースの主な勝ち鞍を教えて"
ドウデュースの主な勝ち鞍は2021年の朝日杯フューチュリティステークス、2022年の東京優駿、2023年の有馬記念です。
--question
で1問1答、--chat
でREPLモードのチャットになる。
$ llamaindex-cli rag --chat
==== Entering Chat REPL =====
Type "exit" to exit.
Human: こんにちは。
Assistant: はい、何か質問はありますか?
Human: イクイノックスの主な勝ち鞍を教えて
Assistant: イクイノックスの主な勝ち鞍は2022年・2023年の天皇賞(秋)連覇、2022年の有馬記念、2023年のドバイシーマクラシック、宝塚記念、ジャパンカップです。
Human: 天皇賞(秋)の連覇なんて、すごいね。
Assistant: イクイノックスは有馬記念で連覇を果たしました。
Human: exit
間違ってるけどもCLIからでも動くことは確認できた。
ちなみに読み込んだデータは/tmp以下にあった。
$ tree /tmp/llama_index/rag_cli/
/tmp/llama_index/rag_cli/
├── a826e08e-3bfe-4f9f-b60a-6b931976be37
│ ├── data_level0.bin
│ ├── header.bin
│ ├── length.bin
│ └── link_lists.bin
├── chroma.sqlite3
├── docstore.json
├── files_history.txt
└── llama_cache
2 directories, 8 files
DBを直接見てみるとデータが入っていることがわかる。
$ sqlite3 /tmp/llama_index/rag_cli/chroma.sqlite3
SQLite version 3.40.1 2022-12-28 14:03:47
Enter ".help" for usage hints.
sqlite> .table
collection_metadata embedding_metadata
collections embeddings
databases embeddings_queue
embedding_fulltext_search max_seq_id
embedding_fulltext_search_config migrations
embedding_fulltext_search_content segment_metadata
embedding_fulltext_search_data segments
embedding_fulltext_search_docsize tenants
embedding_fulltext_search_idx
select * from embedding_fulltext_search_content;
1|# ドウデュース
ドウデュース(欧字名:Do Deuce、2019年5月7日 - )は、日本の競走馬。主な勝ち鞍は2021年の朝日杯フューチュリティステークス、2022年の東京優駿、2023年の有馬記念。
馬名の意味は「する+テニス用語(勝利目前の意味)」。2021年のJRA賞最優秀2歳牡馬である。
(snip)
ちなみに--create-llama
をつけるとGUIのチャットアプリがビルドされるんだけど、起動してもなんか動かなかった。環境のせいかバグなのかはわからないし、あんまり追う気もない。
CLIのカスタマイズも可能。
このスクラップは2024/02/06にクローズされました