I embedding, noto anche come vettori delle caratteristiche, è il modo nativo con cui l'intelligenza artificiale rappresenta qualsiasi tipo di dati, rendendoli adatti all'uso con vari strumenti e algoritmi di intelligenza artificiale. Possono rappresentare testi, immagini, nonché audio e video. Ci sono molte opzioni per generare dati vettoriali delle caratteristiche, tra cui l'utilizzo di modelli di embedding di testo open source o chiamare le API dei servizi cloud.

Chroma fornisce un wrapper leggero per i modelli di embedding popolari, semplificandone l'utilizzo nelle tue applicazioni. Quando crei una collezione in Chroma, puoi impostare una funzione di embedding che calcolerà automaticamente i vettori di testo durante il salvataggio e l'aggiornamento dei dati di testo.

Nota: Puoi anche scegliere di non utilizzare la funzione di embedding incapsulata di Chroma per calcolare i vettori. Puoi selezionare qualsiasi modello di embedding per precalcolare i dati vettoriali di testo.

Per ottenere la funzione di embedding da Chroma, importa il modulo embedding_functions da chromadb.utils.

from chromadb.utils import embedding_functions

Modello predefinito: all-MiniLM-L6-v2

Per impostazione predefinita, Chroma utilizza il modello all-MiniLM-L6-v2 di Sentence Transformers per calcolare i vettori. Questo modello di embedding può creare vettori di frase e documento. La funzionalità di questo modello di embedding viene eseguita sulla macchina locale e richiede il download dei file del modello (che avviene automaticamente).

default_ef = embedding_functions.DefaultEmbeddingFunction()

Modello Transformers

Chroma può anche utilizzare qualsiasi modello di Sentence Transformers per calcolare i vettori.

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

Puoi passare un parametro opzionale model_name per scegliere il modello di Sentence Transformers che desideri utilizzare. Per impostazione predefinita, Chroma utilizza all-MiniLM-L6-v2. Puoi cercare i nomi dei modelli su Hugging Face.

Modello OpenAI

Chroma fornisce un pratico wrapper per l'API di embedding di OpenAI. Questo richiede la chiamata all'interfaccia di OpenAI e una chiave API. Puoi ottenere una chiave API registrandoti per un account OpenAI.

Questa funzione di embedding dipende dal pacchetto Python openai, che può essere installato utilizzando pip install openai.

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

Per utilizzare il modello di embedding OpenAI su piattaforme come Azure, puoi utilizzare i parametri api_base e api_type:

openai_ef = embedding_functions.OpenAIEmbeddingFunction(
                api_key="LA_TUA_CHIAVE_API",
                api_base="IL_TUO_PERCORSO_BASE_API",
                api_type="azure",
                model_name="text-embedding-ada-002"
            )

Funzione di embedding personalizzata

Puoi creare la tua funzione di embedding per lavorare con Chroma semplicemente implementando i metodi della classe base EmbeddingFunction.

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

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