개요

이 개요는 텍스트 기반 임베딩 모델을 다룹니다. LangChain은 현재 멀티모달 임베딩을 지원하지 않습니다.
임베딩 모델은 문장, 문단, 트윗과 같은 원시 텍스트를 그 의미적(semantic) 의미를 포착하는 고정 길이의 숫자 벡터로 변환합니다. 이 벡터를 사용하면 기계가 정확히 동일한 단어가 아니라 의미를 기준으로 텍스트를 비교하고 검색할 수 있습니다. 실제로는 유사한 아이디어를 가진 텍스트가 벡터 공간에서 서로 가깝게 위치하게 됩니다. 예를 들어, 단지 “machine learning”이라는 구문만 일치시키는 대신, 다른 표현을 사용하더라도 관련 개념을 논의하는 문서를 찾아낼 수 있습니다.

작동 방식

  1. Vectorization — 모델이 각 입력 문자열을 고차원 벡터로 인코딩합니다.
  2. Similarity scoring — 벡터를 수학적 지표로 비교하여 해당 텍스트들이 얼마나 밀접하게 관련되어 있는지 측정합니다.

유사도 지표

임베딩을 비교할 때 일반적으로 다음 지표를 사용합니다:
  • Cosine similarity — 두 벡터 사이의 각도를 측정합니다.
  • Euclidean distance — 점들 사이의 직선 거리를 측정합니다.
  • Dot product — 한 벡터가 다른 벡터에 투영되는 정도를 측정합니다.
두 벡터 사이의 cosine similarity를 계산하는 예시는 다음과 같습니다:
import numpy as np

def cosine_similarity(vec1, vec2):
    dot = np.dot(vec1, vec2)
    return dot / (np.linalg.norm(vec1) * np.linalg.norm(vec2))

similarity = cosine_similarity(query_embedding, document_embedding)
print("Cosine Similarity:", similarity)

인터페이스

LangChain은 Embeddings 인터페이스를 통해 텍스트 임베딩 모델(예: OpenAI, Cohere, Hugging Face)을 위한 표준 인터페이스를 제공합니다. 두 가지 주요 메서드를 사용할 수 있습니다:
  • embed_documents(texts: List[str]) → List[List[float]]: 문서 목록을 임베딩합니다.
  • embed_query(text: str) → List[float]: 단일 쿼리를 임베딩합니다.
이 인터페이스는 쿼리와 문서를 서로 다른 전략으로 임베딩할 수 있도록 허용하지만, 실제로 대부분의 제공자는 이를 동일한 방식으로 처리합니다.

주요 통합

제공자패키지
OpenAIlangchain-openai
OpenAI on Azurelangchain-openai
Google Geminilangchain-google-genai
Ollamalangchain-ollama
Togetherlangchain-together
Fireworkslangchain-fireworks
MistralAIlangchain-mistralai
Coherelangchain-cohere
Nomiclangchain-nomic
Fakelangchain-core
Databricksdatabricks-langchain
IBMlangchain-ibm
NVIDIAlangchain-nvidia
AI/ML APIlangchain-aimlapi

캐싱

임베딩은 다시 계산할 필요가 없도록 저장하거나 일시적으로 캐싱할 수 있습니다. 임베딩 캐싱은 CacheBackedEmbeddings를 사용해 수행할 수 있습니다. 이 래퍼는 임베딩을 key-value 스토어에 저장하며, 텍스트를 해시하고 그 해시를 캐시의 key로 사용합니다. CacheBackedEmbeddings를 초기화하는 기본 지원 방법은 from_bytes_store입니다. 이 메서드는 다음 매개변수를 받습니다:
  • underlying_embedder: 임베딩에 사용할 embedder.
  • document_embedding_cache: 문서 임베딩 캐싱을 위한 ByteStore.
  • batch_size: (선택 사항, 기본값 None) 스토어 업데이트 사이에 임베딩할 문서 수.
  • namespace: (선택 사항, 기본값 "") 문서 캐시에 사용할 namespace. 충돌을 피하는 데 도움이 됩니다(예: 임베딩 모델 이름으로 설정).
  • query_embedding_cache: (선택 사항, 기본값 None) 쿼리 임베딩 캐싱을 위한 ByteStore 또는 document_embedding_cache와 동일한 스토어를 재사용하려면 True.
import time
from langchain_classic.embeddings import CacheBackedEmbeddings  
from langchain_classic.storage import LocalFileStore 
from langchain_core.vectorstores import InMemoryVectorStore

# Create your underlying embeddings model
underlying_embeddings = ... # e.g., OpenAIEmbeddings(), HuggingFaceEmbeddings(), etc.

# Store persists embeddings to the local filesystem
# This isn't for production use, but is useful for local
store = LocalFileStore("./cache/") 

cached_embedder = CacheBackedEmbeddings.from_bytes_store(
    underlying_embeddings,
    store,
    namespace=underlying_embeddings.model
)

# Example: caching a query embedding
tic = time.time()
print(cached_embedder.embed_query("Hello, world!"))
print(f"First call took: {time.time() - tic:.2f} seconds")

# Subsequent calls use the cache
tic = time.time()
print(cached_embedder.embed_query("Hello, world!"))
print(f"Second call took: {time.time() - tic:.2f} seconds")
프로덕션 환경에서는 일반적으로 데이터베이스나 클라우드 스토리지와 같은 더 견고한 영구 스토어를 사용합니다. 옵션은 stores integrations를 참고하세요.

모든 임베딩 모델

Aleph Alpha

Anyscale

Ascend

AI/ML API

AwaDB

AzureOpenAI

Baichuan Text Embeddings

Baidu Qianfan

Baseten

Bedrock

BGE on Hugging Face

Bookend AI

Clarifai

Cloudflare Workers AI

Clova Embeddings

Cohere

DashScope

Databricks

DeepInfra

EDEN AI

Elasticsearch

Embaas

Fake Embeddings

FastEmbed by Qdrant

Fireworks

(Card title=“Google Gemini” icon=“link” href=“/oss/python/integrations/text_embedding/google_generative_ai” arrow=“true” cta=“가이드 보기” />

Google Vertex AI

GPT4All

Gradient

GreenNode

Hugging Face

IBM watsonx.ai

Infinity

Instruct Embeddings

IPEX-LLM CPU

IPEX-LLM GPU

Intel Extension for Transformers

Jina

John Snow Labs

LASER

Lindorm

Llama.cpp

LLMRails

LocalAI

MiniMax

MistralAI

Model2Vec

ModelScope

MosaicML

Naver

Nebius

Netmind

NLP Cloud

Nomic

NVIDIA NIMs

Oracle Cloud Infrastructure

Ollama

OpenClip

OpenAI

OpenVINO

Optimum Intel

Oracle AI Vector Search

OVHcloud

Pinecone Embeddings

PredictionGuard

PremAI

SageMaker

SambaNovaCloud

SambaStudio

Self Hosted

Sentence Transformers

Solar

SpaCy

SparkLLM

TensorFlow Hub

Text Embeddings Inference

TextEmbed

Titan Takeoff

Together AI

Upstage

Volc Engine

Voyage AI

Xinference

YandexGPT

ZhipuAI


Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.
I