
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)