fairlane.systems

VESPA · TECH

Vespa: Suchmaschine mit Tensor-Ranking für komplexe Hybrid-Pipelines

Vespa ist eine Apache-2.0-Suchmaschine in Java aus dem Yahoo-Ecosystem. Tensor-Ranking, structured plus Vektor plus Volltext in einer Anfrage. Steile Lernkurve.

Recherche & Faktencheck: · Stand: 2026-05

Was ist Vespa?

Vespa ist eine Open-Source-Such- und Recommendation-Engine unter Apache 2.0, hervorgegangen aus dem Yahoo-Ecosystem (ursprünglich AllTheWeb, dann Yahoo Search). Seit 2017 als eigenes Open-Source-Projekt verfügbar, geleitet von der Spin-off-Firma Vespa.ai. Stand Mai 2026 ist Version 8.x aktuell. Vespa ist in Java geschrieben mit C++-Komponenten für Performance-kritische Pfade.

Vespa unterscheidet sich von dedizierten Vektor-DBs wie Qdrant oder Weaviate konzeptuell. Es ist primär eine Suchmaschine – vergleichbar mit Elasticsearch, Solr, OpenSearch – die ANN-Vektor-Suche als eine von vielen Ranking-Komponenten anbietet. Die Architektur trennt Document-Storage, Indexing und Query-Processing in eigene Service-Schichten. Diese Trennung erlaubt sehr komplexe Ranking-Pipelines: ein Score kann aus Vektor-Distanz, BM25-Volltext, geografischer Distanz, Time-Decay, Personalisierungs-Signalen und ML-Modellen kombiniert werden – alles in einer einzigen Anfrage, in einer Ranking-Expression.

Das Ranking-System ist Vespas Alleinstellungsmerkmal. Eine Schema-Definition beschreibt nicht nur Felder, sondern auch Ranking-Profile mit Tensor-Operationen. Tensor-Operationen sind algebraische Ausdrücke auf mehrdimensionalen Arrays – von dot-product über matrix-multiply bis zu eingebetteten ONNX-Modellen. Ein RAG-System kann z.B. einen ersten Retrieval-Schritt per BM25 plus Vektor-ANN machen und im zweiten Schritt ein Cross-Encoder-Modell als Reranker direkt in der Vespa-Anfrage ausführen.

Die Cloud-Variante Vespa Cloud ist seit 2019 verfügbar mit Regionen in den USA, Europa (Schweden) und Asien. Self-Hosted läuft auf Kubernetes über den Vespa-Helm-Chart oder als Multi-Node-Docker-Setup. Eine Single-Node-Variante existiert für kleine Setups und Dev-Umgebungen.

Für CH-Treuhand- und KMU-Setups ist Vespa selten die erste Wahl. Die Lernkurve ist steil, der Betriebsaufwand hoch, das Feature-Set für reine Vektor-Suche überdimensioniert. Vespa zahlt sich aus, wenn komplexe Multi-Signal-Ranking-Pipelines gebraucht werden – Plattformen, in denen Personalisierung, semantische Ähnlichkeit und Volltext gleichzeitig gewichtet werden.

Warum es wichtig ist

Die meisten RAG-Setups in der Schweiz brauchen Vespa nicht. Eine Treuhand mit 5.000 Belegen und einer semantischen Suche kommt mit Qdrant oder pgvector aus. Vespa beginnt zu glänzen, wenn drei Bedingungen zusammenkommen: hohe Datenmenge (typisch ab 50 Mio. Dokumente), mehrere Such-Signale, die gemeinsam gewichtet werden müssen, und eine Plattform-Anforderung mit harten Antwortzeit-Garantien.

Drei Anwendungsfälle illustrieren das. Erstens: eine juristische Plattform, die Präzedenzfälle, Lehrmeinungen und Gesetze über 50 Jahre indexiert und in einer Anfrage gewichtet – semantisch ähnlich (Vektor), wortwörtlich passend (BM25), aktuell (Time-Decay), aus relevanter Gerichtsbarkeit (Filter), bevorzugt im Heim-Recht des Mandanten (Personalisierung). Vespa kann das alles in einer Anfrage ausdrücken; bei Qdrant wäre es ein Multi-Stage-Pipeline-Aufbau mit mehreren Diensten.

