LlamaIndex v0.10.15 – 2024.3.5時点 Github LlamaHub
GPTモデルに独自プロンプトを追加学習させるRAGライブラリ
# 使用するバージョン pip install llama-index==0.9.2 pip install langchain==0.0.336 pip show xxx # APIキー読み込み import os with open('./openai-api-key.txt', 'r') as f: key = f.read() os.environ["OPENAI_API_KEY"] = key # ロギング機能(ログにサードパーティーモジュールの出力メッセージを含ませることができる) import logging import sys logging.basicConfig(stream=sys.stdout, level=logging.DEBUG, force=True) # 出力先=標準出力, プライオリティ=debug以上
ドキュメントの読み込み
/data/ ディレクトリ内に、インデックスの元となる学習データを準備しておく
(拡張子は .txt .pdf .docx URL 等。複数ファイルも可。)
# 変数 documents を定義 from llama_index import SimpleDirectoryReader documents = SimpleDirectoryReader("data").load_data()
LlamaIndex 単体
インデックスの作成 ★ OpenAI API に接続
# 変数 index を定義 from llama_index import GPTVectorStoreIndex index = GPTVectorStoreIndex.from_documents(documents) ## 別の方法 index = GPTVectorStoreIndex.from_documents([]) # 空のインデックスの作成 for doc in documents: index.insert(doc) # インデックスへのドキュメントの挿入
クエリエンジンの作成
# 変数 query_engine を定義 query_engine = index.as_query_engine()
質疑応答
print(query_engine.query("質問文"))
LlamaIndex + LangChain
インデックスの作成 ★ OpenAI API に接続
LLMPredictor を使用
# 変数 index を定義 from llama_index import GPTVectorStoreIndex, LLMPredictor, ServiceContext from langchain.chat_models import ChatOpenAI # LLMPredictorを定義 llm_predictor = LLMPredictor(llm=ChatOpenAI( temperature=0, model_name="gpt-3.5-turbo")) # ServiceContextを定義 service_context = ServiceContext.from_defaults( llm_predictor=llm_predictor) index = GPTVectorStoreIndex.from_documents( documents, service_context=service_context)
PromptHelper を使用
from llama_index import GPTVectorStoreIndex, PromptHelper, ServiceContext from langchain.chat_models import ChatOpenAI prompt_helper = PromptHelper(num_output=256) service_context = ServiceContext.from_defaults( prompt_helper=prompt_helper) index = GPTVectorStoreIndex.from_documents( documents, service_context=service_context)
クエリエンジンの作成
query_engine = index.as_query_engine()
質疑応答
print(query_engine.query("質問文"))
インデックスの保存と読み込み
保存
from llama_index import GPTVectorStoreIndex index.storage_context.persist() # /storage/フォルダに、下記jsonファイルが生成・保存される ├ default__vector_store.json ├ docstore.json ├ graph_store.json ├ index_store.json
保存したインデックスの読み込み
from llama_index import StorageContext, load_index_from_storage storage_context = StorageContext.from_defaults(persist_dir="./storage") index = load_index_from_storage(storage_context)