[ChatGPT]LlamaIndexのクエリはどれくらいの時間がかかる? 計測してみた

2023.03.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

吉川@広島です。

Llama Index(GPT Index)にDevelopersIOの記事を100件読み込ませて質問してみた | DevelopersIO

Llama Index+ChatGPTを使うとオリジナルな知識を持ったチャットボットを作れるなどの夢が広がるわけですが、そうすると次はどれくらいの時間でレスポンスを返してくれるのかが気になってきます。

そこでLlama Indexでクエリを投げると結果出力までにどれくらいの時間を要するのか調べてみました。

試してみた

計測方法

【Python】処理にかかる時間を計測して表示 - Qiita

こちらを参考に

start = time.time()
# 処理
elapsed_time = time.time() - start

で処理を囲んで経過時間を出力してみます。

質問内容

CDK for TerraformでGitHub Providerを使ってGitHubリポジトリを作成してみる | DevelopersIO

取り込み対象に含まれる上記の記事内容のヒットを意識して、

  • CDK for TerraformでGitHubリポジトリを作れますか?日本語で回答してください1

と聞いてみます。

DevIOブログ100記事を読み込ませた場合

それでは試していきます。ブログ100記事のIndexを用意し、クエリするコードを実行します。

コード:

# query.py
from llama_index import GPTSimpleVectorIndex
from llama_index.langchain_helpers.chatgpt import ChatGPTLLMPredictor
import time

question = "CDK for TerraformでGitHubリポジトリを作れますか?日本語で回答してください"

start = time.time()
index = GPTSimpleVectorIndex.load_from_disk('tmp/index.json', llm_predictor=ChatGPTLLMPredictor())
elapsed_time = time.time() - start
print("load_elapsed_time:{0}".format(elapsed_time) + "[sec]")

start = time.time()
answer = index.query(question)
elapsed_time = time.time() - start
print ("query_elapsed_time:{0}".format(elapsed_time) + "[sec]")
print(answer)

実行:

python query.py

ログの抜粋:

load_elapsed_time:4.723520040512085[sec]
query_elapsed_time:3.219331979751587[sec]
はい、CDK for Terraformを使用してGitHubリポジトリを作成することができます。

DevIOブログ300記事を読み込ませた場合

次に、数を増やしてブログ300記事でIndexを作成し、同じクエリを投げてみます。

ログの抜粋:

load_elapsed_time:11.328747987747192[sec]
query_elapsed_time:4.603770732879639[sec]
はい、CDK for Terraformを使用してGitHubリポジトリを作成することができます。

まとめ

記事数 インデックスサイズ ロード時間 クエリ時間
100 154.3MB 2.7秒 3.2秒
300 469.3MB 11.3秒 4.6秒

ロード時間は取り込む文章量に応じて線形的に増えていくように見えます。一方クエリ時間はそうではないようです。まだ内部の仕組みをキャッチアップできていないので対数的までかはわからないのですが、緩やかな増加と思われます。

そのためチャットボットにする場合は予めインデックスをロードした状態でスタンバイできると比較的高速に回答を返せそうです。

ChatGPTの口数が増えても待ち時間は増える

ChatGPTの出力文章量が増えるとどうでしょうか?先程の例はクローズドクエスチョンだったのですが、今度はオープンクエスチョン的に聞いてみます。

コードを変更:

# 質問を変更
question = "CDK for TerraformでGitHubリポジトリを作る方法を教えて"

ログの抜粋:

load_elapsed_time:5.181887865066528[sec]
query_elapsed_time:13.196186065673828[sec]
CDKTFを使用してGitHubリポジトリを作成する方法は以下の通りです。

1. GitHub個人用アクセストークンを作成し、環境変数として設定します。
2. CDKTFを初期化し、GitHub Providerを宣言します。
3. GitHubリポジトリを設定し、必要な設定を追加します。例えば、リポジトリの公開範囲、Pull Requestマージ後にブランチ自動削除を有効、Issueを有効化、Terraform用の.gitignoreを用意する、README.mdを作成するなど。
4. CDKTFを実行して、GitHubリポジトリを作成します。

サンプルコードは、以下のGitHubリポジトリで確認できます。
https://github.com/msato0731/cdktf-github-repo-sample

クエリ時間が13秒になりました。待ち時間は出力文章量にも顕著に影響を受けるようです。

以上、Llama Index使用にあたり参考になれば幸いです。

参考


  1. 条件は不明なのですが、日本語で聞いても英語で返ってくることがあるので日本語指定します。