Das Problem
Die traditionelle Volltextsuche stützt sich vollständig auf exakte Keyword-Übereinstimmungen. Wenn ein Benutzer nach “Authentifizierung” sucht, die Seite jedoch nur Begriffe wie “OAuth2” oder “Login” verwendet, findet eine Standard-Suchmaschine den Inhalt nicht. Dies zwingt Autoren zu unnatürlichem Keyword-Stuffing und frustriert Leser, die die benötigten Informationen nicht finden.
Warum es wichtig ist
Moderne Entwickler erwarten intuitive, kontextbezogene Suchfunktionen, die Absichten und Synonyme verstehen. Die Implementierung einer serverseitigen semantischen Suche erfordert in der Regel eine komplexe Infrastruktur wie Vektordatenbanken (z. B. Pinecone oder pgvector), das Hosten von Modellen und das Erstellen von APIs, was den Wartungsaufwand und die monatlichen Hostingkosten erhöht und Sicherheits- sowie Datenschutzbedenken aufwirft.
Der Ansatz
Verwenden Sie das native Semantische Such-Plugin von docmd. Es arbeitet vollständig clientseitig in einer hochoptimierten Browser-Laufzeit. Es generiert strukturierte Vektorchunks zum Build-Zeitpunkt über lokale Hugging Face-Modellpipelines und führt ein Reranking unter Verwendung einer hybriden BM25-Keyword-Frequenz und einer Vektor-Kosinus-Ähnlichkeit durch. Es werden niemals Daten an Drittanbieter-APIs gesendet.
Implementierung
1. Semantische Suche in der Konfiguration aktivieren
Fügen Sie die Optionen für das search-Plugin in Ihre docmd.config.json ein. Setzen Sie semantic auf true und aktivieren Sie showConfidence, um semantische Übereinstimmungen in den Suchergebnissen visuell zu kennzeichnen:
{
"plugins": {
"search": {
"semantic": true,
"showConfidence": true
}
}
}
2. Das passende Einbettungsmodell wählen
docmd unterstützt sowohl leichtgewichtige, rein englische Modelle als auch umfassende mehrsprachige Modelle. Aktualisieren Sie Ihr Modellprofil über docmd-search --settings or definieren Sie es explizit:
| Modell-ID | Dimensionen | Größe | Sprachen | Bestens geeignet für |
|---|---|---|---|---|
Xenova/all-MiniLM-L6-v2 |
384 | ~90 MB | Nur Englisch | Schnelle, präzise englische Dokumentation |
Xenova/LaBSE |
768 | ~470 MB | 100+ Sprachen | Absolute beste mehrsprachige Qualität |
Xenova/paraphrase-multilingual-MiniLM-L12-v2 |
384 | ~220 MB | 50+ Sprachen | Hervorragende Balance für Mehrsprachigkeit |
3. Index in CI/CD vorbauen
Um Overhead im Browser beim ersten Laden zu vermeiden, generieren Sie die Vektorchunks während Ihres Builds oder in Ihrer CI/CD-Pipeline vorab mit der CLI:
# Bauen Sie den semantischen Suchindex vorab
npx docmd-search --build
# Führen Sie anschließend den docmd-Build aus
npx @docmd/core build
Dies erzeugt hochoptimierte statische Vektor-JSON-Chunks in .docmd-search/. Wenn ein Benutzer eine Suche durchführt, lädt der Client diese Chunks progressiv im Hintergrund, wodurch die Benutzeroberfläche sofort interaktiv bleibt.
Abwägungen
Initiale Asset-Größe
Clientseitige Vektoreinbettungen erfordern, dass der Browser beim ersten Suchvorgang eine WebAssembly-Laufzeitumgebung und die vorkompilierte ONNX-Modelldatei herunterlädt. Obwohl diese Assets dauerhaft im Cache-Speicher des Browsers gespeichert werden, kann die Latenz beim ersten Suchvorgang auf langsameren Verbindungen etwas höher sein (~1-2 Sekunden Verzögerung).
Suchqualität vs. Payload-Größe
Die Wahl größerer Modelle wie LaBSE bietet eine außergewöhnliche mehrsprachige Qualität, führt jedoch zu größeren Downloads. Für standardmäßige internationale Dokumentations-Websites ist das Modell paraphrase-multilingual-MiniLM-L12-v2 die empfohlene goldene Mitte zwischen Genauigkeit und Netzwerklast.