Chroma DB 임베딩

ChromaDB Embeddings

임베딩은 모든 종류의 데이터를 표현하는 인공지능 특유의 방법으로, 이로 인해 모든 종류의 인공지능 기반 도구와 알고리즘을 사용하는데 아주 적합합니다. 임베딩은 텍스트, 이미지를 표현할 수 있으며, 곧 오디오와 비디오도 표현할 수 있게 될 것입니다. 임베딩을 생성하는 많은 옵션이 있는데, 로컬에서 설치된 라이브러리를 사용하거나 API를 호출하는 방법이 있습니다.

크로마(Chroma)는 인기 있는 임베딩 제공자들에 대한 경량 래퍼를 제공하므로, 앱에서 이들을 쉽게 사용할 수 있게 해줍니다. 크로마 컬렉션을 생성할 때 임베딩 함수를 설정할 수 있으며, 이 함수는 자동으로 사용되거나, 직접 호출하여 사용할 수 있습니다.

크로마의 임베딩 함수를 가져오려면, chromadb.utils.embedding_functions 모듈을 가져오세요.

from chromadb.utils import embedding_functions

기본값: all-MiniLM-L6-v2

기본적으로 크로마는 Sentence Transformers all-MiniLM-L6-v2 모델을 사용하여 임베딩을 생성합니다. 이 임베딩 모델은 다양한 작업에 사용할 수 있는 문장과 문서 임베딩을 생성할 수 있습니다. 이 임베딩 함수는 사용자의 기기에서 로컬로 실행되며, 모델 파일을 다운로드해야 할 수 있습니다(이는 자동으로 발생할 것입니다).

default_ef = embedding_functions.DefaultEmbeddingFunction()


임베딩 함수는 컬렉션에 연결할 수 있으며, 이는 add, update, upsert 또는 query를 호출할 때마다 사용됩니다. 또한 디버깅에 유용할 수 있도록 이들을 직접 사용할 수도 있습니다.

val = default_ef(["foo"])

-> [[0.05035809800028801, 0.0626462921500206, -0.061827320605516434…]]

Sentence Transformers

Chroma는 모든 Sentence Transformers 모델을 사용하여 임베딩을 생성할 수 있습니다.

sentence_transformer_ef = embedding_functions.SentenceTransformerEmbeddingFunction(model_name="all-MiniLM-L6-v2")

선택적으로 model_name 인자를 전달할 수 있으며, 이를 통해 사용할 Sentence Transformers 모델을 선택할 수 있습니다. 기본적으로 Chroma는 all-MiniLM-L6-v2를 사용합니다. 사용 가능한 모든 모델의 목록은 이곳에서 확인할 수 있습니다.

이 코드는 특정 Sentence Transformers 모델을 지정하여 Chroma의 임베딩 함수를 설정하는 방법을 보여줍니다. 이렇게 하면, 해당 모델을 사용하여 데이터의 임베딩을 생성할 수 있게 됩니다. model_name 인자를 통해 다양한 Sentence Transformers 모델 중에서 선택할 수 있어, 필요에 따라 다른 모델을 시도하고 비교할 수 있습니다.

OpenAI

Chroma는 OpenAI의 임베딩 API에 대한 편리한 래퍼를 제공합니다. 이 임베딩 함수는 OpenAI의 서버에서 원격으로 실행되며, API 키가 필요합니다. OpenAI에서 계정을 등록함으로써 API 키를 받을 수 있습니다.

이 임베딩 함수는 openai 파이썬 패키지에 의존하며, pip install openai로 설치할 수 있습니다.

openai_ef = embedding_functions.OpenAIEmbeddingFunction(
                api_key="YOUR_API_KEY",
                model_name="text-embedding-ada-002"
            )

OpenAI 임베딩 모델을 Azure와 같은 다른 플랫폼에서 사용하려면 api_baseapi_type 매개변수를 사용할 수 있습니다:

