Nathaniel

RAG 코드 암기하기 D1 본문

AI

RAG 코드 암기하기 D1

Nathaniel1 2025. 2. 26. 16:00

하루에 5번 이상 RAG 코드를 암기 하기 위한 나의 낙서장이다.

Langchain과 RAG를 할 때 반드시 나오는 순서의 코드들이다. 매일매일 복습해서 github에 업데이트 하는 중이다.

from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_community.document_loaders import PDFPlumberLoader
from langchain_community.vectorstores import FAISS
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain import hub

loader = PDFPlumberLoader()
docs = loader.load()

text_splitter = RecursiveCharacterTextSplitter(chunksize = 300, chunk_overlap = 50)
split_documents = text_splitter.split_documents(docs)

embeddings = OpenAIEmbeddings()

vectorstore = FAISS.from_documents(documents=split_documents, embedding=embeddings)

retriever = vectorstore.as_retriever()

prompt = hub.pull("teddynote/rag-korean")

llm = ChatOpenAI(model_name="gpt-4o", temperature=0)

chain = (
    {"context": retriever, "question": RunnablePassthrough()}
    | prompt
    | llm
    | StrOutputParser()
)

chain.invoke("삼성전자가 개발한 생성형 AI는?")