임베딩(Embeddings), 즉 특성 벡터(Feature Vectors)는 인공 지능이 모든 유형의 데이터를 표현하는 원시 방식으로, 여러 가지 인공 지능 도구 및 알고리즘과 잘 어울리는 특성을 가지고 있습니다. 텍스트, 이미지, 오디오 및 비디오를 표현할 수 있습니다. 오픈 소스 텍스트 임베딩 모델을 사용하거나 클라우드 서비스의 API를 호출하여 특성 벡터 데이터를 생성하는 여러 가지 옵션이 있습니다.
Chroma는 인기있는 임베딩 모델에 대한 가벼운 래퍼를 제공하여 애플리케이션에서 사용하기 쉽게 만들어줍니다. Chroma 컬렉션을 생성할 때 임베딩 함수를 설정하여 텍스트 데이터를 저장하고 업데이트할 때 자동으로 텍스트 벡터를 계산할 수 있습니다.
참고: Chroma의 캡슐화된 임베딩 함수를 사용하지 않고도 벡터를 계산하지 않을 수도 있습니다. 사전에 텍스트 벡터 데이터를 계산할 임베딩 모델을 선택할 수 있습니다.
Chroma로부터 임베딩 함수를 가져오려면 chromadb.utils
에서 embedding_functions
모듈을 import합니다.
from chromadb.utils import embedding_functions
기본 모델: all-MiniLM-L6-v2
기본적으로 Chroma는 문장 변환기의 all-MiniLM-L6-v2 모델을 사용하여 벡터를 계산합니다. 이 임베딩 모델은 문장 및 문서 벡터를 생성할 수 있습니다. 이 임베딩 모델의 기능은 로컬 머신에서 실행되며 모델 파일을 다운로드해야 합니다(이는 자동으로 수행됩니다).
default_ef = embedding_functions.DefaultEmbeddingFunction()
변형 모델 (Transformers Model)
Chroma는 어떤 문장 변환기 모델이든 사용하여 벡터를 계산할 수 있습니다.
sentence_transformer_ef = embedding_functions.SentenceTransformerEmbeddingFunction(model_name="all-MiniLM-L6-v2")
model_name
매개변수를 선택적으로 전달하여 사용할 Sentence Transformers 모델을 선택할 수 있습니다. 기본적으로 Chroma는 all-MiniLM-L6-v2를 사용합니다. 모델 이름은 Hugging Face에서 검색할 수 있습니다.
OpenAI 모델
Chroma는 OpenAI의 임베딩 API에 대한 편리한 래퍼를 제공합니다. 이를 위해서는 OpenAI 인터페이스를 호출하고 API 키가 필요합니다. OpenAI 계정을 등록하여 API 키를 얻을 수 있습니다.
이 임베딩 함수는 openai
Python 패키지에 의존하며, pip install openai
를 사용하여 설치할 수 있습니다.
openai_ef = embedding_functions.OpenAIEmbeddingFunction(
api_key="YOUR_API_KEY",
model_name="text-embedding-ada-002"
)
Azure와 같은 플랫폼에서 OpenAI 임베딩 모델을 사용하려면 api_base
및 api_type
매개변수를 사용할 수 있습니다.
openai_ef = embedding_functions.OpenAIEmbeddingFunction(
api_key="YOUR_API_KEY",
api_base="YOUR_API_BASE_PATH",
api_type="azure",
model_name="text-embedding-ada-002"
)
사용자 정의 임베딩 함수 (Custom Embedding Function)
EmbeddingFunction
기본 클래스의 메서드를 구현하여 Chroma와 함께 작동할 사용자 정의 임베딩 함수를 만들 수 있습니다.
from chromadb.api.types import Documents, EmbeddingFunction, Embeddings
class MyEmbeddingFunction(EmbeddingFunction):
def __call__(self, texts: Documents) -> Embeddings:
return embeddings