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) 값들의 리스트를 반환합니다. 이 벡터는 주어진 텍스트의 의미를 수치적으로 표현한 것 입니다.