Embedding (임베딩)

5단 분석법

순서
분석
단어
내용
1
일반 명사
Embed
(단단히) 박다, 끼워넣다
-ing
동사를 현재 분사로 만들어주는 데 쓰임
Embedding
단단히 끼워넣는 것
2
고유 명사
Embedding
사람이 쓰는 자연어를 기계가 이해할 수 있는 숫자의 나열인 벡터로 바꾼 결과 혹은 그 과정 전체 (틀렸지만 비유를 통해 설명하자면, 변환 결과 혹은 변환 알고리즘 == AC-DC 어댑터, 비디오 포맷 변환기)
3
사용 이유
Embedding
임베딩을 통해 텍스트의 의미를 벡터로 변환해 빠른 연산과 다양한 응용을 가능하게 하기 때문에 즉, 텍스트를 벡터로 바꿔주기 위해서
4
사용 방법
Embedding
LangChainEmbeddings 클래스를 이용해 텍스트를 벡터로 변환
5
다른 기술과의 비교
Embedding
-

정의

일반 명사

Embed
(단단히) 박다, 끼워넣다
-ing
동사를 현재 분사로 만들어주는 데 쓰임
Embedding
단단히 끼워넣는 것
Embed는 (단단히) 박다, 끼워넣다 라는 의미를 가지고 있고, -ing는 동사를 현재 분사로 만들어주는데 쓰입니다.
그래서, Embeding이라는 단어의 뜻을 생각해보면 단단히 끼워넣는 것이라고 생각해 볼 수 있습니다.
고유 명사를 한 번 살펴볼까요?

고유 명사

Embedding
사람이 쓰는 자연어를 기계가 이해할 수 있는 숫자의 나열인 벡터로 바꾼 결과 혹은 그 과정 전체
Embedding은 사람이 쓰는 자연어를 기계가 이해할 수 있는 숫자의 나열인 벡터로 바꾼 결과 혹은 그 과정 전체를 말 합니다.
LangChain에서 임베딩은 다양한 NLP 모델에서 생성된 텍스트 데이터를 벡터로 변환하여 텍스트의 의미를 보존하면서 연산할 수 있도록 하는 기능입니다.
LangChain은 이를 통해 문서 검색, 유사도 측정 등의 기능을 제공합니다.
임베딩을 통한 변환은 원본 데이터의 의미와 특성을 수학적으로 표현하여, AI 시스템이 이해하고 처리할 수 있는 형태로 만듭니다.
즉, 임베딩은 AI가 데이터의 의미를 파악하고 유사성을 계산할 수 있게 하는 '번역기' 역할을 합니다.
임베딩의 종류
종류
설명
단어 임베딩 (Word Embedding)
개별 단어를 벡터로 변환하여 단어 간의 의미적 관계를 수치적으로 표현하는 방법입니다.
"사과"와 "배"는 유사한 벡터를 가지며, "사과"와 "자동차"는 거리가 멉니다.
문장 임베딩 (Sentence Embedding)
문장의 전체 의미를 하나의 벡터로 변환하여 문장 간의 유사성을 계산할 수 있게 하는 방법입니다.
"나는 책을 읽었다."와 "독서를 했다."는 유사한 벡터를 가집니다.
문서 임베딩 (Document Embedding)
전체 문서의 내용을 벡터로 변환하여 문서 간의 유사성을 비교하고 검색할 수 있게 하는 방법입니다.
두 개의 뉴스 기사 중 동일한 주제를 다루는 기사는 유사한 벡터로 표현됩니다.

사용 이유

Embedding
임베딩을 통해 텍스트의 의미를 벡터로 변환해 빠른 연산과 다양한 응용을 가능하게 하기 때문에 즉, 텍스트를 벡터로 바꿔주기 위해서
이유
설명
의미 보존
텍스트의 의미를 보존하면서 벡터로 변환하여 컴퓨터가 이해할 수 있게 합니다.
빠르고 정확한 연산
고차원 데이터를 저차원 벡터로 변환하여 계산의 속도와 정확도를 높입니다.
다양한 응용
텍스트 유사도, 문서 검색, 군집화 등 다양한 응용이 가능합니다.
graph LR
    A[텍스트 입력] --> B((텍스트 전처리))
    B -.-> C[임베딩 모델]
    A -.-> C[임베딩 모델]
    style C fill:#ffcc00, stroke:#333, stroke-width:2px
    C --> D[벡터 생성]
    D --> E{벡터 저장 필요?}
    E -->|예| F[벡터 데이터베이스]
    E -->|아니오| G[벡터 사용]
    F --> G
    G --> H[유사도 검색/분류 등]
    H --> I[결과 반환]
