Instacart, eine führende Plattform im Bereich Online-Lebensmitteleinkauf, hat in den letzten Jahren enorme Herausforderungen bei der Suche innerhalb ihres umfangreichen Produktkatalogs bewältigt. Mit Milliarden von Artikeln über tausende Einzelhändler hinweg ist eine effiziente und relevante Suchfunktion unverzichtbar, um den Kunden ein nahtloses Einkaufserlebnis zu bieten. Die Suchinfrastruktur ist oft der erste Berührungspunkt für Nutzer, sodass Geschwindigkeit und Relevanz der Suchergebnisse maßgeblich zur Kundenzufriedenheit und Kundenbindung beitragen. Die Komplexität von Instacarts Katalog und die Art der Suchanfragen erfordern eine Kombination aus herkömmlicher Volltextsuche und moderner semantischer Suche. Während die Volltextsuche vor allem bei expliziten, schlüsselwortbasierten Suchanfragen effektiv ist, beispielsweise bei der Eingabe von „Pesto Pasta Sauce 8oz“, erschließt die semantische Suche die Intention hinter allgemeinen oder unscharfen Begriffen wie „gesunde Lebensmittel“.
Diese hybride Herangehensweise ist essentiell, um sowohl präzise als auch kontextuell passende Ergebnisse zu liefern. Ursprünglich setzte Instacart auf Elasticsearch für die Volltextsuche, eine damals gängige und leistungsfähige Lösung. Doch mit der Zeit traten ernsthafte Limitierungen zutage. Instacarts Datensatz ist sehr dynamisch, mit häufigen Preis- und Bestandsänderungen, die an Milliarden von Produktdaten vorgenommen werden. Elasticsearch konnte die damit verbundenen Schreiblasten und Indexierungsprozesse nicht mehr effizient bewältigen.
Die Folge waren Verzögerungen bei Aktualisierungen und eine deutliche Verschlechterung der Lesegeschwindigkeit, was sich negativ auf das Nutzererlebnis auswirkte. Ein wesentlicher Schritt war die Migration der Volltextsuche zu Postgres. Das mag auf den ersten Blick ungewöhnlich erscheinen, doch Postgres bot durch seinen hohen Reifegrad und die bereits bestehenden Skalierungen im Unternehmen eine solide Basis. Durch die Verwendung von GIN-Indizes und einer modifizierten ts_rank-Funktion ermöglichte Instacart eine hochperformante Textsuche. Gleichzeitig profitierte man von einem normalisierten Datenmodell, das den Aufwand für Schreiboperationen drastisch reduzierte.
Im Vergleich zum vorherigen, denormalisierten Ansatz in Elasticsearch führte dies zu einer zehnfachen Verringerung der Schreiblast. Ein weiterer Vorteil war die Möglichkeit, ML-Funktionalitäten und Modellparameter direkt in der Datenbank zu speichern und mit den Produktinformationen zu verknüpfen. Die Entscheidung, Rechenoperationen näher an die Daten zu bringen – sprich, Logiken und Filter direkt in der Datenbank auszuführen statt diese auf Anwendungsebene zu bearbeiten – resultierte in einer erheblichen Leistungssteigerung. Dieser Ansatz reduzierte Netzwerkverkehr und Systemkomplexität, was sich in einer niedrigeren Latenz und schnellerer Ergebnislieferung niederschlug. Zudem ermöglichte die Integration von Echtzeitinformationen, wie etwa der aktuellen Verfügbarkeit von Artikeln, als Vorfilter in der Datenbank, unnötiges Abrufen und Filtern von Dokumenten zu vermeiden.
Mit der Volltextsuche in Postgres etabliert, rückte die Integration semantischer Suche in den Fokus. Aufgrund mangelnder nativer Unterstützung für Approximate Nearest Neighbor (ANN) Suche in Postgres wurde zunächst eine separate ANN-Servicearchitektur mit FAISS aufgebaut. Dabei wurden Dokumenten- und Anfrage-Embedding-Vektoren generiert und in FAISS-Indexes abgelegt. Die parallele Abfrage beider Systeme – Postgres für die Volltextsuche und FAISS für die semantische Suche – erfolgte auf Anwendungsebene, wo die Ergebnisse zusammengeführt wurden. Obwohl diese Methode die Suchqualität verbesserte, brachte sie auch Nachteile mit sich.
Die getrennten Systeme führten zu einem erhöhten operativen Aufwand und der Notwendigkeit, Daten synchron zu halten, was zu Inkonsistenzen führen konnte. Zudem war eine präzise Feinsteuerung von Präzision und Recall erschwert, die wichtige Metriken für die Suchqualität sind. Überfetching und nachträgliche Filterprozesse waren notwendig, um relevante Ergebnisse zusammenzuführen, was ineffizient war und die Latenz erhöhte. Instacart erkannte die Notwendigkeit einer einheitlichen Lösung, die beide Suchmechanismen in einem einzigen Datensystem vereint. Die Wahl fiel auf die Integration von pgvector in Postgres, eine Erweiterung, die Vektoroperationen und ANN-Suche innerhalb von Postgres möglich macht.
Diese Work-in-Progress-Technologie hatte sich bereits durch eine schnelle Entwicklungsphase hervorgetan und versprach eine Kombination aus textbasierter und semantischer Suche auf derselben Plattform. Dadurch konnten doppelte Datenhaltung und parallele Indexierung vermieden werden. Der Wechsel zu pgvector erlaubt es, präzise Attributfilterungen innerhalb des Suchprozesses zu nutzen. So kann beispielsweise in Echtzeit die Verfügbarkeit von Produkten berücksichtigt werden, um die Suchergebnisse auf tatsächlich lieferbare Artikel zu beschränken. Auch weitere Filterkriterien wie Marke und Kategorie tragen zur Verbesserung der Treffergenauigkeit bei.
Diese Möglichkeiten waren mit der vorherigen FAISS-basierten Lösung nur eingeschränkt umsetzbar. Vor der produktiven Nutzung wurde ein Prototyp eines pgvector-Clusters aufgebaut und mit realitätsnahen Suchlasten getestet. Die Ergebnisse bestätigten, dass pgvector die Anforderungen an Durchsatz und Latenz erfüllen kann. Die Arbeit mit Hybridindizes, die sich nach dem Katalogumfang verschiedener Händler richten, erwies sich als praktikabel und wartungsfreundlich. Durch die Anpassung spezifischer Postgres-Parameter konnte die Suchperformance weiter optimiert werden.
Die Umstellung wurde schrittweise und mit A/B-Tests begleitet. Erste Ergebnisse zeigten eine deutliche Reduzierung der Anzahl an Suchanfragen ohne Treffer, was eine Verbesserung der Recall-Rate widerspiegelt. Für die Plattform bedeutete dies eine spürbare Umsatzsteigerung, weil Kunden weniger Sackgassen in der Produktsuche erleben und somit schneller und einfacher passende Artikel finden konnten. Neben der technischen Effizienzverbesserung eröffnete die einheitliche Suche auch neue Möglichkeiten zur Personalisierung. Die Berücksichtigung individueller Präferenzen wie Ernährungsgewohnheiten, Markenpräferenzen oder Preissensitivität kann direkt in der Anfragebearbeitung integriert und mit dem semantischen Suchansatz kombiniert werden.
Damit entsteht eine maßgeschneiderte Nutzererfahrung, die Instacart von herkömmlichen Suchsystemen abhebt. Die Entwicklung von Instacarts moderner Suchinfrastruktur demonstriert eindrucksvoll, wie traditionelle relationale Datenbanken durch geschickte Erweiterungen und Anpassungen modernsten Anforderungen gerecht werden können. Besonders bemerkenswert ist die Kombination aus bewährter Volltextsuche mit neuartigen, embeddingsbasierten semantischen Suchverfahren in einem skalierbaren, wartungsarmen und hochperformanten System. Dieser Ansatz ist ein Beispiel dafür, wie Unternehmen mit großen und komplexen Produktkatalogen ihre Sucharchitektur flexibel und leistungsfähig gestalten können, ohne auf komplexe und kostenintensive Mehrfachsysteme angewiesen zu sein. Die Verlagerung der Rechenlogik auf die Datenbankebene sowie die Nutzung von Echtzeitdaten für die Filterung tragen entscheidend zur Effizienz bei und verbessern die Nutzerzufriedenheit nachhaltig.
Instacarts Erfolgsgeschichte unterstreicht die Bedeutung der Zusammenarbeit verschiedener Teams, wie ML, Backend und Infrastruktur, um innovative technische Lösungen zu realisieren. Die kontinuierliche Weiterentwicklung der Suchfunktion zeigt zudem, dass Technologie immer den sich wandelnden Anforderungen des Marktes und der Kunden angepasst werden muss. Zukünftig plant Instacart, die Filterfunktionen weiter auszubauen und die semantische Suche noch präziser und leistungsfähiger zu machen. Durch die flexible Architektur mit Postgres und pgvector ist das Unternehmen bestens positioniert, um neue ML-Modelle und personalisierte Suchalgorithmen zu integrieren, die das Einkaufserlebnis weiter optimieren. Insgesamt beweist Instacart, dass mit innovativen Datenbanktechnologien und einer durchdachten Suchinfrastruktur die Herausforderung, Milliarden von Produkten mit hoher Geschwindigkeit und Genauigkeit zu durchsuchen, gemeistert werden kann.
Dies stellt einen bedeutenden Fortschritt im Bereich der E-Commerce-Suche dar und dient als inspirierendes Beispiel für andere Unternehmen mit komplexen Suchanforderungen.