Embedding - 임베딩

Embedding

임베딩(Embedding)은 텍스트 데이터를 숫자로 이루어진 벡터로 변환하는 과정을 말합니다. 즉 일반 텍스트 데이터를 LLM모델이 이해할 수 있는 수치로 변환하는 것입니다. 이 임베딩 벡터는 Vector Store에 저장되며 유사한 의미를 가진 벡터끼리는 가까운 곳에 저장 됩니다.

EX) 사과와 풋 사과가 벡터로 변환되어 저장된다면 두 단어는 상당히 가까운 곳에 위치해 있을 것

Embedding 활용분야

  1. 검색

    1. 벡터 DB에 문서를 저장하고 사용자의 질문과 가장 유사한 문서를 검색하여 반환해 줌

    2. 일반적인 LIKE매칭이 아닌 의미를 기반으로 둔 검색이 가능해짐

  2. 문서 분류

    1. 임베딩 벡터를 활용하여 문서 내에서 특정 카테고리 및 주체를 분류할 수 있다

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