openai_ef = embedding_functions.OpenAIEmbeddingFunction(
                api_key="YOUR_API_KEY",
                api_base="YOUR_API_BASE_PATH",
                api_type="azure",
                api_version="YOUR_API_VERSION",
                model_name="text-embedding-ada-002"
            )

선택적으로 model_name 인자를 전달할 수 있으며, 이를 통해 사용할 OpenAI 임베딩 모델을 선택할 수 있습니다. 기본적으로 Chroma는 text-embedding-ada-002를 사용합니다. 사용 가능한 모든 모델의 목록은 이곳에서 확인할 수 있습니다.

이 코드는 OpenAI의 임베딩 API를 사용하여 Chroma의 임베딩 함수를 설정하는 방법을 보여줍니다. api_key, api_base, api_type, api_version, 및 model_name과 같은 매개변수를 사용하여 설정을 사용자 정의할 수 있습니다. 이렇게하면 OpenAI 임베딩 모델을 사용하여 데이터의 임베딩을 생성하고, 필요에 따라 다양한 플랫폼과 모델을 시도하고 비교할 수 있습니다.

HuggingFace

Chroma는 HuggingFace의 임베딩 API에 대한 편리한 래퍼를 제공합니다. 이 임베딩 함수는 HuggingFace의 서버에서 원격으로 실행되며, API 키가 필요합니다. HuggingFace에서 계정을 등록함으로써 API 키를 받을 수 있습니다.

이 임베딩 함수는 requests 파이썬 패키지에 의존하며, pip install requests로 설치할 수 있습니다.

huggingface_ef = embedding_functions.HuggingFaceEmbeddingFunction(
    api_key="YOUR_API_KEY",
    model_name="sentence-transformers/all-MiniLM-L6-v2"
)

선택적으로 model_name 인자를 전달할 수 있으며, 이를 통해 사용할 HuggingFace 모델을 선택할 수 있습니다. 기본적으로 Chroma는 sentence-transformers/all-MiniLM-L6-v2를 사용합니다. 사용 가능한 모든 모델의 목록은 이곳에서 확인할 수 있습니다.

이 코드는 HuggingFace의 임베딩 API를 사용하여 Chroma의 임베딩 함수를 설정하는 방법을 보여줍니다. api_keymodel_name 매개변수를 사용하여 설정을 사용자 정의할 수 있습니다. 이렇게하면 HuggingFace 임베딩 모델을 사용하여 데이터의 임베딩을 생성하고, 필요에 따라 다양한 모델을 시도하고 비교할 수 있습니다.


Sentence Transformers

Sentence Transformers는 문장, 텍스트, 이미지 임베딩을 위한 Python 프레임워크입니다. 이 프레임워크는 Siamese BERT-Networks를 사용하여 벡터 공간에서 문장, 단락 및 이미지의 임베딩을 계산하며, 이 벡터 공간에서 유사한 텍스트 또는 이미지는 가까이 위치하게 됩니다. Sentence Transformers는 의미론적 텍스트 유사도(semantic text similarity), 의미론적 검색(semantic search), 그리고 의미론적 중복(semantic duplication)과 같은 응용 프로그램에 사용할 수 있으며, 100개 이상의 언어를 지원합니다.

이 프레임워크의 초기 작업은 Siamese BERT-Networks를 사용하여 문장 임베딩을 생성하는 Sentence-BERT라는 논문에서 설명되어 있습니다.

Sentence Transformers 라이브러리를 설치하려면 다음 명령을 사용할 수 있습니다:

pip install -U sentence-transformers

이 라이브러리를 사용하면 문장 임베딩을 쉽게 계산할 수 있습니다:

from sentence_transformers import SentenceTransformer
model = SentenceTransformer('paraphrase-MiniLM-L6-v2')

이 코드 스니펫은 Sentence Transformer 모델을 로드하여 사용할 준비를 합니다.

이러한 정보는 Sentence Transformers가 어떻게 작동하며 어떻게 사용할 수 있는지에 대한 깊은 이해를 제공하며, 인공지능 애플리케이션에서 이러한 유형의 임베딩을 어떻게 활용할 수 있는지에 대한 통찰력을 제공합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다