from langchain.document_loaders import PyPDFLoader loader = PyPDFLoader("t2.pdf") document = loader.load() document[2].page_content[:5000] 11 # 문서 임베딩(embedding model) - 데이터를 벡터 형태로 변환한다. 임베딩이란 자연어처리에서 사람이 쓰는 자연어를 기계가 이해할 수 있도록 숫자형태인 vector로 바꾸는 과정 혹은 일련의 전체 과정을 의미합니다. 단어나 문장 각각을 벡터로 변환해 벡터 공간(Vector space)으로 끼워넣는다는 의미에서 임베딩이라고 합니다. # 벡터 데이터 베이스(벡터 저장소,vector stores) - 변환된 벡터를 저장/검색/관리한다. # 임베딩을 오픈 AI에서 제공하는 임베딩 모델 사용 # 벡터 데이터베이스로 파이스 사용 import os os.environ["NCP_CLOVASTUDIO_API_KEY"] = "NTA0MjU2MWZNDJiYxqjRuCbOfkIy4Svs+M" os.environ["NCP_APIGW_API_KEY"] = "OOJfdUkIfDJEhIsinKpG" os.environ["NCP_CLOVASTUDIO_APP_ID"] = "7a1b56e593a7" from langchain.vectorstores import FAISS from langchain_community.embeddings import ClovaXEmbeddings from langchain.text_splitter import RecursiveCharacterTextSplitter # Import the text splitter embeddings = ClovaXEmbeddings( model="clir-emb-dolphin", ) # Split the document into smaller chunks text_splitter = RecursiveCharacterTextSplitter( chunk_size = 500, # Adjust the chunk size as needed chunk_overlap = 0, # Adjust overlap as needed ) docs = text_splitter.split_documents(document) # Split your document list # Now create the FAISS vectorstore using the split documents db = FAISS.from_documents(docs, embeddings) 13 # 검색기가 필요하다. (retrievers) - 정보검색 역할을 한다. from langchain_community.chat_models import ChatClovaX # Now instantiate the ChatClovaX class: chat = ChatClovaX(model="HCX-003") from langchain.chains import RetrievalQA retriever = db.as_retriever() qa = RetrievalQA.from_chain_type( llm=chat, chain_type="stuff", retriever=retriever) query = " 숙소 조식은 제공 되는가요 ?" result = qa({"query": query}) print(result['result'])