강의 및 실습 정리/LLM 강의
[인프런 강의] 3.3 LangChain과 Pinecone를 활용한 RAG 구성
조조링
2024. 10. 22. 16:59
728x90
반응형
이 내용은 인프런의 "RAG를 활용한 LLM Application 개발 (feat. LangChain)[링크]" 강의 기반으로 GPT4o을 이용해서 정리한 내용입니다.
이전 글에서 Chroma를 사용했던 코드를 Pinecone으로 전환한 과정을 간단히 소개하려고 합니다.
Pinecone은 문서 검색과 벡터 저장소를 위한 강력한 툴로, 대규모 데이터셋에서도 빠르고 효율적인 검색이 가능합니다.
특히, 문서를 잘게 쪼개고 임베딩하는 과정을 거쳐 쿼리와 유사한 문서를 신속하게 찾는 데 용이합니다.
1. 패키지 설치
필요한 패키지를 먼저 설치합니다.
Pinecone과 관련된 langchain-pinecone 패키지를 사용했습니다.
%pip install -qU langchain-pinecone pinecone-notebooks
2. 문서 쪼개기
tax.docx 문서를 불러와 RecursiveCharacterTextSplitter를 이용해 문서를 적절한 크기로 나눕니다.
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=1500,
chunk_overlap=200
)
loader = Docx2txtLoader("tax.docx")
document_list = loader.load_and_split(text_splitter=text_splitter)
이렇게 쪼갠 문서는 이후 임베딩에 사용됩니다.
3. 임베딩 생성
OpenAI의 text-embedding-3-large 모델을 사용해 문서 리스트를 벡터로 변환합니다.
from langchain_openai import OpenAIEmbeddings
embedding = OpenAIEmbeddings(model='text-embedding-3-large')
4. Pinecone 데이터베이스 생성
이후 Pinecone에 연결하고, 문서 리스트를 Pinecone 데이터베이스에 저장합니다.
import os
from pinecone import Pinecone
from langchain_pinecone import PineconeVectorStore
pinecone_api_key = os.environ.get("PINECONE_API_KEY")
pc = Pinecone(api_key=pinecone_api_key)
database = PineconeVectorStore.from_documents(document_list, index_name='tax-index', embedding=embedding)
5. 유사 문서 검색
질문을 던지고 그와 유사한 문서를 Pinecone에서 검색합니다.
여기서는 '연봉 5천만원인 직장인의 소득세'라는 질문을 던져 가장 관련성 있는 문서 3개를 가져옵니다.
query = '연봉 5천만원인 직장인의 소득세는 얼마인가요?'
retrieved_docs = database.similarity_search(query, k=3)
6. 답변 생성
최종적으로 벡터 데이터베이스에서 검색된 문서를 기반으로 답변을 생성합니다.
GPT 모델과 함께 RetrievalQA 체인을 사용해 답변을 도출합니다.
from langchain_openai import ChatOpenAI
from langchain import hub
from langchain.chains import RetrievalQA
llm = ChatOpenAI(model='gpt-4o')
prompt = hub.pull("rlm/rag-prompt")
qa_chain = RetrievalQA.from_chain_type(
llm,
retriever=database.as_retriever(),
chain_type_kwargs={"prompt": prompt}
)
ai_message = qa_chain({"query": query})
ai_message
{'query': '연봉 5천만원인 직장인의 소득세는 얼마인가요?', 'result': '연봉 5천만원인 직장인의 소득세는 기본세율이 적용됩니다. 근로소득에 대한 기본세율은 소득구간에 따라 차등 적용되며, 구체적인 세율은 세법에 따라 결정됩니다. 정확한 소득세 계산은 소득공제와 세액공제 등을 고려해야 하므로, 개인의 세무 상황에 맞춰 상세한 계산이 필요합니다.'}
728x90
반응형