참조 : https://python.langchain.com/docs/modules/data_connection/text_embedding/
Text embedding models
Embedding class = text embedding models와 i/f를 위하여 design되었으며 다양한 embedding model 제공됨 (OpenAI, Hugging Face, Cohere 등)
Embedding은 Text 조각의 벡터 표현을 생성함 > 이를 통해서 가장 유사한 텍스트 조각을 찾을 수 있음
from langchain_openai import OpenAIEmbeddings
embeddings_model = OpenAIEmbeddings()
embeddings = embeddings_model.embed_documents(
[
"Hi there!",
"Oh, hello!",
"What's your name?",
"My friends call me World",
"Hello World!"
]
)
print('Output>', len(embeddings), len(embeddings[0]), embeddings[0][:5])
embedded_query = embeddings_model.embed_query("What was the name mentioned in the conversation?")
print('Output>', embedded_query[:5])
Output> 5 1536 [-0.020333572410984546, -0.007080554214029376, -0.02287368198875378, -0.02626472793048637, -0.037492009246741356]
Output> [0.0053848074247278025, -0.0005522561790177142, 0.038960665101309515, -0.0029398672940039064, -0.008987877434176594]
- 첫번째 결과 = embedding 된 결과가 전체 5개, 첫번째 embedding 결과가 1536 차원의 vector 값이라는 얘기
- 두번째 결과 = 쿼리 문장을 embedding 했을때 결과값이 vector 값으로 표시됨
Embedding 개요
Use Case
Case | Desc | Etc |
Semantic Search | 의미적으로 유사한 텍스트를 검색 사용자가 입력한 쿼리에 대한 가장 관련성 높은 문서/정보를 찾는데 사용 |
|
Document Classification | 문서를 특정 카테고리나 주제에 할당하는 분류작업 | |
Text Similarity Calculation | 텍스트 간의 유사성 정도를 정량적으로 평가 |
Providor
Case | Desc | Etc |
OpenAI | GPT와 같은 언어모델을 통해 임베딩 벡터 생성하는 API 제공 | |
Document Classification | Transformers 라이브러리를 통한 다양한 오픈소스 임베딩 모델 제공 | |
Text Similarity Calculation | Gemini, Gemma 등 언어모델에 적용되는 임베딩 모델 제공 |
Method
Case | Desc | Etc |
embed_document | 문서 객체의 집합을 입력으로 받아 각 문서를 벡터 공간에 임베딩함 주로 대량의 텍스트 데이터를 배치 단위로 처리할 때 사용 |
|
embed_query | 단일 텍스트 쿼리를 입력받아 벡터 공간에 임베딩 함 주로 사용자의 검색 쿼리를 임베딩하여 문서 집합 내에서 유사한 내용을 찾는데 사용됨 |
OpenEmbeddings