チャットボットで使うモデルを事前に作って、PKLファイル形式で保存する。
はじめに パッケージ 1 2 3 4 5 pip install openai==0.27.8 pip install tiktoken==0.4.0 pip install faiss-cpu==1.7.4 pip install langchain==0.0.235 pip install pypdf==3.12.2
PKLファイル形式で保存 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 from langchain.vectorstores import FAISS from langchain.embeddings import OpenAIEmbeddings from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.document_loaders import PyPDFLoader import faiss import pickle file_path_list = ['日本財政の現状と望ましい税制の考察.pdf',] text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=0) texts = [] for file_path in file_path_list: print(file_path) loader = PyPDFLoader(file_path) documents = loader.load() texts = texts + text_splitter.split_documents(documents) pass store = FAISS.from_documents(texts, OpenAIEmbeddings(openai_api_key="*****")) faiss.write_index(store.index, "store.index") store.index = None with open("faiss_store.pkl", "wb") as f: pickle.dump(store, f)
PDFファイルを読み込んで store.index
と faiss_store.pkl
を作成します。
読み込み及び回答 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 from langchain.chains import RetrievalQA from langchain.chat_models import ChatOpenAI import faiss import pickle index = faiss.read_index("store.index") with open("faiss_store.pkl", "rb") as f: store = pickle.load(f) store.index = index qa = RetrievalQA.from_chain_type(llm=ChatOpenAI(openai_api_key="*****"), chain_type="stuff", retriever=store.as_retriever()) query = "財政の果たす三つの機能とは?" answer = qa.run(query) print(answer)
事前に作成した store.index
と faiss_store.pkl
を読み込んで、質問に回答します。
回答は 財政の果たす三つの機能は、資源配分の調整、所得の再分配、経済の安定化です。
でした。
参考 【Langchain】EmbeddingでChatGPTに自分専用Q&Aをしてもらう方法
日本財政の現状と望ましい税制の考察.pdf
API keys - OpenAI API