Skip to main content

개요

이 개요는 텍스트 기반 임베딩 모델을 다룹니다. LangChain은 현재 멀티모달 임베딩을 지원하지 않습니다.
임베딩 모델은 문장, 단락, 트윗과 같은 원시 텍스트를 의미론적 의미를 담은 고정 길이의 숫자 벡터로 변환합니다. 이러한 벡터를 통해 기계는 정확한 단어가 아닌 의미를 기반으로 텍스트를 비교하고 검색할 수 있습니다. 실제로 이는 유사한 아이디어를 가진 텍스트들이 벡터 공간에서 서로 가까이 배치된다는 것을 의미합니다. 예를 들어, *“machine learning”*이라는 구문만 정확히 매칭하는 대신, 임베딩은 다른 표현을 사용하더라도 관련된 개념을 논의하는 문서들을 찾아낼 수 있습니다.

작동 방식

  1. 벡터화 — 모델이 각 입력 문자열을 고차원 벡터로 인코딩합니다.
  2. 유사도 점수화 — 벡터들을 수학적 메트릭을 사용하여 비교함으로써 기본 텍스트들이 얼마나 밀접하게 관련되어 있는지 측정합니다.

유사도 메트릭

임베딩을 비교하는 데 일반적으로 사용되는 여러 메트릭이 있습니다:
  • 코사인 유사도 — 두 벡터 사이의 각도를 측정합니다.
  • 유클리드 거리 — 점들 사이의 직선 거리를 측정합니다.
  • 내적 — 한 벡터가 다른 벡터에 얼마나 투영되는지 측정합니다.
다음은 두 벡터 간 코사인 유사도를 계산하는 예제입니다:
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를 사용하여 수행할 수 있습니다. 이 래퍼는 임베딩을 키-값 저장소에 저장하며, 텍스트를 해시하고 해시를 캐시의 키로 사용합니다. CacheBackedEmbeddings를 초기화하는 주요 지원 방법은 from_bytes_store입니다. 다음 매개변수를 받습니다:
  • underlying_embedder: 임베딩에 사용할 임베더입니다.
  • document_embedding_cache: 문서 임베딩을 캐싱하기 위한 ByteStore입니다.
  • batch_size: (선택사항, 기본값 None) 저장소 업데이트 사이에 임베딩할 문서 수입니다.
  • 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")
프로덕션 환경에서는 일반적으로 데이터베이스나 클라우드 스토리지와 같은 더욱 견고한 영구 저장소를 사용합니다. 옵션은 저장소 통합을 참조하세요.

모든 임베딩 모델

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

Google Gemini

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