LangChain과 함께하는 텍스트 임베딩 강좌에 오신 것을 환영합니다.
이번 강좌에서는 LangChain을 사용하여 텍스트를 벡터로 변환하고, 이를 활용하는 방법에 대해 자세히 알아보겠습니다. 또한, 마지막에는 실제로 실행 가능한 전체 코드를 제공하여 직접 실습해보실 수 있도록 하겠습니다. OPENAI_API_KEY
는 .env
파일에 저장하여 불러오는 방식으로 진행하겠습니다.
LangChain은 텍스트를 벡터화된 표현으로 변환하는 다양한 임베딩(Embedding) 모델을 지원합니다. 이러한 벡터화된 표현은 자연어 처리 및 인공지능 모델에서 텍스트의 의미를 수치화하여 계산에 활용할 수 있게 해줍니다.
중요한 점은 초기 임베딩 모델을 신중하게 선택해야 한다는 것입니다. 그 이유는:
이제 LangChain을 사용하여 텍스트를 어떻게 임베딩하는지 알아보겠습니다.
pip install langchain openai python-dotenv
.env
파일 생성 및 API 키 저장OPENAI_API_KEY=your_openai_api_key_here
# 필요한 모듈 임포트
from langchain.embeddings import OpenAIEmbeddings
from langchain.document_loaders import CSVLoader
import os
from dotenv import load_dotenv
# .env 파일에서 API 키 로드
load_dotenv()
OPENAI_API_KEY = os.getenv('OPENAI_API_KEY')
# OpenAI 임베딩 인스턴스 생성
embeddings = OpenAIEmbeddings(openai_api_key=OPENAI_API_KEY)
# 임베딩할 텍스트 예시
text = "OpenAI를 사용하여 텍스트를 N차원 벡터로 임베딩합니다."
# 텍스트 임베딩
embedded_text = embeddings.embed_query(text)
# 임베딩 결과 확인
print(f"임베딩 벡터의 차원: {len(embedded_text)}")
print(f"임베딩 벡터의 내용: {embedded_text[:5]}...") # 벡터의 일부만 출력
OpenAIEmbeddings
클래스를 사용하여 OpenAI의 임베딩 모델을 활용합니다.embed_query
메서드를 통해 단일 텍스트를 임베딩합니다.단일 텍스트가 아니라 CSV 파일과 같은 문서 내의 여러 텍스트를 임베딩해보겠습니다.
# CSVLoader를 사용하여 데이터 로드
loader = CSVLoader(file_path='data/penguins.csv', encoding='utf-8')
data = loader.load()
# 로드된 데이터 확인
print(f"로드된 문서의 수: {len(data)}")
print(f"첫 번째 문서의 내용:\n{data[0].page_content}")
# 문서에서 텍스트 추출
texts = [doc.page_content for doc in data]
# 문서 임베딩
embedded_docs = embeddings.embed_documents(texts)
# 임베딩된 문서 벡터의 수 확인
print(f"임베딩된 문서 벡터의 수: {len(embedded_docs)}")
CSVLoader
를 사용하여 CSV 파일을 로드합니다.Document
객체로 표현되며, page_content
속성에 텍스트가 저장되어 있습니다.embed_documents
메서드를 통해 텍스트의 리스트를 임베딩합니다.# 필요한 모듈 임포트
from langchain.embeddings import OpenAIEmbeddings
from langchain.document_loaders import CSVLoader
import os
from dotenv import load_dotenv
# .env 파일에서 API 키 로드
load_dotenv()
OPENAI_API_KEY = os.getenv('OPENAI_API_KEY')
# OpenAI 임베딩 인스턴스 생성
embeddings = OpenAIEmbeddings(openai_api_key=OPENAI_API_KEY)
# 임베딩할 텍스트 예시
text = "OpenAI를 사용하여 텍스트를 N차원 벡터로 임베딩합니다."
# 텍스트 임베딩
embedded_text = embeddings.embed_query(text)
# 임베딩 결과 확인
print(f"임베딩 벡터의 차원: {len(embedded_text)}")
print(f"임베딩 벡터의 내용: {embedded_text[:5]}...") # 벡터의 일부만 출력
# CSVLoader를 사용하여 데이터 로드
loader = CSVLoader(file_path='data/penguins.csv', encoding='utf-8')
data = loader.load()
# 로드된 데이터 확인
print(f"로드된 문서의 수: {len(data)}")
print(f"첫 번째 문서의 내용:\n{data[0].page_content}")
# 문서에서 텍스트 추출
texts = [doc.page_content for doc in data]
# 문서 임베딩
embedded_docs = embeddings.embed_documents(texts)
# 임베딩된 문서 벡터의 수 확인
print(f"임베딩된 문서 벡터의 수: {len(embedded_docs)}")
# 첫 번째 임베딩 벡터 확인
print(f"첫 번째 임베딩 벡터의 차원: {len(embedded_docs[0])}")
print(f"첫 번째 임베딩 벡터의 내용: {embedded_docs[0][:5]}...") # 벡터의 일부만 출력
pip install langchain openai python-dotenv
.env
파일 생성 및 API 키 저장.env
파일을 생성하고 다음과 같이 작성합니다:OPENAI_API_KEY=your_openai_api_key_here
data
폴더를 생성하고, 그 안에 penguins.csv
파일을 저장합니다. CSV 파일은 임의의 내용을 사용하셔도 됩니다.python your_script_name.py
이번 강좌에서는 LangChain을 사용하여 텍스트를 임베딩하고, 이를 문서에 적용하는 방법에 대해 알아보았습니다. 임베딩된 벡터는 자연어 처리에서 매우 유용하게 사용되며, 검색, 분류, 추천 시스템 등 다양한 분야에서 활용됩니다.
다음 강좌에서는 생성된 임베딩 벡터를 벡터 스토어에 저장하고 활용하는 방법에 대해 알아보겠습니다.