Zweitens: eine Empfehlungs-Plattform für Treuhand-Mandantenakquise, die Mandanten anhand mehrerer Profil-Vektoren (Branche, Region, Grösse, Vorab-Anfragen) und einer Vektor-Distanz zu vorhandenen Erfolgsbeispielen rankt. Tensor-Ranking erlaubt Multi-Vektor-Distanzen in einem Score.

Drittens: eine sub-50ms-Such-Plattform mit 100 Mio. Einträgen und 5.000 QPS. Vespas Architektur skaliert horizontal – Content-Nodes mit Shards, Query-Nodes als Stateless-Schicht, automatisches Routing. Qdrant und Weaviate skalieren auch, aber Vespa hat hier mehr operative Reife (Yahoo, Yahoo News, Yahoo Finance laufen auf Vespa).

Die Schwelle, ab der Vespa lohnt, ist hoch. Wer 1 Mio. Vektoren mit Filter sucht, ist mit Qdrant in einem Bruchteil der Zeit produktiv. Vespa rechtfertigt seine Lernkurve und seinen Betriebsaufwand erst, wenn die Ranking-Komplexität über das hinausgeht, was Hybrid-Suche in Weaviate oder Elasticsearch leistet.

Wie es funktioniert

Vespa wird als Application Package deployed – ein Verzeichnis mit Schemas, Services-Konfiguration, Ranking-Profilen und optional ONNX-Modellen. Ein Application Package wird via vespa CLI an die Vespa-Instanz gepushed:

vespa config set application example.myapp.docs vespa deploy --wait 300 my-app/

Ein minimales Schema: schema doc { document doc { field id type long { indexing: summary | attribute } field client_id type int { indexing: summary | attribute } field title type string { indexing: index | summary } field content type string { indexing: index | summary } field embedding type tensor<float>(x[1536]) { indexing: attribute | index, attribute: { distance-metric: angular } } } rank-profile semantic { inputs { query(q) tensor<float>(x[1536]) } first-phase { expression: closeness(field, embedding) } } }

Das Schema definiert ein Dokument mit Volltext-Feldern, einem Vektor-Feld (Tensor mit Dimension 1536) und einem Ranking-Profil semantic, das die Vektor-Distanz als Score nutzt.

Feed: vespa feed docs.jsonl mit einer Zeile pro Dokument im Vespa-Document-Format.

Suche per HTTP: GET /search/?yql=select * from doc where userQuery() or ({targetHits:10}nearestNeighbor(embedding,q))&query=Rechnung&input.query(q)=embed(@query_text)&ranking=semantic

Die YQL-Syntax (Vespa Query Language) kombiniert Volltext-Suche, ANN-Vektor-Suche und Filter. Das Ranking-Profil bestimmt, wie die Treffer kombiniert werden.

Komplexere Ranking-Profile können multi-phase sein: rank-profile hybrid { first-phase { expression: 0.5 * bm25(content) + 0.5 * closeness(field, embedding) } second-phase { expression: onnx(crossencoder).score, rerank-count: 100 } }

Ein Cross-Encoder-Modell läuft als Reranker auf den Top-100 der ersten Phase. Diese Komposition ist die Stärke von Vespa.

Cluster-Setup: ein Vespa-Cluster hat mindestens drei Node-Typen – Config-Server, Container (Query/Stateless), Content (Document-Storage mit Sharding). Hochverfügbarkeit braucht 3+ Config-Server (Zookeeper-Konsens) und mehrere Content-Nodes mit Replikation.

Vespa in 5 Schritten produktiv

  1. 01Cluster-Architektur planen: Config-Server (3 für HA), Container-Nodes (Stateless-Schicht), Content-Nodes (Document-Storage mit Sharding/Replication). Mindestens 3 Server für Production.
  2. 02Application Package strukturieren: schemas/ mit Document-Type, services.xml mit Cluster-Konfiguration, ranking-Profile in den Schemas. ONNX-Modelle in models/.
  3. 03Embedding-Pipeline: extern Embeddings berechnen (OpenAI, Cohere, local sentence-transformers); Dokumente im Vespa-JSON-Format feeden via vespa feed.
  4. 04Ranking-Profil definieren: first-phase für schnelle Top-N-Vorselektion, second-phase für teurere Reranker (z.B. Cross-Encoder ONNX). rerank-count optimieren.
  5. 05Monitoring und Backup: Vespa-Metriken via Prometheus (latency, throughput, indexing-queue), Content-Cluster-Backups via vespa-rsync; Recovery getestet.

