Zum Hauptinhalt springen

Qwen3-VL-Reranker-2B

Beschreibung

„Qwen3-VL-Reranker-2B" ist ein vision-sprachliches Cross-Encoder-Reranking-Modell von Alibaba. Zu einer Anfrage und einer Liste von Kandidatendokumenten bewertet es jedes (Anfrage, Dokument)-Paar nach semantischer Relevanz und gibt eine geordnete Liste zurück. Sowohl die Anfrage als auch die Dokumente können Bilder enthalten, wodurch es für multimodale RAG-Pipelines geeignet ist.

Geeignet für und unterstützt:

  • Neugewichtung von Textkandidaten aus einem Vektorindex (RAG-Pipelines)
  • Neugewichtung von Dokumenten, die Bilder enthalten
  • Verbesserung der Retrievalpräzision als zweiter Schritt nach Embedding-basierter Suche
  • Bewertung der Anfrage-Dokument-Relevanz für beliebige Ranking-Aufgaben

Folgende Einschränkungen gelten:

  • Nur über /v1/rerank zugänglich – nicht über /v1/chat/completions
  • Maximale Kontextlänge pro (Anfrage + Dokument)-Paar: 32.768 Token
  • Maximale Bilder pro Anfrage: 5; maximale Videos: 1
  • Maximale Bildgröße: 1.310.720 Pixel – größere Bilder werden proportional skaliert (1 Token pro 32 × 32 Pixel)
  • Kein Streaming – alle Scores werden in einer einzigen Antwort zurückgegeben
  • Nicht für Textgenerierung, Tool-Calling oder Konversation
  • instruction-Werte sollten immer auf Englisch verfasst werden, auch bei mehrsprachigen Dokumenten – der Großteil der Trainingsdaten ist englischsprachig

API-Nutzung

Qwen3-VL-Reranker-2B ist über den /v1/rerank-Endpunkt verfügbar, der dem Cohere-kompatiblen Reranking-API-Format folgt.

Basis-Reranking

import os
import requests

response = requests.post(
"https://llm.aihosting.mittwald.de/v1/rerank",
headers={"Authorization": f"Bearer {os.environ['OPENAI_API_KEY']}"},
json={
"model": "Qwen3-VL-Reranker-2B",
"query": "Was sind die Zahlungsbedingungen?",
"documents": [
"Zahlung ist innerhalb von 30 Tagen nach Rechnungsstellung fällig.",
"Der Lieferant muss die Ware innerhalb von 14 Werktagen liefern.",
"Verspätete Zahlungen werden mit 2 % monatlichem Aufschlag berechnet.",
],
},
timeout=30,
)
response.raise_for_status()

for result in sorted(response.json()["results"], key=lambda r: r["relevance_score"], reverse=True):
print(f"[{result['relevance_score']:.3f}] index={result['index']}")

Antwortformat

{
"results": [
{ "index": 0, "relevance_score": 0.912 },
{ "index": 2, "relevance_score": 0.874 },
{ "index": 1, "relevance_score": 0.031 }
]
}

index ist die Position im ursprünglichen documents-Array. relevance_score ist ein Float zwischen 0 und 1 – höher bedeutet relevanter.

Benutzerdefinierte Anweisung

Das optionale instruction-Feld teilt dem Modell mit, für welche Retrievalaufgabe es optimieren soll. Ohne Angabe wird ein generischer Standard verwendet ("Given a search query, retrieve relevant candidates that answer the query."):

response = requests.post(
"https://llm.aihosting.mittwald.de/v1/rerank",
headers={"Authorization": f"Bearer {os.environ['OPENAI_API_KEY']}"},
json={
"model": "Qwen3-VL-Reranker-2B",
"query": "Gesamtbetrag dieser Rechnung",
"documents": abschnitte,
"instruction": "Given an OCR-extracted invoice, find sections containing payment amounts or totals.",
},
timeout=30,
)

Domänenspezifische Anweisungen verbessern die Präzision bei spezialisierten Korpora (Recht, Medizin, Finanzen) um 1–5 %. Die Anweisung immer auf Englisch formulieren – auch bei nicht-englischen Dokumenten.

Integration in eine RAG-Pipeline

Verwende den Reranker als zweiten Schritt nach der Vektorsuche. Hole zunächst mehr Kandidaten aus dem Index, schränke dann ein:

import math

def kosinus(a, b):
skalar = sum(x * y for x, y in zip(a, b))
norm = math.sqrt(sum(x**2 for x in a)) * math.sqrt(sum(x**2 for x in b))
return skalar / (norm + 1e-9)

# Schritt 1: Grob-Retrieval via Embedding-Ähnlichkeit (Top 10)
anfrage_vektor = einbetten([anfrage])[0]
kandidaten = sorted(index, key=lambda v_c: kosinus(anfrage_vektor, v_c[0]), reverse=True)[:10]
kandidaten_texte = [c for _, c in kandidaten]

# Schritt 2: Präzises Reranking (Top 3)
resp = requests.post(
"https://llm.aihosting.mittwald.de/v1/rerank",
headers={"Authorization": f"Bearer {os.environ['OPENAI_API_KEY']}"},
json={"model": "Qwen3-VL-Reranker-2B", "query": anfrage, "documents": kandidaten_texte},
timeout=30,
)
sortiert = sorted(resp.json()["results"], key=lambda r: r["relevance_score"], reverse=True)
beste_abschnitte = [kandidaten_texte[r["index"]] for r in sortiert[:3]]

Du kannst GLM-OCR für Textextraktion, Qwen3-Embedding-8B für die Indizierung, Qwen3-VL-Reranker-2B für das Reranking und ein Chat-Modell für die Antwortgenerierung zusammenschalten. Dies ergibt eine vollständige Dokumenten-Frage-Antwort-Pipeline.

Nutzungsbedingungen und Lizenzhinweise

Es gelten die allgemeinen Nutzungsbedingungen. Das Modell wird von Alibaba unter der Apache 2.0-Lizenz bereitgestellt. Die Weiternutzung der generierten Inhalte unterliegt keinen zusätzlichen Einschränkungen.