Os embeddings, também conhecidos como vetores de características, são a maneira nativa como a inteligência artificial representa qualquer tipo de dado, tornando-os bem adequados para uso com várias ferramentas e algoritmos de IA. Eles podem representar texto, imagens, bem como áudio e vídeo. Existem muitas opções para gerar dados de vetores de características, incluindo o uso de modelos de incorporação de texto de código aberto ou chamando APIs de serviços de nuvem.

Chroma fornece um invólucro leve para modelos de incorporação populares, tornando fácil usá-los em suas aplicações. Ao criar uma coleção Chroma, você pode definir uma função de incorporação que calculará automaticamente vetores de texto ao salvar e atualizar dados de texto.

Nota: Você também pode optar por não usar a função de incorporação encapsulada do Chroma para calcular vetores. Você pode selecionar qualquer modelo de incorporação para pré-calcular dados de vetor de texto.

Para obter a função de incorporação do Chroma, importe o módulo embedding_functions de chromadb.utils.

from chromadb.utils import embedding_functions

Modelo Padrão: all-MiniLM-L6-v2

Por padrão, o Chroma usa o modelo all-MiniLM-L6-v2 do Sentence Transformers para calcular vetores. Este modelo de incorporação pode criar vetores de sentenças e documentos. A funcionalidade deste modelo de incorporação é executada na máquina local e requer o download dos arquivos do modelo (o que é feito automaticamente).

default_ef = embedding_functions.DefaultEmbeddingFunction()

Modelo Transformers

O Chroma também pode usar qualquer modelo Sentence Transformers para calcular vetores.

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

Você pode passar um parâmetro opcional model_name para escolher o modelo Sentence Transformers que deseja usar. Por padrão, o Chroma usa all-MiniLM-L6-v2. Você pode pesquisar nomes de modelo na Hugging Face.

Modelo OpenAI

O Chroma fornece um invólucro conveniente para a API de incorporação da OpenAI. Isso requer chamar a interface da OpenAI e uma chave de API. Você pode obter uma chave de API registrando-se para uma conta na OpenAI.

Esta função de incorporação depende do pacote openai para Python, que pode ser instalado usando pip install openai.

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

Para usar o modelo de incorporação da OpenAI em plataformas como Azure, você pode usar os parâmetros api_base e 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"
            )

Função de Incorporação Personalizada

Você pode criar sua própria função de incorporação para trabalhar com o Chroma simplesmente implementando os métodos da classe base EmbeddingFunction.

from chromadb.api.types import Documents, EmbeddingFunction, Embeddings

class MyEmbeddingFunction(EmbeddingFunction):
    def __call__(self, texts: Documents) -> Embeddings:
        return embeddings