ChatGPTのAPIを使っていて、独自の情報を学習させて回答をさせたい場合がある。
Llamaindexを使って試してみる。
環境準備
% pip3 install llama-index
% pip3 install transformers
% export OPENAI_API_KEY="sk-xxxxxxx"
% export TOKENIZERS_PARALLELISM="false"
OPENAI_API_KEY に自分のAPIキーを指定しておく。
データ準備
dataディレクトリにIndexさせたい情報を準備する。
今回は下記のホームページの情報をテキストデータで保存した。
https://www.town.ibaraki-sakai.lg.jp/page/page002440.html
複数のファイルをdataディレクトリに置くことが可能。
各ファイルを10kb程度の意味を持った単位で保存するとよいそう。
例:会社情報.txt、運行情報.txt、将来構想.txt
./data/sakaimachi_bus.txt
境町では、ソフトバンク株式会社の子会社であるBOLDLY株式会社及び株式会社マクニカの協力のもと、自動運転バスを3台導入し、生活路線バスとして定時・定路線での運行を令和2年11月26日(木)から開始しました。なお、自治体が自動運転バスを公道で定常運行するのは、国内で初めてです。
※乗車定員11人以上の車両が、一般の方の移動手段として期間を限定せずに大半の区間を自動で走行するのは初めて(BOLDLY株式会社調べ)
運行の詳細について
乗車料金
無料
乗車人数
8名に制限中(令和3年10月4日より)
運行時間
午前7時40分〜午後4時まで 土日祝日も運行
(令和4年7月1日より)
便数
18便(令和4年7月1日より)
(同時に2台を運行し、その間に他1台の充電やメンテナンス等を行います。)
停留所数
17か所
よくある質問
車いす利用のままバスに乗れますか。
スロープを装備しておりますので、そのままご乗車いただけます。
ペットを連れたままバスに乗れますか。
ペットをお連れになる場合は、キャリーケースに入れてご乗車をお願いします。
運行ルート
ルートは、今後住民の要望に合わせて順次拡大し、利便性を高めていく予定です。
Index作成
make_index.py
from llama_index import GPTVectorStoreIndex, SimpleDirectoryReader, StorageContext, load_index_from_storage
# indexの作成と保存
documents = SimpleDirectoryReader("./data/").load_data()
index = GPTVectorStoreIndex.from_documents(documents)
index.storage_context.persist()
実行するとstorageディレクトリが作られ、その中にインデックス情報が作成される。
Index読み込みと質問回答
query.py
from llama_index import GPTVectorStoreIndex, SimpleDirectoryReader, StorageContext, load_index_from_storage
# Indexの読み込み
storage_context = StorageContext.from_defaults(persist_dir="./storage")
index = load_index_from_storage(storage_context)
# 質問を投げる
query_engine = index.as_query_engine()
print(query_engine.query("自動運転バスは朝何時から走っている?"))
以下のように期待した回答が返ってきた。
自動運転バスは午前7時40分から走っています。
参考情報