LLM-Optimierung: RAG, Vektorsuche und der Edge
Das Ausführen eines 70B-Parametermodells in einem Ladengeschäft ist Selbstmord. Wie man KI-Funktionen entwickelt, die schnell, kostengünstig und tatsächlich nützlich sind.
Im Jahr 2024 fragte sich jeder E-Commerce-CEO: „Wie fügen wir KI hinzu?“ Im Jahr 2025 antwortet jeder CTO: „Im Idealfall ohne Pleite.“ Large Language Models (LLMs) sind schwerfällig, langsam und halluzinierend. Kunden möchten nicht mit einem Bot chatten, der denkt, ein Toaster sei eine Mikrowelle. Sie wollen Semantische Suche und Hyper-Personalisierung. Dies erfordert eine bestimmte Architektur: RAG (Retrieval-Augmented Generation) am Edge.
Warum Maison Code dies bespricht
Bei Maison Code Paris fungieren wir als architektonisches Gewissen für unsere Kunden. Wir erben oft „moderne“ Stacks, die ohne grundlegendes Verständnis der Skalierung erstellt wurden. Wir sehen einfache APIs, deren Antwort aufgrund von N+1-Abfrageproblemen 4 Sekunden dauert, und „Microservices“, die 5.000 US-Dollar pro Monat an Cloud-Gebühren im Leerlauf kosten.
Wir diskutieren dieses Thema, weil es einen entscheidenden Dreh- und Angelpunkt für die technische Reife darstellt. Die richtige Implementierung unterscheidet einen fragilen MVP von einer robusten Plattform der Enterprise-Klasse, die den Black-Friday-Verkehr problemlos bewältigen kann.
Das Problem: Latenz und Kosten
Beispiel: Ein Benutzer fragt: „Haben Sie Sommerkleider, die sich gut für eine Hochzeit in Italien eignen?“
-
Naiver Ansatz: Senden Sie den gesamten Produktkatalog (CSV) an das GPT-4-Kontextfenster.
- Kosten: 2,00 € pro Abfrage (Eingabetokens).
- Latenz: 15 Sekunden.
- Ergebnis: Der Benutzer geht, bevor die Antwort geladen wird.
-
Technischer Ansatz: Vektorsuche + RAG.
- Kosten: 0,002 € pro Abfrage.
- Latenz: 400 ms.
- Ergebnis: Konvertierung.
Die Architektur: Die RAG-Pipeline
Wir verlangen vom LLM nicht, dass er unsere Produkte „kennt“. Wir bitten es, unsere Suchergebnisse „zusammenzufassen“.
„Meerjungfrau Sequenzdiagramm Teilnehmer Benutzer Teilnehmerkante als Kantenfunktion (Vercel) Teilnehmer Vector als Vector DB (Pinecone) Teilnehmer LLM als GPT-4o-mini
Benutzer->>Edge: „Rotes Kleid für Hochzeit in Italien“
Hinweis über Edge: 1. Einbettungen generieren
Edge->>LLM: Einbettungsanfrage (text-embedding-3-small)
LLM-->>Kante: [0,12, 0,98, -0,4...]
Hinweis zu Edge: 2. Semantische Suche
Edge->>Vector: Nächste Vektoren abfragen (Top 5)
Vector-->>Edge: Gibt 5 Produkt-JSONs zurück
Note over Edge: 3. Synthese
Edge->>LLM: „Hier sind 5 Kleider. Empfehle eines für Italien.“
LLM-->>Edge: „Das Amalfi-Seidenkleid ist perfekt, weil...“
Edge-->>Benutzer: JSON-Antwort (Produkt + Text)
„
Schritt 1: Vektorisieren des Katalogs
Sie können keinen Text durchsuchen. Sie müssen nach „Bedeutung“ suchen. Wir konvertieren jede Produktbeschreibung in ein Vector Embedding (ein Array aus 1536 Gleitkommazahlen). „Red Dress“ und „Crimson Gown“ haben unterschiedlichen Text, aber ähnliche Vektoren (Abstand < 0,2).
Das Aufnahmeskript (Node.js)
Wir führen dies jede Nacht über einen Cronjob aus.
„Typoskript import { OpenAI } von „openai“; import { Pinecone } aus „@pinecone-database/pinecone“;
const openai = new OpenAI(); const Pinecone = new Pinecone();
asynchrone Funktion vectorizeProduct(product) {
// 1. Erstellen Sie einen „Semantic String“
// Wir kombinieren Titel, Beschreibung und Rezensionen
const content = Titel: €{product.title} Beschreibung: €{product.description} Stoff: €{product.tags.join(', ')} Stimmung: €{product.metafields.custom.vibe} .trim();
// 2. Einbettung generieren const Embedding = Warten auf openai.embeddings.create({ Modell: „text-embedding-3-small“, Eingabe: Inhalt, });
// 3. Upsert in Vector DB wait pinecone.index(“maison-products”).upsert([{ id: produkt.id, Werte: embedding.data[0].embedding, Metadaten: { Titel: Produkt.Titel, Preis: Produkt.Preis, Griff: Produkt.Handle, Bild: Produkt.Bild } }]); } „
Schritt 2: Die Edge-Abfrage
Geschwindigkeit ist entscheidend. Wir verwenden Vercel Edge Functions oder Cloudflare Workers. Wir verwenden KEIN Python-Backend. Es ist zu langsam für einen Kaltstart. Wir verwenden streng typisiertes TypeScript auf dem Edge.
Die Abfrage erfolgt in zwei Schritten:
- Abruf: Finden Sie die relevanten Produkte.
- „Hochzeit in Italien“ -> Semantische Karte -> Leinen, Atmungsaktiv, Blumen, Elegant.
- Vector DB gibt zurück: Amalfi-Kleid, Tuscany-Rock, Roma-Sandalen.
- Generation: Erklären Sie, WARUM.
- Eingabeaufforderung: * „Sie sind Modestylist. Erklären Sie, warum diese drei Artikel den Anforderungen des Benutzers entsprechen. Fassen Sie sich kurz.“*
Optimierungstechniken
Die Verarbeitung von Token kostet Geld. So senken wir die Kosten um 90 %.
1. Harte Filterung (Hybridsuche)
Wenn ein Benutzer nach „Größe: S“ filtert, durchsuchen Sie nicht den gesamten Vektorraum.
Wenden Sie ZUERST einen Metadatenfilter auf Pinecone an.
vector_search(query_vector, filter={ size: "S", in_stock: true })
Dies reduziert den Suchraum und verbessert die Genauigkeit.
2. Antworten zwischenspeichern
80 % der Nutzer stellen die gleichen Fragen. „Wie lauten Ihre Rückgabebedingungen?“ „Versenden Sie nach Kanada?“ Wir speichern die LLM-Antwort in Redis zwischen, verschlüsselt durch eine gehashte Version des Abfragevektors. Wenn eine neue Frage einer zwischengespeicherten Frage semantisch ähnlich ist (Abstand < 0,1), wird die zwischengespeicherte Antwort zurückgegeben. 0 ms Latenz.
3. Kleine Modelle (SLMs)
Benötigt man dafür GPT-4? Nein. GPT-4o-mini oder Claude Haiku ist 20x günstiger und schneller. Bei E-Commerce-Empfehlungen ist „Intelligenz“ weniger wichtig als „Kontext“. Wenn Sie im Kontextfenster die richtigen Produkte bereitstellen, liefert auch ein kleines Modell eine tolle Antwort.
UI: Die „Generative UI“
Streamen Sie nicht nur Text. Streamen Sie Komponenten.
Wenn der LLM ein Kleid vorschlägt, rendern Sie die Komponente „
„tsx // Die Chat-Schnittstelle import { useChat } aus ‘ai/react’;
Exportfunktion ShopAssistant() { const { Nachrichten, Eingabe, handleInputChange, handleSubmit } = useChat();
zurück (
12. Semantisches Caching (Redis/Momento)
Wenn 100 Leute fragen: „Ist das Hemd aus Baumwolle?“, zahlen Sie OpenAI nicht 100 Mal. Zahlen Sie sie einmal.
- Benutzerabfrage -> Vektorisieren -> „[0.1, 0.2, …]“.
- Überprüfen Sie Redis: „GET vectors:nearest([0.1, 0.2])“.
- Wenn der Abstand < 0,05 ist, wird die zwischengespeicherte Antwort zurückgegeben. Dies reduziert die LLM-Kosten bei Bereitstellungen mit hohem Datenverkehr um 60 %. Außerdem wird die Latenz von 2 s auf 50 ms gesenkt.
13. Prompt Caching (anthropisch)
Neu im Jahr 2025: Prompt Caching. Wenn Sie eine 50-seitige Systemaufforderung senden („Sie sind ein Handelsvertreter … hier ist unser Katalog …“), zahlen Sie jedes Mal für diese Token. Beim Kontext-Caching zahlen Sie einmal, um den Kontext auf die API „hochzuladen“. Nachfolgende Aufrufe verweisen auf die „cache_id“. Dadurch werden die Eingabe-Token-Kosten um 90 % reduziert und die Geschwindigkeit verdoppelt (das Vorfüllen erfolgt sofort).
14. Quantisierung (GGUF / AWQ)
Modelle sind normalerweise FP16 (16-Bit-Gleitkomma). Sie sind riesig (14 GB für 7B-Parameter). Quantisierung komprimiert sie auf INT4 (4-Bit-Ganzzahlen). Die Größe sinkt auf 4 GB. Der Genauigkeitsverlust ist vernachlässigbar (< 1 %). Geschwindigkeit erhöht sich um das Dreifache. Wir führen quantisierte 4-Bit-Modelle auf Consumer-Hardware (MacBook Pros) für lokale Entwicklung und Edge-Inferenz aus.
15. Spekulative Dekodierung
LLMs generieren jeweils einen Token. Das ist seriell und langsam. Spekulative Dekodierung verwendet ein kleines „Draft Model“ (schnell), um die nächsten 5 Wörter zu erraten. Das Big Model (langsam) verifiziert sie einfach parallel. Wenn der Entwurf korrekt ist (normalerweise bei einfacher Grammatik), erhalten Sie 5 Token für die Kosten eines Vorwärtspasses. Dadurch wird die Generierungsgeschwindigkeit verdoppelt, ohne dass sich die Modellgewichte ändern.
16. Fazit
KI ist keine Zauberei. Es ist Ingenieurskunst. Es erfordert Datenpipelines, Vektordatenbanken und Edge-Caching. Wenn Sie ChatGPT einfach „verpacken“, verbrennen Sie bares Geld. Wenn Sie eine RAG-Pipeline aufbauen, schaffen Sie einen Wettbewerbsvorteil.