Life and Tech Talk

랭체인 연결 PDF 학습 챗봇 예제 (chromadb 저장, 활용)
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 + 모듈명)

  • python-dotenv(옵션)
  • langchain, pypdf, chromadb, tiktoken
올린날: 2023년 10월 29일
주제: 코드 관련 포스팅 클릭!!

* 올린이: 마이클

* VIEW: 48       0           위키홈     게시판     수정