Mermaid
복사
임베딩은 단순히 텍스트를 숫자로 변환하는 것 이상의 의미를 가집니다.
위 플로우 차트에서 보는 것처럼, 벡터 데이터베이스에 데이터를 쌓기 위해서 임베딩은 필수적으로 필요합니다.
AI 시스템이 텍스트의 의미를 이해하고, 빠르고 정확하게 처리하며, 더 지능적인 방식으로 정보를 활용할 수 있게 해주는 핵심 기술입니다.
특히 랭체인과 같은 프레임워크에서 임베딩은 대규모 언어 모델(LLM)의 능력을 더욱 확장하고, 실제 세계의 복잡한 문제를 해결하는 데 필수적인 역할을 합니다.
이를 통해 개발자들은 의도한 맥락에 잘 맞는 AI 애플리케이션을 구축할 수 있게 됩니다.
설명:
텍스트 전처리: 입력된 텍스트를 분석하고 필요한 형태로 변환합니다.
임베딩 모델: 전처리된 텍스트를 벡터로 변환합니다.
벡터 생성: 텍스트의 의미를 수치화한 벡터를 생성합니다.
벡터 저장 여부 결정: 생성된 벡터를 데이터베이스에 저장할지 여부를 결정합니다.
벡터 활용: 저장된 벡터를 사용하여 유사도 검색, 분류 등의 작업을 수행합니다.
결과 반환: 최종 결과를 사용자나 시스템에 전달합니다.

사용 방법

Embedding
LangChainEmbeddings 클래스를 이용해 텍스트를 벡터로 변환
이번 페이지에서는 문장 임베딩 실습을 진행하도록 하겠습니다.
랭체인에서 중요한 임베딩 방식인 문서 임베딩의 사용방법은 다른 페이지에서 따로 설명과 실습을 진행 하겠습니다.

1. 라이브러리 설치 및 OpenAIEmbeddings 클래스 불러오기

!pip install langchain_openai
JSON
복사
# OpenAI API 키 설정 (환경 변수로 설정) import os os.environ["OPENAI_API_KEY"] = "your-openai-api-key"
Bash
복사
os: 환경 변수를 설정하기 위한 표준 라이브러리입니다.
os.environ: 환경 변수를 설정하는 방법입니다. "OPENAI_API_KEY"는 OpenAI API 키를 저장하는 환경 변수입니다.
"your-openai-api-key": OpenAI API 키로, 실제 OpenAI 계정에서 발급받은 API 키로 대체해야 합니다.
from langchain_openai import OpenAIEmbeddings
Python
복사
from langchain_openai import OpenAIEmbeddings: langchain_openai 모듈에서 OpenAIEmbeddings 클래스를 임포트합니다.
이 클래스는 텍스트 데이터를 벡터로 변환하는 기능을 제공합니다.

2. 임베딩 모델 생성

임베딩 모델을 생성합니다.
model = OpenAIEmbeddings()
Python
복사
model = OpenAIEmbeddings(): OpenAIEmbeddings 클래스의 인스턴스를 생성하여 model 변수에 저장합니다. 이 모델을 사용해 텍스트 데이터를 임베딩할 수 있습니다.

3. 입력 텍스트 설정

임베딩할 텍스트 데이터를 설정합니다.
input_text = "LangChain은 임베딩을 지원합니다."
Python
복사
input_text: 임베딩할 입력 텍스트입니다. 여기서는 "LangChain은 임베딩을 지원합니다."라는 문장을 설정합니다.

4. 텍스트 데이터를 벡터로 변환

이제 텍스트 데이터를 벡터로 변환합니다.
vector = model.embed_query(input_text) print(vector)
Python
복사
vector = model.embed_query(input_text): model 인스턴스의 embed_query 메서드를 사용하여 input_text 데이터를 벡터로 변환하고, 결과를 vector 변수에 저장합니다.
embed_query(): 텍스트 데이터를 임베딩 벡터로 변환하는 메서드 입니다.
매개변수로 임베딩할 텍스트 데이터를 받습니다. 문자열 형식으로 제공되며, 이 텍스트가 임베딩 벡터로 변환됩니다.
텍스트 데이터의 임베딩 벡터를 나타내는 실수(float) 값들의 리스트를 반환합니다. 이 벡터는 주어진 텍스트의 의미를 수치적으로 표현한 것 입니다.

Google Colab