Les plongements, également connus sous le nom de vecteurs de caractéristiques, sont la manière native dont l'intelligence artificielle représente tout type de donnée, les rendant ainsi adaptés à une utilisation avec divers outils et algorithmes d'IA. Ils peuvent représenter du texte, des images, ainsi que l'audio et la vidéo. Il existe de nombreuses options pour générer des données de vecteurs de caractéristiques, notamment en utilisant des modèles d'incorporation de texte open source ou en appelant des API à partir de services cloud.

Chroma fournit une enveloppe légère pour les modèles d'incorporation populaires, facilitant ainsi leur utilisation dans vos applications. Lors de la création d'une collection Chroma, vous pouvez définir une fonction d'incorporation qui calculera automatiquement des vecteurs de texte lors de l'enregistrement et de la mise à jour des données textuelles.

Remarque: Vous pouvez également choisir de ne pas utiliser la fonction d'incorporation encapsulée de Chroma pour calculer des vecteurs. Vous pouvez choisir n'importe quel modèle d'incorporation pour pré-calculer des données de vecteurs de texte.

Pour obtenir la fonction d'incorporation de Chroma, importez le module embedding_functions de chromadb.utils.

from chromadb.utils import embedding_functions

Modèle par défaut : all-MiniLM-L6-v2

Par défaut, Chroma utilise le modèle all-MiniLM-L6-v2 de Sentence Transformers pour calculer des vecteurs. Ce modèle d'incorporation peut créer des vecteurs de phrases et de documents. La fonctionnalité de ce modèle d'incorporation s'exécute sur la machine locale et nécessite le téléchargement des fichiers du modèle (ce qui est fait automatiquement).

default_ef = embedding_functions.DefaultEmbeddingFunction()

Modèle Transformers

Chroma peut également utiliser n'importe quel modèle Sentence Transformers pour calculer des vecteurs.

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

Vous pouvez transmettre un paramètre optionnel model_name pour choisir le modèle Sentence Transformers que vous souhaitez utiliser. Par défaut, Chroma utilise all-MiniLM-L6-v2. Vous pouvez rechercher les noms de modèles sur Hugging Face.

Modèle OpenAI

Chroma fournit une enveloppe pratique pour l'API d'incorporation d'OpenAI. Cela nécessite l'appel de l'interface OpenAI et une clé API. Vous pouvez obtenir une clé API en vous inscrivant à un compte OpenAI.

Cette fonction d'incorporation dépend du package Python openai, qui peut être installé en utilisant pip install openai.

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

Pour utiliser le modèle d'incorporation OpenAI sur des plateformes telles qu'Azure, vous pouvez utiliser les paramètres api_base et api_type :

openai_ef = embedding_functions.OpenAIEmbeddingFunction(
                api_key="VOTRE_CLÉ_API",
                api_base="VOTRE_CHEMIN_BASE_API",
                api_type="azure",
                model_name="text-embedding-ada-002"
            )

Fonction d'incorporation personnalisée

Vous pouvez créer votre propre fonction d'incorporation pour travailler avec Chroma en implémentant simplement les méthodes de la classe de base EmbeddingFunction.

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

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