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.