Closed4

LlamaIndexのRAG CLIを試してみる

kun432kun432

セットアップ

今回は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)
kun432kun432

ちなみに--create-llamaをつけるとGUIのチャットアプリがビルドされるんだけど、起動してもなんか動かなかった。環境のせいかバグなのかはわからないし、あんまり追う気もない。

このスクラップは3ヶ月前にクローズされました