Zum Hauptinhalt springen

Qwen3-Embedding-8B

Beschreibung

Das Qwen3-Embedding-Modell von Alibaba ist für das Erstellen von Embeddings konzipiert, die für ein RAG-System (Retrieval augmented generation) unverzichtbar sind. Mit diesem Modell ist keine Chat-Interaktion möglich. Es wird benötigt, um Dokumente und Texte in einzelne Vektoren umzuwandeln, die von der anwendenden Applikation in einer Vektordatenbank gespeichert werden und damit eine semantische Suche ermöglichen. Die Stärke dieses Modells liegt in seiner Unterstützung von über 100 Sprachen bei gleichzeitig hoher Performance.

Folgende Limitierungen gelten:

  • Maximale Context-Länge: 32.768 Token
  • Embedding Dimension: 4.096
  • dimensions-Parameter zur dynamischen Projizierung auf eine geringere Dimension wird nicht unterstützt

Es wird empfohlen, Embeddings für Suchanfragen mit folgendem Template zu formatieren:

Instruct: {task_description}
Query: {query}

Hierbei sollte {query} die individuelle Suchanfrage in einem Satz abbilden und {task_description} die Aufgabe beschreiben, beispielsweise:

task = 'Given a web search query, retrieve relevant passages that answer the query'
query = 'Explain gravity'

Embeddings kürzen und normalisieren

Wenn du kleinere Vektordimensionen benötigst, kannst du den Embedding-Vektor einfach auf die gewünschte Länge kürzen und anschließend normalisieren. Das ist möglich, weil das Modell mit Matryoshka Representation Learning trainiert wurde.

Zum Normalisieren des Vektors kannst du zum Beispiel folgenden Code verwenden:

Installiere zunächst die benötigten Bibliotheken und lege den Token an:

pip install python-dotenv openai langchain-openai
echo 'OPENAI_API_KEY="sk-…"' > .env

Nutze dann das Modell und kürze auf 256 Dimensionen + normalisiere das Embedding:

from openai import OpenAI
import numpy as np
from dotenv import load_dotenv

# Load .env file
load_dotenv()

client = OpenAI(
base_url="https://llm.aihosting.mittwald.de/v1"
)

def normalize_l2(x):
x = np.array(x)
if x.ndim == 1:
norm = np.linalg.norm(x)
if norm == 0:
return x
return x / norm
else:
norm = np.linalg.norm(x, 2, axis=1, keepdims=True)
return np.where(norm == 0, x, x / norm)


response = client.embeddings.create(
model="Qwen3-Embedding-8B", input="Testing 123", encoding_format="float"
)

cut_dim = response.data[0].embedding[:256]
norm_dim = normalize_l2(cut_dim)

print(norm_dim)

Nutzungsbedingungen und Lizenzhinweise

Es gelten die allgemeinen Nutzungsbedinungen. Das Modell wird von Alibaba unter der Apache 2.0-Lizenz angeboten, eine Weiternutzung der generierten Inhalte unterliegt keiner zusätzlichen Restriktion.