Wann Vespa einsetzen

Vespa passt, wenn (a) komplexe Multi-Signal-Ranking-Pipelines gebraucht werden, (b) Vektor-Suche, BM25, Filter und ML-Modelle in einer einzigen Anfrage kombiniert werden, (c) die Datenmenge dauerhaft über 50 Mio. Dokumente liegt, oder (d) sehr hohe QPS (> 1000/s) bei niedriger Latenz (< 50 ms) gefordert sind.

Konkrete Fälle: eine juristische Plattform mit Präzedenz-Suche, in der Volltext, semantische Ähnlichkeit, Gerichtsbarkeit, Aktualität und Personalisierung des Mandanten zusammen gewichtet werden müssen. Eine Treuhand-Plattform mit 500.000 Branchen-Profilen, die Mandanten mit ähnlichen Vorgeschichten matchen soll – Tensor-Operationen erlauben Multi-Vektor-Distanzen in einem Score. Ein Compliance-System über Sanktions-Listen und News-Streams, das BM25-Keyword-Treffer mit Embedding-Ähnlichkeit und Time-Decay kombiniert.

Vespa eignet sich auch für ML-getriebene Ranking-Anwendungen: ein vorab trainiertes Cross-Encoder-Modell wird als ONNX in Vespa eingebettet und als Second-Phase-Reranker ausgeführt. Das spart den Roundtrip zu einem externen ML-Service.

Vespa Cloud (Managed) deckt Setups ab, in denen Kubernetes nicht im Stack ist. Die Europa-Region in Schweden ist seit 2023 verfügbar; für CH-Mandantendaten mit TIA akzeptabel, für strikte CH-Hosting-Anforderungen bleibt Self-Hosted die Wahl.

Das Team-Profil ist entscheidend: Vespa zahlt sich aus, wenn mindestens ein Entwickler Suchmaschinen-Erfahrung mit Lucene, Elasticsearch oder Solr mitbringt. Wer von Null startet, braucht 2-4 Wochen, um Vespa produktiv zu nutzen – gegenüber 1-2 Tagen für Qdrant.

Wann NICHT

Bei einfacher semantischer Suche unter 5 Mio. Vektoren ist Vespa überdimensioniert. Qdrant, Weaviate oder pgvector sind in einem Bruchteil der Zeit einsatzbereit, mit ähnlicher oder besserer Performance bei dieser Skala.

Wenn das Team keine Suchmaschinen-Erfahrung hat, ist Vespa eine harte Wahl. YQL-Syntax, Schema-Definition mit Tensor-Typen, Ranking-Profile, Cluster-Setup mit Config-Server, Container und Content-Nodes – das sind 3-4 separate Konzepte, die alle gelernt werden müssen. Eine 5-Personen-Treuhand hat dafür typisch keine Kapazität.

Für reine Vektor-Suche ohne Multi-Signal-Bedarf bringt Vespa keinen Vorteil. Wer „finde 10 ähnliche Vektoren" sucht und kein BM25 oder Time-Decay braucht, ist mit Qdrant oder pgvector schneller, einfacher und genauso schnell unterwegs.

Für Multi-Modal mit Text-und-Bild-Embeddings in einer Collection bietet Weaviate bessere Werkzeuge. Vespa kann es, braucht aber eigene Tensor-Definitionen und Schema-Logik, was in Weaviate als Modul vorgefertigt ist.

Für kleine on-prem-Installationen ohne Kubernetes ist Vespa schwer. Single-Node-Setup existiert, ist aber nicht der primäre Pfad – die meisten Vespa-Setups laufen produktiv im Cluster. Wer ein Single-Node-Setup mit einfacher Wartung sucht, ist mit Qdrant besser bedient.

Für Use-Cases mit häufigen Updates auf Einzeldokumenten (z.B. ein User-Profil, das pro Anfrage geändert wird) hat Vespa kein optimales Profil. Vespa ist auf Document-Store-Modell ausgelegt – Re-Indexing bei Updates ist effizient, aber nicht so effizient wie eine reine Vektor-Update-Operation in Qdrant.

