Understanding_Document_Pipeline_Langchain은(는) 무엇을 하나요?
LangChain 문서 파이프라인을 통해 RAG의 데이터 수집, 임베딩, 검색 및 LLM 응답 생성을 탐색합니다.
개요
이 스킬은 LangChain을 사용하여 완전한 RAG(Retrieval-Augmented Generation) 문서 파이프라인을 구축하는 방법을 설명합니다. 주요 단계는 다음과 같습니다:
- 문서 수집 및 분할 (Ingestion & Splitting) – 문서를 로드하고 의미 있는 청크로 분할합니다.
- 임베딩 생성 (Embedding Generation) – 텍스트 청크를 벡터 임베딩으로 변환합니다.
- 벡터 저장소 구축 (Vector Store Construction) – 임베딩을 인덱싱하고 저장합니다.
- 검색 (Retrieval) – 사용자 질의에 관련된 문서 청크를 검색합니다.
- 응답 생성 (Response Generation) – 검색된 컨텍스트와 LLM을 사용하여 답변을 생성합니다.
사전 요구사항
- Python 3.8+
- LangChain (
langchain,langchain-community,langchain-openai) - OpenAI API 키 (또는 다른 LLM 제공자)
- 문서 파일 (예: PDF, 텍스트, 마크다운)
설치
pip install langchain langchain-community langchain-openai chromadb
사용법
1. 환경 변수 설정
import os
os.environ["OPENAI_API_KEY"] = "your-api-key"
2. 문서 로드 및 분할
from langchain_community.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
loader = TextLoader("path/to/document.txt")
documents = loader.load()
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=200
)
docs = text_splitter.split_documents(documents)
3. 임베딩 생성 및 벡터 저장소 구축
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(docs, embeddings)
4. 검색 및 응답 생성
from langchain_openai import ChatOpenAI
from langchain.chains import RetrievalQA
llm = ChatOpenAI(model="gpt-4")
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
retriever=vectorstore.as_retriever()
)
response = qa_chain.invoke("질문을 입력하세요")
print(response)
참고 사항
TextLoader대신PyPDFLoader또는UnstructuredMarkdownLoader를 사용하여 다양한 형식을 지원할 수 있습니다.- 청크 크기와 오버랩은 검색 성능에 영향을 미치므로 실험을 통해 최적화하세요.
- 벡터 저장소로 Chroma 외에도 FAISS, Pinecone 등을 사용할 수 있습니다.
라이선스
MIT