Einbettungen, auch als Merkmalsvektoren bekannt, sind die natürliche Art und Weise, wie künstliche Intelligenz jegliche Art von Daten darstellt, was sie für den Einsatz in verschiedenen KI-Werkzeugen und Algorithmen geeignet macht. Sie können Texte, Bilder sowie Audio- und Videodaten darstellen. Es gibt viele Möglichkeiten, Merkmalsvektordaten zu generieren, einschließlich der Verwendung von Open-Source-Texteinbettungsmodellen oder dem Aufruf von APIs von Cloud-Services.

Chroma bietet eine leichtgewichtige Umhüllung für beliebte Einbettungsmodelle, die es einfach macht, sie in Ihren Anwendungen zu verwenden. Beim Erstellen einer Chroma-Sammlung können Sie eine Einbettungsfunktion festlegen, die automatisch Textvektoren berechnet, wenn Textdaten gespeichert und aktualisiert werden.

Hinweis: Sie können auch wählen, die umschlossene Einbettungsfunktion von Chroma nicht zu verwenden, um Vektoren zu berechnen. Sie können ein beliebiges Einbettungsmodell auswählen, um Textvektordaten vorab zu berechnen.

Um die Einbettungsfunktion von Chroma zu erhalten, importieren Sie das Modul embedding_functions aus chromadb.utils.

from chromadb.utils import embedding_functions

Standardmodell: all-MiniLM-L6-v2

Standardmäßig verwendet Chroma das all-MiniLM-L6-v2-Modell von Sentence Transformers zur Berechnung von Vektoren. Dieses Einbettungsmodell kann Satz- und Dokumentenvektoren erstellen. Die Funktionalität dieses Einbettungsmodells läuft auf dem lokalen Rechner und erfordert das Herunterladen der Modelldateien (was automatisch erfolgt).

default_ef = embedding_functions.DefaultEmbeddingFunction()

Transformers-Modell

Chroma kann auch jedes Sentence Transformers-Modell verwenden, um Vektoren zu berechnen.

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

Sie können einen optionalen model_name-Parameter übergeben, um das Sentence Transformers-Modell auszuwählen, das Sie verwenden möchten. Standardmäßig verwendet Chroma all-MiniLM-L6-v2. Sie können nach Modellnamen auf Hugging Face suchen.

OpenAI-Modell

Chroma bietet eine praktische Umhüllung für die Einbettungs-API von OpenAI. Dies erfordert den Aufruf der OpenAI-Schnittstelle und einen API-Schlüssel. Sie können einen API-Schlüssel erhalten, indem Sie sich für ein OpenAI-Konto registrieren.

Diese Einbettungsfunktion ist abhängig vom Python-Paket openai, das mit pip install openai installiert werden kann.

openai_ef = embedding_functions.OpenAIEmbeddingFunction(
                api_key="IHR_API-SCHLÜSSEL",
                model_name="text-embedding-ada-002"
            )

Um das OpenAI-Einbettungsmodell auf Plattformen wie Azure zu verwenden, können Sie die Parameter api_base und api_type verwenden:

openai_ef = embedding_functions.OpenAIEmbeddingFunction(
                api_key="IHR_API-SCHLÜSSEL",
                api_base="IHR_API-BASISPFADE",
                api_type="azure",
                model_name="text-embedding-ada-002"
            )

Benutzerdefinierte Einbettungsfunktion

Sie können Ihre eigene Einbettungsfunktion erstellen, um mit Chroma zu arbeiten, indem Sie einfach die Methoden der Basisklasse EmbeddingFunction implementieren.

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

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