Einführung
Es gibt mehrere Wege, in einer Anwendung eine Suche anzubieten. Laravel liefert dafür eingebaute Werkzeuge – von der reinen Stichwortsuche bis zur semantischen KI-Suche – ohne dass ein externer Dienst nötig wäre.Funktionsvergleich
| Funktion | Externer Dienst | Merkmale |
|---|---|---|
whereFullText | Nein | Eingebaute Volltextindizes in MariaDB/MySQL/PostgreSQL |
whereVectorSimilarTo | Nein (PostgreSQL + pgvector) | Ähnlichkeitssuche über Bedeutung; benötigt AI SDK |
Reranking | KI-Provider | Beliebige Ergebnismengen per KI nach Relevanz sortieren |
| Laravel Scout | Nein (database-Engine) / optional | Automatische Indexsynchronisation von Eloquent-Modellen |
Volltextsuche
LIKE-Abfragen sind praktisch für einfache Teilzeichenketten, verstehen aber keine Sprache. Volltextsuche nutzt spezialisierte Indizes, um Worten, Wortgrenzen und Relevanz zu berücksichtigen.
MariaDB, MySQL und PostgreSQL unterstützen Volltextsuche eingebaut – ganz ohne externe Dienste.
Volltextindex anlegen
Bevor Sie eine Volltextsuche verwenden, legen Sie einen Volltextindex auf den betroffenen Spalten an.Volltextsuche für Deutsch (bzw. nicht-lateinische Sprachen)
Die Unterstützung von MySQL variiert; auf AWS RDS ist z. B. nur der N-gram-Parser verfügbar, MeCab u. Ä. lässt sich nicht ergänzen. Auch PostgreSQL bietet für manche Sprachen nur eingeschränkte Wortformen. Wenn die Suchqualität kritisch ist, prüfen Sie spezialisierte Engines wie Meilisearch oder Typesense.
Die Unterstützung von MySQL variiert; auf AWS RDS ist z. B. nur der N-gram-Parser verfügbar, MeCab u. Ä. lässt sich nicht ergänzen. Auch PostgreSQL bietet für manche Sprachen nur eingeschränkte Wortformen. Wenn die Suchqualität kritisch ist, prüfen Sie spezialisierte Engines wie Meilisearch oder Typesense.
Volltextabfragen ausführen
Nach dem Anlegen des Indexes suchen Sie mitwhereFullText. Laravel erzeugt je nach Datenbank passendes SQL (in MariaDB/MySQL MATCH(...) AGAINST(...), in PostgreSQL to_tsvector(...) @@ plainto_tsquery(...)).
In MariaDB/MySQL werden Treffer automatisch nach Relevanz sortiert. In PostgreSQL filtert
whereFullText nur; für automatische Relevanzsortierung eignet sich die Datenbank-Engine von Scout.orWhereFullText fügen Sie eine Volltextsuche als OR-Bedingung an. Details im Query-Builder.
Semantische bzw. Vektorsuche
Volltextsuche basiert auf Wortgleichheit. Die Vektorsuche wählt einen grundlegend anderen Ansatz: KI erzeugt Vektor-Embeddings, mit denen die Bedeutung eines Textes als Zahlenarray repräsentiert wird – so lassen sich semantisch nahe Ergebnisse finden. Beispiel: Eine Suche nach „best wineries in Napa Valley“ findet einen Artikel „Top Vineyards to Visit“, obwohl kein Wort exakt übereinstimmt.Für die Vektorsuche wird das Laravel AI SDK benötigt. Unterstützt werden PostgreSQL (mit
pgvector) und MongoDB (mit dem Paket Laravel MongoDB). In allen Postgres-Datenbanken von Laravel Cloud ist pgvector vorinstalliert.Embeddings erzeugen
Ein Embedding ist ein hochdimensionales Zahlenarray, das die Bedeutung eines Textes darstellt (oft mehrere hundert bis mehrere tausend Dimensionen). Sie erzeugen es mit der MethodetoEmbeddings der Klasse Stringable.
Embeddings effizient – ein API-Aufruf für alles.
Vektoren speichern und indexieren
In der Migration definieren Sie einevector-Spalte. dimensions muss zur Ausgabe des Providers passen (z. B. text-embedding-3-small von OpenAI: 1536). Mit index() legen Sie einen HNSW-Index an, der Ähnlichkeitssuchen bei großen Datenmengen erheblich beschleunigt.
embedding als array; PHP-Array und Datenbank-Vektorformat werden automatisch konvertiert.
Nach Ähnlichkeit suchen
Nach dem Speichern der Embeddings finden Sie ähnliche Datensätze mitwhereVectorSimilarTo. Verglichen wird per Kosinus-Ähnlichkeit; Ergebnisse unterhalb von minSimilarity werden verworfen und die verbleibenden nach Ähnlichkeit sortiert. Der Schwellenwert liegt zwischen 0.0 und 1.0; 1.0 bedeutet exakte Übereinstimmung.
whereVectorDistanceLessThan, selectVectorDistance und orderByVectorDistance bereit. Details siehe Query Builder und AI SDK.
Reranking
Beim Reranking bringt ein KI-Modell eine bestehende Ergebnismenge in eine an der Query orientierte Reihenfolge. Anders als bei Vektorsuche müssen Sie keine Embeddings vorab berechnen und speichern; es lässt sich auf beliebige Textmengen anwenden. Sehr effektiv ist das Muster „Suchen → Reranken“: Zuerst grenzen Sie mit einer Volltextsuche viele Datensätze schnell ein und lassen sie anschließend per KI umsortieren. So kombinieren Sie die Geschwindigkeit der Datenbank mit der Präzision einer KI.rerank; damit rerankieren Sie Eloquent-Ergebnisse mit Feldname (oder Closure) und Query.
Laravel Scout
Die bisher gezeigten Ansätze rufen Query-Builder-Methoden direkt auf. Laravel Scout geht einen anderen Weg: Ergänzen Sie am Eloquent-Modell das TraitSearchable, synchronisiert Scout Neuanlagen, Aktualisierungen und Löschungen automatisch mit einem Suchindex.
Datenbank-Engine
Die eingebaute Datenbank-Engine sucht in der vorhandenen DB per Volltextsuche undLIKE – ohne zusätzliche Infrastruktur.
In toSearchableArray definieren Sie die durchsuchbaren Spalten. Über PHP-Attribute legen Sie pro Spalte die Suchstrategie fest.
| Attribut | Suchstrategie |
|---|---|
SearchUsingFullText | Volltextindex (MATCH...AGAINST / to_tsvector) |
SearchUsingPrefix | Präfix-Suche (example%) |
| ohne | Wildcards davor und dahinter (%example%) |
search. Die Datenbank-Engine von Scout liefert die Ergebnisse auch in PostgreSQL automatisch nach Relevanz sortiert.
Externe Engines
Scout unterstützt auch Algolia, Meilisearch und Typesense. Diese bieten fortgeschrittene Features wie Tippfehler-Toleranz, Facetten-, Geo-Suche und individuelle Ranking-Regeln. Da Scout eine einheitliche API bereitstellt, ist der Umstieg von der Datenbank-Engine auf eine externe Engine mit minimalen Codeänderungen möglich.Die meisten Anwendungen benötigen keine externe Such-Engine. Die hier vorgestellten integrierten Methoden decken die überwiegende Zahl der Anwendungsfälle ab.
Techniken kombinieren
Die gezeigten Ansätze schließen sich nicht aus. Kombinationen liefern häufig die besten Resultate.Volltextsuche + Reranking
Volltextsuche filtert Kandidaten schnell heraus, Reranking sortiert danach semantisch. Das kombiniert Datenbank-Geschwindigkeit mit KI-Präzision.Vektorsuche + reguläre Filter
Kombinieren Sie Vektorsuche mit gewöhnlichenwhere-Klauseln, um semantische Suche auf einer bestimmten Teilmenge auszuführen. Praktisch, wenn Sie z. B. innerhalb eines Teams oder einer Kategorie semantisch suchen wollen.
Verwandte Seiten
Laravel Scout
Vollständige Anleitung, wie das Trait Searchable Modelle automatisch indiziert.
Laravel AI SDK
Konfiguration des AI SDK für Embeddings und Reranking.
Query Builder
Details zu whereFullText, whereVectorSimilarTo und mehr.
Migrationen
Anlegen von Volltextindizes und Vektorspalten.