Wir haben vor zwei Wochen die Reranker API vorgestellt und sie als führende Reranking-Lösung am Markt etabliert. Jina Reranker übertrifft beliebte Baselines in verschiedenen Benchmarks und zeigt eine signifikante Steigerung von bis zu +33% in der Trefferquote gegenüber BM25-Ergebnissen. Während die Leistung beeindruckend ist, begeistert mich besonders das Potenzial der Reranker API. Ihre unkomplizierte Schnittstelle ermöglicht die Eingabe einer Query-Dokumenten-Liste und gibt direkt die neu geordneten Top-k-Ergebnisse aus. Das bedeutet theoretisch, dass man ein Such- oder Empfehlungssystem ausschließlich mit dem Reranker aufbauen könnte - ohne BM25, Embeddings, Vektordatenbanken oder andere Pipelines, und so End-to-End-Funktionalität erreicht.
Dieses Konzept hat mich so fasziniert, dass ich es unbedingt ausprobieren wollte. Und so funktioniert es: Wenn Sie jetzt auf einer beliebigen News-Seite unserer Website, wie der, die Sie gerade lesen, die Taste @
drücken und auf den Button "get top 5 related articles" klicken, erhalten Sie innerhalb von etwa 5 Sekunden die fünf relevantesten Artikel zum aktuellen Artikel, unter Verwendung des jina-reranker-v1
Modells (etwas länger für das jina-colbert-v1
Modell). Alle Berechnungen erfolgen online und werden vollständig von der Reranker API verwaltet. Unten sehen Sie ein Video, das die Funktionsweise demonstriert:
Um diese Demo auszuführen, benötigen Sie einen API-Schlüssel mit ausreichend Tokens. Wenn Ihr Kontingent aufgebraucht ist und Sie die Demo nicht ausführen können, können Sie unter https://jina.ai/reranker einen neuen Schlüssel generieren. Jeder neue Schlüssel kommt mit 1 Million kostenlosen Tokens.
tagImplementierung
Die Implementierung ist sehr einfach: Um die verwandtesten Artikel zu einem gegebenen Artikel auf jina.ai/news/
zu finden, verwenden wir den aktuell gelesenen Artikel als Query und alle anderen 230+ Artikel (mit ihrem vollständigen Text!) auf unserer News-Seite als Dokumente, natürlich ohne den aktuellen Artikel. Dann senden wir diese als Payload an die Reranker API. Sobald die Antwort empfangen wird, verwenden wir den sortierten Dokumentenindex zur Anzeige der Ergebnisse. Der zugrundeliegende Code sieht wie folgt aus:
const getRecommendedArticles = async () => {
const query = `${currentNews.title} ${currentNews.excerpt}`;
const docs = newsStore.allBlogs.filter((item) => item.slug !== currentNews.slug);
const data = {
model: modelName,
query: query,
documents: docs,
top_n: 5,
}
const rerankUrl = 'https://api.jina.ai/v1/rerank';
const headers = {
'Content-Type': 'application/json',
Authorization: `Bearer ${apiKey}`,
};
const modelName = 'jina-reranker-v1-base-en';
const res = await fetch(rerankUrl, {
method: 'POST',
headers: headers,
body: JSON.stringify(data),
});
const resp = await res.json();
const topKList = resp.results.map((item) => {
return docs[item.index];
});
console.log(topKList);
}