Vor- und Nachteile

STÄRKEN

  • Tensor-Ranking erlaubt komplexe Multi-Signal-Score-Berechnung in einer Anfrage
  • Hybrid Volltext+Vektor+ML-Modell in einer einzigen Pipeline
  • Skaliert horizontal auf hunderte Millionen Dokumente, betrieblich erprobt bei Yahoo
  • Apache 2.0, Vespa Cloud mit EU-Region (Schweden)

SCHWÄCHEN

  • Steile Lernkurve – YQL, Tensor-Schema, Cluster-Setup, Ranking-Profile
  • Cluster-Betrieb mit Config-Server, Container, Content-Nodes erfordert Kubernetes-Know-how
  • Single-Node-Variante ist nicht der primäre Pfad – für kleine Setups Overkill
  • Community kleiner als Qdrant/Weaviate, weniger Tutorials und Stack-Overflow-Antworten

Häufige Fragen

Wie unterscheidet sich Vespa von Elasticsearch?

Vespa ist von Anfang an für Ranking mit ML-Modellen gebaut; Elasticsearch ist ein Volltext-Index, dem ANN-Vektor-Suche und ML-Inferenz später hinzugefügt wurden. Vespa hat Tensor-Operationen als First-Class-Konzept, Elasticsearch nicht in derselben Tiefe. Lizenz: Vespa ist Apache 2.0, Elasticsearch ist Elastic License v2/SSPL. Operativ ist Elasticsearch in mehr Stacks etabliert; Vespa hat die kleinere, aber spezialisiertere Community.

Was kostet Vespa Cloud?

Stand Mai 2026: Vespa Cloud rechnet nach Resource-Consumption (vCPU-Stunden, Memory-GB-Stunden, Storage-GB). Eine Starter-Instanz mit kleinen Datenmengen ab USD 100/Monat, produktive Setups typisch USD 1.000-5.000/Monat. Enterprise-Tier mit SLA, BYOC und EU-Region-Garantie auf Anfrage. Self-Hosted ist günstiger im Direktvergleich, aber Betriebsaufwand muss eingerechnet werden.

Wie aufwendig ist die Lernkurve für Vespa?

Spürbar. Erfahrungswerte: 2-4 Wochen, bis ein Entwickler ohne Suchmaschinen-Hintergrund eine produktive Vespa-Anfrage formulieren und ein Ranking-Profil tunen kann. Mit Lucene/Elasticsearch-Vorerfahrung 1-2 Wochen. Die Doku ist gut, aber tief – Konzepte wie Tensor-Operationen, YQL, Ranking-Profile, Multi-Phase-Ranking brauchen Praxis. Plan: ein erstes Proof-of-Concept dauert 2-4 Tage, produktive Reife 3-6 Wochen.

Verwandte Themen

QDRANT · TECHQdrant: produktive Vektor-Datenbank für RAG und Semantische SucheVEKTOR-DATENBANKEN · VERGLEICHVektor-Datenbanken im Vergleich: 10 Optionen für RAG, Suche und EmpfehlungRAG · AI-KONZEPTRetrieval-Augmented Generation (RAG): Wie KI aus eigenen Dokumenten antwortetEMBEDDINGS · AI-KONZEPTEmbeddings und Vektoren: Wie Sprache zu Mathematik wirdHYBRIDSUCHE · AI-KONZEPTHybridsuche: BM25 plus Vektor mit Reciprocal Rank Fusion in Elasticsearch, Qdrant, OpenSearchHETZNER · TECHHetzner als EU-Hosting für CH-Treuhand und KMU: Rechenzentren, Verträge, Kosten

Quellen

  1. Vespa documentation – schemas, ranking, tensors, YQL · 2026-05
  2. vespa-engine/vespa – GitHub releases v8.x · 2026-05
  3. Vespa Cloud pricing and regions · 2026-05
  4. Vespa blog – Hybrid search and ranking with ONNX models · 2026-04

PASSEND ZU IHREM STACK?

Wie das in Ihrem Betrieb konkret aussieht – 30 Minuten Erstgespräch.

Erstgespräch buchen