pdf 문서를 불러와서 embedding vectorDB에 넣고
안의 내용과 연관된 내용을 질문하여 chat gpt한테 답을 받는다.
LLaMa2에서 vector DB를 사용한다고 했는데. vector값 즉 위치값을 저장하는건데 이미지의 모양에 벡터값을 부여하고 그 비슷한 벡터를 찾아 연관된 값을 찾는 형식이라 사과랑 바나나가 비슷한 벡터에 위치하게되 연관값이 높게된다.
즉 일반 db와는 다르게 이미지 값을 저장하고 연관을 시킬수 있다는거다.
vectorDB에는 무료인 chroma와 유료인 pinecone, weaviate등이 있다.
pdf를 읽어오기위해 PyPDF 모듈을 설치해준다.
pip install pypdf
pypdf 사용
참고링크
https://python.langchain.com/v0.2/docs/how_to/document_loader_pdf/
페이지를 쪼갠다.
from langchain.document_loaders import PyPDFLoader
loader = PyPDFLoader("example_data/layout-parser-paper.pdf")
pages = loader.load_and_split()
vectorDB를 사용하기위해 chromaDB를 다운받아준다.
pip install chromadb
# embedding 모델을 사용하기위해 필요한 모듈
pip install tiktoken
https://python.langchain.com/docs/integrations/vectorstores/chroma/
참고 사이트:
https://python.langchain.com/docs/how_to/MultiQueryRetriever/
from langchain.vectorstores import Chroma
db = Chroma.from_documents(docs, embeddings_function)
# Build a sample vectorDB
from langchain_chroma import Chroma
from langchain_community.document_loaders import WebBaseLoader
from langchain_openai import OpenAIEmbeddings
from langchain_text_splitters import RecursiveCharacterTextSplitter
# Load blog post
loader = WebBaseLoader("https://lilianweng.github.io/posts/2023-06-23-agent/")
data = loader.load()
# Split
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=0)
splits = text_splitter.split_documents(data)
# VectorDB
embedding = OpenAIEmbeddings()
vectordb = Chroma.from_documents(documents=splits, embedding=embedding)
question = "What are the approaches to Task Decomposition?"
llm = ChatOpenAI(temperature=0)
retriever_from_llm = MultiQueryRetriever.from_llm(
retriever=vectordb.as_retriever(), llm=llm
)
'컴퓨터 과학 > AI' 카테고리의 다른 글
이미지 생성 AI 사이트 (0) | 2025.01.03 |
---|---|
Langchain streaming - 실시간으로 답변받기 (0) | 2025.01.02 |
LLaMa2 - local에서 LLM돌리기 (0) | 2024.12.31 |
LangChain(랭체인) - 어플리케이션 개발 프레임워크 (0) | 2024.12.30 |