Um einen API-Schlüssel zu erhalten, besuchen Sie einfach unsere Reranker API-Seite und navigieren Sie zum API-Bereich. Wenn Sie bereits einen API-Schlüssel von unserer Embedding API besitzen, können Sie diesen hier wiederverwenden.
Und schon sehen Sie die Ergebnisse, die für eine erste Iteration recht vielversprechend sind, besonders wenn man bedenkt, dass der Implementierungsprozess etwa 10 Minuten dauert.
Während Leser möglicherweise Bedenken bezüglich dieser Implementierung haben, könnten einige Kritikpunkte überbewertet sein, während andere durchaus berechtigt sind:
- Bedenken hinsichtlich zu langer Volltexte und der Notwendigkeit des Chunking könnten überbewertet sein: Das
jina-reranker-v1
Modell kann Queries bis zu einer Länge von 512 und Dokumente beliebiger Länge verarbeiten, während dasjina-colbert-v1
Modell bis zu 8192 für beide verarbeiten kann. Daher ist die Eingabe des vollständigen Textes in die Reranker API wahrscheinlich unnötig. Beide Modelle handhaben lange Kontexte effizient, also besteht kein Grund zur Sorge. Chunking, möglicherweise der aufwendigste und heuristische Aspekt der Embedding-Vector-Search-Rerank-Pipeline, ist hier weniger problematisch. Allerdings bedeuten längere Kontexte mehr Tokens, was für unsere zahlenden API-Nutzer ein Aspekt sein könnte, den sie berücksichtigen müssen. In diesem Beispiel kostet eine Rerank-Anfrage aufgrund der Verwendung des Volltextes aller 233 Artikel über 300.000 Tokens. - Der Einfluss von Roh- versus bereinigten Daten auf die Qualität. Das Hinzufügen von Datenbereinigung könnte tatsächlich zu Verbesserungen führen. Zum Beispiel haben wir beobachtet, dass allein das Entfernen von HTML-Tags (d.h.
docs.map(item => item.html.replace(/<[^>]*>?/gm, '')
) die Empfehlungsqualität für dasjina-reranker-v1
Modell deutlich verbessert, wobei der Effekt beimjina-colbert-v1
Modell weniger ausgeprägt ist. Dies deutet darauf hin, dass unser ColBERT-Modell trainiert wurde, um verrauschten Text besser zu tolerieren als dasjina-reranker-v1
Modell. - Der Einfluss verschiedener Query-Konstruktionen auf die Qualität. In der obigen Implementierung haben wir den Titel und den Auszug des aktuellen Artikels direkt als Query verwendet. Ist dies der optimale Ansatz zur Konstruktion der Query? Würde das Hinzufügen eines Präfixes wie
"What is the most related article to..."
oder"Ich gebe dir 20 $ Trinkgeld, wenn du den besten Artikel empfiehlst,"
ähnlich wie bei Prompts für große Sprachmodelle, von Nutzen sein? Dies wirft eine interessante Frage auf, die wahrscheinlich mit der Trainings-Datenverteilung des Modells zusammenhängt und die wir weiter untersuchen möchten. - Aufbauend auf dem vorherigen Punkt zur Query-Konstruktion wäre es interessant, die kompositionellen Fähigkeiten der Query weiter zu untersuchen, wie zum Beispiel die Nutzung des kürzlichen Browserverlaufs eines Nutzers für personalisierte Empfehlungen. Besonders interessant ist die Frage, ob das System nicht nur positive Beispiele in der Query verstehen könnte, sondern auch negative, z.B.
NOT_LIKE
Operatoren,"Empfiehl mir keine Artikel wie diesen"
oder"Ich möchte weniger davon sehen"
. Darauf werden wir im nächsten Abschnitt näher eingehen.
tagEmpirische Studie zum Query Writing
In unserer Untersuchung verschiedener Query-Schreibweisen mit der Jina Reranker API, mit Fokus auf die Top-10 Ergebnisse, führten wir eine qualitative Bewertung durch manuelles Labeling durch (d.h. von uns selbst bewertet), was sinnvoll ist, da wir vollständige Kenntnis über alle auf unserer Website veröffentlichten Inhalte haben. Die untersuchten Strategien beim Query Writing umfassten:
- Verwendung des Artikel-Titels, des Auszugs und einer Kombination aus Titel + Auszug.
- "Prompt"-artige Anweisungen wie "mehr wie dies", "nicht wie dies" und "welcher Artikel ist am engsten verwandt?"
Um die Effektivität des Rerankers zu testen, wählten wir zwei nicht-triviale Artikel als unsere Query-Subjekte aus, mit dem Ziel, die relevantesten Artikel aus unserem umfangreichen Katalog von über 200+ Beiträgen zu identifizieren - eine Herausforderung, die von der "Nadel im Heuhaufen" bei LLMs inspiriert wurde. Unten haben wir diese "Nadeln" zur Verdeutlichung grün markiert.

tagZusammenfassung
Basierend auf den Testergebnissen haben wir einige Beobachtungen und Zusammenfassungen gemacht:
- Die Kombination von Titel und Auszug liefert die besten Reranking-Ergebnisse, wobei der Auszug eine wichtige Rolle bei der Verbesserung der Reranking-Qualität spielt.
- Die Einbindung von "Prompt"-artigen Anweisungen führt zu keiner Verbesserung.
- Das Reranker-Modell verarbeitet derzeit positive oder negative Qualifikatoren nicht effektiv. Begriffe wie "mehr wie", "weniger wie" oder "nicht wie" werden vom Reranker nicht verstanden.
Die Erkenntnisse aus den Punkten 2 und 3 bieten interessante Ansätze für zukünftige Verbesserungen des Rerankers. Wir glauben, dass die Ermöglichung von On-the-fly-Prompting zur Änderung der Sortierlogik die Fähigkeiten des Rerankers erheblich erweitern könnte, wodurch neue potenzielle Anwendungen wie personalisierte Inhaltskuration/Empfehlung erschlossen werden könnten.