OPENAI_API_KEY="<YOUR API_KEY>"
from langchain.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores import Chroma
from langchain.embeddings import OpenAIEmbeddings
from langchain.chat_models import ChatOpenAI
from langchain.retrievers.multi_query import MultiQueryRetriever
from langchain.chains import RetrievalQA
#Loader
loader = PyPDFLoader("test.pdf")
pages = loader.load_and_split()
#Split
text_splitter = RecursiveCharacterTextSplitter(
# Set a really small chunk size, just to show.
chunk_size = 300,
chunk_overlap = 20,
length_function = len,
is_separator_regex = False,
)
texts = text_splitter.split_documents(pages)
#Embedding
embeddings_model = OpenAIEmbeddings(openai_api_key=OPENAI_API_KEY)
# load it into Chroma
db = Chroma.from_documents(texts, embeddings_model)
# save to disk
# db2 = Chroma.from_documents(texts, embeddings_model, persist_directory="./chroma")
# docs = db2.similarity_search(query)
# load from disk
db3 = Chroma(persist_directory="./chroma", embedding_function=embeddings_model)
# Q&A
while(1):
question = input("질문: ")
docs = db3.similarity_search(question)
print('관련 문구는: ', docs[0].page_content)
llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0, openai_api_key=OPENAI_API_KEY)
qa_chain = RetrievalQA.from_chain_type(llm,retriever=db3.as_retriever())
result = qa_chain({"query": question})
print('답변: ', result['result'])
설치 모듈 (pip install + 모듈명)