Embedding - 임베딩

Embedding
임베딩(Embedding)은 텍스트 데이터를 숫자로 이루어진 벡터로 변환하는 과정을 말합니다. 즉 일반 텍스트 데이터를 LLM모델이 이해할 수 있는 수치로 변환하는 것입니다. 이 임베딩 벡터는 Vector Store에 저장되며 유사한 의미를 가진 벡터끼리는 가까운 곳에 저장 됩니다.
EX) 사과와 풋 사과가 벡터로 변환되어 저장된다면 두 단어는 상당히 가까운 곳에 위치해 있을 것
Embedding 활용분야
검색
벡터 DB에 문서를 저장하고 사용자의 질문과 가장 유사한 문서를 검색하여 반환해 줌
일반적인 LIKE매칭이 아닌 의미를 기반으로 둔 검색이 가능해짐
문서 분류
임베딩 벡터를 활용하여 문서 내에서 특정 카테고리 및 주체를 분류할 수 있다
Embedding 실습
1) OpenAi Embedding
OpenAi에서 지원하는 임베딩 생성 클래스.
# 1. OpenAI Embedding
from langchain_openai import OpenAIEmbeddings
embeddings_model = OpenAIEmbeddings()
vector = embeddings_model.embed_query("오늘 날씨 어때?")
#print(len(vector))
#print(vector[:5])
vector = embeddings_model.embed_documents([
"안녕하세요?" ,
"안녕하쇼?",
"안녕",
"하이",
"안녕하시꾸가?"
])
print(len(vector))
print(vector[0][:5])
2) Hugging Face Embedding
오픈소스 기반의 AI모델로 로켈 환경에서 실행할 수 있으며 무료이다.
pip install -U sentence-transformers
# 2. Hugging Face Embedding
from langchain_community.embeddings import HuggingFaceEmbeddings
embeddings_model = HuggingFaceEmbeddings(
#model_name='jhgan/ko-sroberta-nli',
model_name='intfloat/multilingual-e5-large-instruct',
model_kwargs={'device':'cpu'},
encode_kwargs={'normalize_embeddings':True},
)
vector = embeddings_model.embed_query("오늘 날씨 어때?")
print(len(vector))
print(vector[:5])
vector = embeddings_model.embed_documents([
"안녕하세요?" ,
"안녕하쇼?",
"안녕",
"하이",
"안녕하시꾸가?"
])
3) 기타
Google, LLAMA , OLLAMA등 다양함. 커리큘럼이 커지면 진행
Last updated