Vorschläge

Produkte & Ressourcen

Zurück zu allen Ressourcen

Zusammenfassung

Dieses Whitepaper enthält einen produktionsreifen Leitfaden für die KI-gestützte Suche. Es bietet einen Überblick über den gesamten Stack – von der Datenerfassung und -anreicherung über die hybride Indizierung und Abfrage bis hin zu Empfehlungen und RAG-Schnittstellen, die stets auf den abgerufenen Quellen basieren. Außerdem werden die Maßnahmen behandelt, die diese Systeme in der Praxis zuverlässig machen: Beobachtbarkeit, Governance mithilfe gesicherter API-Schlüssel und Filterung auf Datensatzebene, Kostenkontrolle sowie Lebenszyklusmanagement mithilfe expliziter Metadaten zum Ablaufdatum und „Soft-Delete“-Flags.  

Einleitung

Die Suche ist nicht mehr „nur ein Feld“. Sie verhält sich wie eine Produktoberfläche, und die Nutzer spüren es sofort, wenn sie langsam, ungenau oder – durch Zeitüberschreitungen, leere Ergebnisse oder untreffende Antworten – stillschweigend kostspielig ist. Für technische Teams verändert dies die Aufgabenstellung. Die Qualität der Suchergebnisse, die Latenz und die Kosten sind nun Teil der Benutzererfahrung und müssen daher technisch umgesetzt und gemessen werden, einschließlich der p95- und p99-Latenz.

Die meisten Teams haben sich zudem von der früheren Single-Mode-Suche verabschiedet. Der aktuelle praktische Standard ist die hybride Suche, bei der die Stichwortübereinstimmung exakte Begriffe und Bezeichner verarbeitet, während die semantische Übereinstimmung bei natürlicher Sprache und längeren Suchanfragen hilft, die eine vollständige Beibehaltung des Kontexts erfordern. Filter und Facetten halten dieses hybride System unter Kontrolle, indem sie Einschränkungen durchsetzen und die Ergebnisse vorhersehbar machen.

Dieses Whitepaper stellt einen produktionsreifen Leitfaden für die KI-gestützte Suche vor. Es führt durch den gesamten Stack, von der Datenerfassung und -anreicherung über hybride Indizierung und Abfrage bis hin zu Empfehlungen und RAG-Schnittstellen, die stets auf den abgerufenen Quellen basieren. Außerdem behandelt es die Maßnahmen, die diese Systeme in der Praxis zuverlässig machen: Beobachtbarkeit, Governance mithilfe gesicherter API-Schlüssel und Filterung auf Datensatzebene, Kostenkontrolle sowie Lebenszyklusmanagement durch explizite Metadaten zum Ablaufdatum und „Soft-Delete“-Flags. Algolia NeuralSearch kombiniert die Suche nach Schlüsselwörtern und Vektoren, während Filter und Facetten Einschränkungen durchsetzen. Das Whitepaper behandelt zudem Regeln und Synonyme, Analysen und A/B-Tests, die „Recommend“-Funktion sowie Betriebsmuster wie Teilaktualisierungen und atomare Indexumstellungen mithilfe von Indexkopier- oder -verschiebungsoperationen.

Suchqualität als für den Nutzer sichtbares Merkmal

Die Suchqualität ist eine entscheidende Kennzahl. Das zeigt sich daran, wie sich die Nutzer tatsächlich verhalten: weniger Wiederholungsversuche, höhere Konversionsrate, schnellere Problemlösung und das Vertrauen der Nutzer in die Ergebnisse. Aus diesem Grund behandelt dieser Artikel die Suchergebnisanzeige wie eine Produktoberfläche und misst sie auf dieselbe Weise anhand von Relevanz, Latenz und Kosten.

In der Praxis nehmen Nutzer die Suchqualität anhand folgender Aspekte wahr:

  • Auf Anhieb das richtige Ergebnis erzielen – mit weniger Überarbeitungen
  • Ergebnisse anzeigen, die Einschränkungen wie Verfügbarkeit, Region, Compliance und rollenbasierten Zugriff berücksichtigen
  • KI-Antworten erhalten, die fundiert sind und mit Quellenangaben versehen sind, die auf die richtige Quelle und den richtigen Abschnitt verweisen

Warum die Latenz, die Relevanz und die Kosten von p95 und p99 technisch optimiert werden müssen

Bei der KI-gestützten Suche handelt es sich selten um eine einzelne Abfrage, die Ergebnisse liefert und damit endet. Es handelt sich um einen Prozess, und jede zusätzliche Stufe kann den Ablauf verlangsamen oder die Leistung weniger vorhersehbar machen. Aus diesem Grund werden in diesem Abschnitt Qualität, Latenz und Kosten als Produktmerkmale behandelt, und Teams werden dazu angehalten, ihre Entwürfe auf die p95- und p99-Leistung auszurichten und sich nicht nur auf Durchschnittswerte zu beschränken.

Eine praktische Vorgehensweise hierfür besteht darin, für jede Stufe ein Latenzbudget festzulegen:

  • Abfragebudget (hybride Suche, Filter, Facetten)
  • Budget für optionale Neugewichtung
  • Optionales Erzeugungsbudget für RAG
  • Budget für Observability im Bereich Logging und Metriken

Die Rolle des hybriden Abrufs in modernen KI-Sucharchitekturen

Single-Mode-Systeme fallen auf vorhersehbare Weise aus:

  • Lexikalische Systeme sind präzise bei SKUs und genauen Bezeichnungen, zeigen jedoch Schwächen bei natürlicher Sprache und explorativen Suchabsichten.
  • Reine semantische Systeme liefern relevante Ergebnisse ohne strenge Einschränkungen, können jedoch wichtige geschäftliche Anforderungen wie Verfügbarkeit und Compliance außer Acht lassen.

Die hybride Suche verbindet lexikalische Präzision mit semantischer Abdeckung und nutzt anschließend Filter und Facetten, um die Ergebnisse genau und geschäftsrelevant zu halten.

Algolia dient hier als primäre Referenzimplementierung für einen produktionsreifen KI-Such-Stack. Ziel ist es, zu zeigen, wie moderne Hybrid-Suche in der Praxis mithilfe einer konkreten Plattform mit den operativen Bausteinen – wie Erfassungspipelines, Governance-Kontrollen, Observability sowie zugehörigen KI- oder Datentools – umgesetzt wird.

Referenzarchitektur für einen modernen Such-Stack

Dieser Abschnitt bietet einen Überblick über eine moderne Referenzarchitektur für die KI-gestützte Suche, beginnend mit der Datenerfassung (Crawling oder ETL – Extract, Transform, Load) und der Anreicherung, bis hin zur hybriden Indizierung und Abfrage. Außerdem werden optionale Ebenen wie die Neugewichtung und Empfehlungen behandelt und gezeigt, wie RAG Antworten generieren kann, die sich stets auf die abgerufenen Quellen stützen.

Aufnahme und Datenerfassung

Crawling, Konnektoren und ETL-Pipelines für die Datenerfassung

Die Datenerfassung funktioniert am besten, wenn Sie den Ansatz wählen, der zum Speicherort Ihrer Daten passt. Verwenden Sie Crawler, wenn die Quelle hauptsächlich aus Webinhalten oder Dokumentationen besteht, Konnektoren, wenn sich die Daten in E-Commerce- oder CRM-Systemen befinden, und ETL-Pipelines, wenn Sie Eigentümer des vorgelagerten Speichers sind und vollständige Kontrolle darüber benötigen, wie Daten extrahiert und veröffentlicht werden. Unabhängig von der Methode bleibt eine praktische Checkliste für die Datenerfassung immer dieselbe: Definieren Sie Ihre maßgeblichen Quellen und Anforderungen an die Aktualität, normalisieren Sie Felder und Identifikatoren, damit die Datensätze konsistent bleiben, erstellen Sie wiederholbare Durchläufe, die Backfills und Replays unterstützen, und trennen Sie Extraktion, Transformation und Veröffentlichung voneinander, damit jeder Schritt unabhängig voneinander debuggt und verbessert werden kann.

Benutzerdefinierte Erfassungs-Pipelines und idempotente Muster für die erneute Erfassung

Idempotenz macht die Neuindizierung sicher. Verwenden Sie stabile objectID-Werte und deterministische Transformationen, damit die erneute Ausführung der Pipeline bei denselben Eingaben dieselben Datensätze erzeugt. Dies ist unerlässlich, wenn Sie die Chunking-Strategie, die Einbettungen oder das Schema ändern und eine vollständige Neuindizierung erforderlich ist.

Beispiel für ein Skript zur Datenerfassung (Python)

import os
import hashlib
import logging
from datetime import datetime, timezone

from algoliasearch.search.client import SearchClientSync

APP_ID = os.environ["ALGOLIA_APP_ID"]
ADMIN_KEY = os.environ["ALGOLIA_ADMIN_API_KEY"]
INDEX_NAME = os.environ.get("ALGOLIA_INDEX", "docs_index_v1")

client = SearchClientSync(APP_ID, ADMIN_KEY)
logger = logging.getLogger(__name__)

def fetch_docs_from_source():
    return [
        {
            "doc_id": "docs_payment_api",
            "version": "v3.2",
            "doc_type": "api_reference",
            "audience": "developer",
            "product": "payments",
            "paragraphs": [
                {
                    "text": "Create a payment by sending a POST request to /payments with amount and currency.",
                    "page": 1,
                    "heading_path": ["Payments", "Create payment"],
                },
                {
                    "text": "Use idempotency keys to prevent duplicate payment creation during retries.",
                    "page": 1,
                    "heading_path": ["Payments", "Create payment"],
                },
            ],
        },
        {
            "doc_id": "docs_refunds_guide",
            "version": "v1.8",
            "doc_type": "guide",
            "audience": "merchant",
            "product": "refunds",
            "paragraphs": [
                {
                    "text": "Refund requests can be submitted from the dashboard or through the refunds API.",
                    "page": 2,
                    "heading_path": ["Refunds", "Submitting a refund"],
                }
            ],
        },
    ]

def stable_object_id(doc_id: str, chunk_id: str) -> str:
    raw = f"{doc_id}:{chunk_id}".encode("utf-8")
    return hashlib.sha256(raw).hexdigest()

def to_record(doc_id: str, chunk_id: str, text: str, meta: dict) -> dict:
    now = int(datetime.now(timezone.utc).timestamp())
    return {
        "objectID": stable_object_id(doc_id, chunk_id),
        "doc_id": doc_id,
        "chunk_id": chunk_id,
        "text": text,
        "updated_at": now,
        **meta,
    }

records = []

for item in fetch_docs_from_source():
    doc_id = item["doc_id"]
    version = item["version"]

    for idx, paragraph in enumerate(item["paragraphs"]):
        meta = {
            "doc_type": item.get("doc_type", "kb"),
            "audience": item.get("audience", "public"),
            "version": version,
            "product": item.get("product", "unknown"),
            "page": paragraph.get("page"),
            "heading_path": paragraph.get("heading_path", []),
        }
        records.append(to_record(doc_id, f"p{idx}", paragraph["text"], meta))

if not records:
    logger.warning("No records generated for indexing, skipping publish.")
else:
    try:
        response = client.save_objects(
            index_name=INDEX_NAME,
            objects=records,
        )
        client.wait_for_task(
            index_name=INDEX_NAME,
            task_id=response.task_id,
        )
        logger.info("Published %d records to %s", len(records), INDEX_NAME)
    except Exception:
        logger.exception(
            "Batch publish failed for index %s with %d records",
            INDEX_NAME,
            len(records),
        )
        # In production, send to retry / replay queue or alerting system here.
        raise

Dieses Muster unterstützt deterministische Neuerstellungen und eine sichere Schemaentwicklung, was besonders dann wichtig ist, wenn Sie die Chunking-Einteilung, die Einbettungen oder das Schema ändern und einen sauberen Übergang wünschen, ohne die Relevanz oder die Zugriffskontrollen zu beeinträchtigen.

Anreicherung und Vorverarbeitung

Eine Anreicherung kann die Relevanz verbessern, ohne die Latenz zu erhöhen – vorausgesetzt, sie erfolgt bereits im Vorfeld und nicht erst zum Zeitpunkt der Abfrage. Wenn die Anreicherung fest in den Index integriert ist, bleibt der Abruf schnell, vorhersehbar und leichter nachvollziehbar.

Vorgelagerte Datenaufbereitung (OCR, NER, Tagging)

Die Anreicherung ist am effektivsten, wenn sie erfolgt, bevor die Daten überhaupt den Index erreichen, sodass die Abfragezeiten schnell und vorhersehbar bleiben. Zu den gängigen Anreicherungsmaßnahmen zählen OCR für PDFs und Scans in Verbindung mit Qualitätsprüfungen zur Behandlung fehlerhafter Extraktionen, Spracherkennung und Normalisierung zur Gewährleistung der Konsistenz der Inhalte über verschiedene Sprachräume hinweg, Entitätsextraktion und Taxonomie-Tagging zur Verbesserung der Filterung und Facettierung sowie Klassifizierung zur Kennzeichnung von Vertraulichkeits- oder Compliance-Kategorien, die sich auf den Zugriff und die Governance auswirken.

Indizierungsschicht

Die gemeinsame Speicherung von Schlüsselwortfeldern und Vektoren ermöglicht eine hybride Suche

Bei der Indizierung legen Sie fest, was die „Suche“ leisten kann. Wenn das Schema keine Einschränkungen und Absichten abbilden kann, lässt sich das später durch keine noch so intensive Optimierung beheben.

In der Praxis bedeutet das, dass Ihr Indexschema Folgendes enthalten sollte:

  • Durchsuchbare Textfelder für lexikalische Übereinstimmungen
  • Metadatenfelder für Filterung, Facettierung und benutzerdefinierte Rangfolge
  • Vektor-Einbettungen, wenn Sie diese vorgelagert bereitstellen, oderNeuralSearch-Funktionen, wenn Sie auf Plattform-Einbettungen zurückgreifen

Die Gestaltung des Indexes als entscheidender Faktor für die maximale Wiederauffindbarkeit

Die Gestaltung des Indexes legt die Obergrenze für den Rückruf fest. Wichtige Entscheidungen:

  • Granularität (Datensätze auf Produktebene vs. Datensätze auf Chunk-Ebene)
  • Feldauswahl (was ist durchsuchbar und was wird nur angezeigt)
  • Normalisierung (einheitliche Kategoriepfade, Einheiten, Benennung von Attributen)
  • Stabile Identifikatoren und Strategie zur Duplikatsbeseitigung

Bei Dokumenten bestimmen Chunking und Anker die Qualität der Zitierung. Im E-Commerce bestimmt die Attributnormalisierung die Benutzerfreundlichkeit der Facetten und die Stabilität der Filter.

Attribute für die Facettierung, Filterung und Rangfolge

Behandeln Sie Facetten und Filter als „First-Class-Elemente“. Definieren Sie:

  • Attribute für die Filterung (feste Einschränkungen wie „in_stock“, „tenant_id“)
  • Attribute für die Facettierung (Navigation wie Marke, Kategoriepfad)
  • Ranking-Kriterien (Signale wie Beliebtheit, Aktualität)

Abruf und Rangfolge

Hybrider Abrufablauf (Schlüsselwort plus Vektor)

Der Stack sollte zunächst die hybride Abfrage, dann strukturierte Einschränkungen und schließlich die Feinabstimmung unterstützen.

Ein praktischer Ablauf zur Abfragezeit:

  • Wenden Sie zunächst strenge Einschränkungen an, insbesondere in Bezug auf Benutzergruppen und ACLs.
  • Hybrid-Abruf ausführen
  • Führen Sie eine geschäftsbezogene Optimierung durch, einschließlich Regeln, Synonymen und benutzerdefinierter Rangfolge
  • Eine Neugewichtung nur dann vornehmen, wenn das p95-Budget dies zulässt

Filter und Facetten als Mittel zur Stabilisierung der Trefferquote

Filter und Facetten sorgen für eine genaue semantische Trefferquote. In der Gliederung werden diese ausdrücklich als Stabilisatoren bezeichnet.

Beispielabfrage (JavaScript)

import { algoliasearch } from "algoliasearch";

const client = algoliasearch(
  process.env.ALGOLIA_APP_ID,
  process.env.ALGOLIA_SEARCH_API_KEY
);

const response = await client.searchSingleIndex({
  indexName: "products",
  searchParams: {
    query: "camping cooler for drinks",
    filters: "inStock:true AND region:US AND price_range:mid",
    facetFilters: ["category:Outdoor"],
    hitsPerPage: 20,
  },
});

const hits = response.hits;

Optionale Phasen der Neubewertung und Empfehlung

Reranking und Empfehlungen sollten am besten als optionale Ebenen auf einer stabilen Suchgrundlage betrachtet werden. Sie können die Präzision und Auffindbarkeit der obersten Suchergebnisse verbessern, jedoch nur, wenn sie budgetiert, messbar und selektiv eingesetzt werden. Der sicherste Ansatz besteht darin, zunächst Eignungsfilter anzuwenden und das Reranking erst dann einzusetzen, wenn die Latenz und die Zugriffsmuster dies rechtfertigen.

Verwenden Sie die Neugewichtung, wenn:

  • Die obersten Ergebnisse müssen präziser sein
  • Die Latenz liegt innerhalb der p95-Zielwerte und ist somit akzeptabel

Verwenden Sie „Empfehlen“, wenn:

  • Sie möchten über die ursprüngliche Suchanfrage hinaus weitere Ergebnisse finden
  • Sie möchten ergänzende Artikel wie „ähnliche Produkte“ und „häufig zusammen gekaufte Artikel“ anzeigen.

Muster 1: Dynamische Neureihung in Algolia

Mit dem „Dynamic Re-Ranking“ von Algolia lässt sich die Reihenfolge der Ergebnisse anpassen, und Sie können dies für jede Abfrage mithilfe des Parameters „enableReRanking“ steuern. Dies ist nützlich, wenn Sie die Präzision am Anfang der Liste verbessern möchten, während die Abruf- und Einschränkungslogik unverändert bleibt.

Modell 2: Eine externe Reranking-Stufe

Einige Teams lassen nach dem Abruf ein zusätzliches Modell laufen, um die besten Kandidaten neu zu ordnen. Das kann funktionieren, muss jedoch optional sein und durch Latenzbudgets begrenzt werden, da es zusätzlichen Netzwerk- und Rechenaufwand verursacht. Eignungsfilter und die Durchsetzung von ACLs sollten vor der Neuordnung erfolgen, damit der Neuordner niemals unzulässige Kandidaten zu sehen bekommt.

Wann sollte man eine Neugewichtung vornehmen?

  • Die Suchanfrage ist mehrdeutig oder explorativ, und die Präzision der obersten Treffer ist entscheidend.
  • Die Latenz lässt sich im Rahmen Ihrer p95- und p99-Zielwerte verkraften.

Wann sollte man „Empfehlen“ verwenden?

Sie möchten über die ursprüngliche Suchanfrage hinaus weitere Vorschläge erhalten, beispielsweise verwandte Artikel oder Module, die häufig zusammen gekauft werden.

Code-Beispiel: Steuerung der dynamischen Neureihung pro Abfrage

import { algoliasearch } from "algoliasearch";

const client = algoliasearch(
  process.env.ALGOLIA_APP_ID,
  process.env.ALGOLIA_SEARCH_API_KEY
);

const query = "running shoes";
const commonSearchParams = {
  filters: "tenant_id:acme AND region:us",
  hitsPerPage: 20,
};

let hits = [];

try {
  const response = await client.searchSingleIndex({
    indexName: "products",
    searchParams: {
      query,
      ...commonSearchParams,
      enableReRanking: true,
    },
  });

  hits = response.hits;
} catch (error) {
  console.error("Search with re-ranking failed, falling back to standard retrieval", error);

  const fallbackResponse = await client.searchSingleIndex({
    indexName: "products",
    searchParams: {
      query,
      ...commonSearchParams,
      enableReRanking: false,
    },
  });

  hits = fallbackResponse.hits;
}

Latenzbudgets in der Praxis

Ein Latenzbudget funktioniert nur, wenn es explizit festgelegt und durchgesetzt wird. Betrachten Sie die Suchanfrage als eine Abfolge von Phasen und weisen Sie jeder Phase eine maximale Dauer sowie einen Ausweichwert zu. Wenn Sie beispielsweise RAG einsetzen, können Sie ein festes Budget für das Abrufen, ein kleineres optionales Budget für die Neureihung und ein begrenztes Budget für die Generierung reservieren.

Der zuverlässigste Weg, p95 stabil zu halten, besteht darin, frühere Phasen vorhersehbar zu gestalten. Befolgen Sie die oben genannten Abrufregeln, wenden Sie Tenant- und ACL-Filter vor der Erweiterung der Kandidaten an und steuern Sie anschließend die Latenz mithilfe von Facetten, Caching und optionaler Neugewichtung. Dadurch wird die Latenz zu einer Produktentscheidung und nicht zu einem technischen Zufallsereignis. Teams können Kompromisse klar kommunizieren und messen, ob der Kompromiss zu besseren Ergebnissen wie dem Erfolg bei der ersten Abfrage und der Umformulierungsrate geführt hat.

Erzeugung und Rückkopplungsschleife

Die Generierung ist kein Ersatz für die Recherche. Sie ist eine Schnittstellenschicht, die sich stets auf die recherchierten Ergebnisse stützen muss und bei unzureichender Abdeckung Zitate sowie Ablehnungsverhalten einbezieht.

Retrieval-Augmented Generation (RAG) auf der Grundlage von Suchergebnissen

Ein sicheres RAG-Muster:

  • Die besten Chunks mit strengen Filtern und Versionsbeschränkungen abrufen
  • Erstellen Sie ein Kontextpaket mit kurzen Textabschnitten und Metadaten (URL, Anker, Version)
  • Nur aus den abgerufenen Textstellen generieren
  • Quellenangaben für wesentliche Behauptungen sind erforderlich
  • Wenn die Abdeckung gering ist, keine Antwort generieren, sondern Quellen und Verfeinerungen zurückgeben

RAG-Prompt-Vertrag zum Einfügen (strukturiertes Beispiel):

System role:
You are a product support assistant. Answer only from the retrieved sources provided in the
context pack. Do not use outside knowledge. Do not infer undocumented behavior. If the sources
are weak, conflicting, outdated, or missing the requested version or product, do not guess.

Goal:
Return a grounded answer that is useful, concise, and easy to verify.

Input contract:
- user_question: the end-user’s question
- requested_version: optional version string from user context
- retrieved_sources: a list of source objects, each containing:
  - source_id
  - title
  - url
  - anchor
  - version
  - doc_type
  - passage_text
- answerability_score: high, medium, or low
- max_answer_tokens: hard output limit
- max_citations_per_claim: default 1, maximum 2

Grounding rules:
1. Use only facts supported by retrieved_sources.
2. Every material claim, step, warning, limit, or configuration must cite at least one source_id.
3. Prefer sources that match the requested_version. If version mismatch exists, state that
clearly.
4. If top sources conflict, do not merge them into one answer. Surface the conflict.
5. If answerability_score is low, refuse to answer directly and return the best sources plus
refinement suggestions.
6. If answerability_score is medium, answer only if the top sources agree and version alignment
is clear.
7. Never invent parameters, endpoints, error codes, limits, or product behavior.

Output format:
Return valid JSON with this schema:

{
  "status": "answered" | "insufficient_coverage" | "version_conflict",
  "answer": [
    {
      "step": "short actionable statement",
      "citations": ["source_id"]
    }
  ],
  "warnings": [
    "optional warning about version mismatch, weak coverage, or conflicting docs"
  ],
  "follow_up_question": "ask only if needed to disambiguate version, product, or environment",
  "suggested_filters": {
    "product": ["optional"],
    "version": ["optional"],
    "doc_type": ["optional"]
  },
  "top_sources": [
    {
      "source_id": "string",
      "title": "string",
      "url": "string",
      "anchor": "string"
    }
  ]
}

Refusal behavior:
- If the answer is not supported, set status to "insufficient_coverage".
- Leave answer as an empty list.
- Populate warnings with the reason.
- Return top_sources and suggested_filters.
- Do not fabricate a partial answer.

Token and length constraints:
- Keep the full response under max_answer_tokens.
- Prefer 3 to 5 short answer steps.
- Prefer direct quotations only when necessary and keep them minimal.

User question:
{{user_question}}

Requested version:
{{requested_version}}

Answerability score:
{{answerability_score}}

Retrieved sources:
{{retrieved_sources}}

max_answer_tokens:
{{max_answer_tokens}}

max_citations_per_claim:
{{max_citations_per_claim}}

Ein brauchbarer RAG-Prompt-Vertrag sollte mehr als nur den Tonfall definieren. Er sollte die Eingabefelder, die Grundregeln, das Verhalten bei Ablehnungen, den Umgang mit Versionen, das Ausgabeschema und die Token-Begrenzungen festlegen, damit die Generierungsschicht getestet, überwacht und bei geringer Abdeckung sicher heruntergestuft werden kann.

Hinweis zum Thema „Selbst entwickeln oder kaufen“ für die RAG-Orchestrierung

Die obige Architektur veranschaulicht das zugrunde liegende Muster: Abruf, Kontextzusammenstellung, Prompt-Erstellung, Darstellung von Zitaten und Überprüfung der Beantwortbarkeit. Teams, die die volle Kontrolle wünschen, können diesen Workflow direkt selbst erstellen. Teams, die den Großteil der Koordinationsarbeit überspringen möchten, können Algolia Agent Studio nutzen, das ein ausgewähltes LLM mit der Algolia-Suche und den Algolia-Tools verbindet, den End-to-End-Workflow verwaltet und die Antworten auf Live-Daten von Algolia stützt. Für Teams, die systemübergreifende, umfassendere Agenten-Workflows entwickeln, bietet der von Algolia gehostete MCP-Server eine kontrollierte Möglichkeit, Such- und Empfehlungsfunktionen für LLMs und Agenten bereitzustellen.

Erfassung von Feedback-Signalen mithilfe von Analysen und Erkenntnissen

Rückkopplungsschleifen machen die Suche zu einem sich ständig verbessernden System:

  • Abfrage protokollieren, verwendete Filter und angeklickte Ergebnisse
  • Neufassungen von Tracks, Sitzungen ohne Ergebnisse und Zeit bis zum Erfolg
  • Für RAG: Verfolgen Sie die Antwortquote, die Zitierabdeckung, die Klickrate bei Zitaten und Ereignisse ohne Generierung
  • Nutzen Sie diese Signale, um sowohl Optimierungen als auch inhaltliche Verbesserungen voranzutreiben, beispielsweise bei fehlenden Dokumenten oder fehlenden Metadaten.

Stückliste: Ebenen, Komponenten und Fallstricke

Verwenden Sie diese Stückliste, um die Referenzarchitektur den konkreten Algolia-Komponenten und den damit verbundenen Tools zuzuordnen, die in Produktionsumgebungen üblicherweise dazu gehören.

Häufige Fallstricke, die es frühzeitig zu erkennen gilt:

  • Es fehlen stabile Identifikatoren, was Neuaufbauten unsicher macht
  • Fehlende ACL-Metadaten, was zu einer inkonsistenten Zugriffskontrolle führt
  • Facettierung anhand unkontrollierter Attribute, was die Latenzschwankungen erhöht
  • Es gibt keine Strategie für den Neuaufbau und die Umstellung, was die Neuindizierung riskant macht. Das Betriebsmuster ist unter „Lebenszyklus“ (in der Tabelle) aufgeführt.

Dies ist die Kurzfassung der operativen Checkliste. Ein ausführlicherer Abschnitt zu Anti-Mustern und Abhilfemaßnahmen folgt weiter unten in diesem Dokument und sollte bei Entwurfsüberprüfungen, bei der Planung von Neuaufbauten sowie bei der Nachverfolgung von Vorfällen herangezogen werden.

Ebene Zweck Algolia-Komponenten Häufig verwendete Werkzeuge
Verschlucken Daten erfassen Crawler, Konnektoren, API-Clients ETL-/Orchestrierungs-Frameworks, Quell-Webhooks, CDC-Pipelines, Warteschlangen, Replay-Systeme
Bereicherung Inhalte und Metadaten verbessern Indexfähige Datensatzmodellierung OCR, NER, Klassifikatoren, Taxonomie-Dienste
Indizierung Lexikalische Daten und Vektoren speichern Aufbau des NeuralSearch-Indexes Schema-Registry, CI-Pipelines
Abruf Hybride Suche mit Einschränkungen NeuralSearch, Filter, Facetten API-Gateway, Caching, Feature-Flag-Steuerung, Abfrage-Middleware
Tuning Relevanz der Steuerung Benutzerdefinierte Rangliste, Regeln, Synonyme Feature-Flags, Merchandising-Systeme
Optionale Neureihung Top-K verbessern Phase der Neugewichtung durch KI Neubewertung von Modellen, Latenzüberwachung
Empfehlen Entdeckung Empfehlungsphase Personalisierungssysteme, Analysedatenlager
RAG-Frontend Fundierte Antworten Suchergebnisse als Kontext LLM-Anbieter, Prompt-/Policy-Middleware, Darstellung von Zitaten, Evaluierungs-Harness
Beobachtbarkeit Messen und Fehlerbehebung Analysen und Erkenntnisse Dashboards, Protokolle, Ablaufverfolgung
Führung Zugriff und Datenschutz Gesicherte API-Schlüssel, Filter pro Datensatz IAM, DLP, Audit-Protokolle, Schlüsselverwaltungs- und Geheimnischwechsel-Systeme
Lebenszyklus Beibehaltung und Neuaufbau Metadaten zum Ablaufdatum, Markierungen für vorläufiges Löschen, Kopier- oder Verschiebevorgänge von Indizes für geplante Umstellungen sowie partielle Aktualisierungen zur inkrementellen Aktualisierung. Backfills, Replay-Pipelines, Backups

Anti-Muster in der Produktion und deren Behebung

Wenn die Suchqualität nachlässt, ist man schnell geneigt, dem Modell die Schuld zu geben, doch die eigentliche Ursache liegt meist in den Daten und deren Struktur. Die meisten Lösungen laufen darauf hinaus, die Präzision der Datensuche zu verbessern, Einschränkungen wie Version, Region und Zugriffskontrolle durchzusetzen und das Verhalten über mehrere Neuaufbauten hinweg stabil zu halten.

Ein Datensatz für eine gesamte PDF-Datei oder eine lange Seite

  • Was passiert: Die Zitate sind vage, und die Nutzer müssen scrollen, um den relevanten Teil zu finden.
  • Lösung: In Abschnitte nach Überschriften und Absätzen unterteilen und Anker speichern, damit beim Abrufen direkt zum richtigen Abschnitt gesprungen werden kann

Zu lange Abschnitte

  • Was passiert: Die Ergebnisse verweisen auf das richtige Dokument, aber auf die falsche Passage, und in den Antworten fehlen Details.
  • Lösung: Teile die Abschnitte an den Grenzen der Unterthemen auf und achte darauf, dass sich jeder Abschnitt auf eine Idee konzentriert.

Verzerrte OCR-Inhalte

  • Was passiert: Die Einbettungen stimmen bei unsinnigem Text überein, und die Anzahl der Fehlalarme steigt
  • Behebung: OCR-Bereinigung und Qualitätsprüfungen hinzufügen und Extraktionen mit geringer Qualität von der Indizierung ausschließen

Fehlende kanonische IDs

  • Was passiert: In HTML- und PDF-Quellen treten Duplikate auf, und nach dem Neuaufbau kommt es zu Verschiebungen im Ranking.
  • Lösung: Einführung von kanonischen IDs und Abstammungsfeldern, damit das System gleichwertige Inhalte über verschiedene Quellen hinweg identifizieren kann

Fehlende Versions- und Zugriffsmetadaten (ACLs)

  • Was passiert: Nutzer sehen die falsche Version oder eingeschränkte Inhalte, und das Zwischenspeichern wird unsicher.
  • Korrektur: Die Felder „Version“ und „ACL“ in jedem Datensatz als Pflichtfelder festlegen und deren Angabe beim Abruf erzwingen

Facettierung anhand unkontrollierter oder verrauschter Attribute

  • Was passiert: Facetten werden unübersichtlich, die Kardinalität steigt sprunghaft an und Abfragen werden langsamer
  • Lösung: Attribute normalisieren und die Kardinalität der Facetten mithilfe kontrollierter Vokabulare und in Intervalle unterteilter Bereiche begrenzen

Inkonsistente objectID-Werte bei Neuaufbauten

  • Was passiert: Nach der Neuindizierung treten Duplikate auf, und Teilaktualisierungen verhalten sich nicht mehr vorhersehbar.
  • Lösung: Verwenden Sie stabile, deterministische ObjectID-Werte, die nicht von der Erfassungsreihenfolge oder von temporären IDs abhängen.

Einbettungen, die wichtige strukturierte Felder außer Acht lassen

  • Was passiert: Die semantische Suche liefert plausible, aber ungültige Ergebnisse, wie z. B. eine falsche Region oder eine falsche Version.
  • Lösung: Wenden Sie die Einschränkungen bereits zu Beginn der Abfrage an und stellen Sie sicher, dass die Eingaben für die Einbettung und die Schemata die wichtigsten Zulassungskriterien widerspiegeln.

Sanierung (Wiederaufbau-Muster)

  • Führen Sie eine erneute Aufteilung in Blöcke und eine erneute Indizierung gemäß den zuvor definierten Regeln zur Dokumentenaufteilung durch, wobei „heading_path“, „section_id“ und Deep-Link-Anker beibehalten werden, und überprüfen Sie anschließend die Zitiergenauigkeit anhand einer Stichprobe von Suchanfragen.
  • Fehlende Metadaten hinzufügen und nachträgliche Einträge vornehmen: „version“, „doc_type“, „audience“ und „acl_roles“ angeben, ältere Datensätze nachträglich ergänzen und veraltete Versionen deutlich kennzeichnen
  • Attribute und Filterkriterien normalisieren: Kategorien und Attribute vereinheitlichen, Bereiche wie Preise in Klassen einteilen und nicht verwendete Filterkriterien entfernen
  • Atomische Cutover-Neuaufbauten nutzen: Einen neuen Index erstellen, diesen anhand eines Golden Sets und mit begrenztem Live-Traffic validieren, dann in einem Schritt umschalten und die Rollback-Möglichkeit beibehalten, bis sich die Metriken stabilisieren

Vor dem Hintergrund dieser Fehlerquellen konzentrieren sich die folgenden Abschnitte auf Leistungs-, Kosten- und Bereitstellungsoptionen, die die Stabilität der Architektur im Produktivbetrieb gewährleisten.

Beispiele mit Lösungen

In diesem Beispiel wird ein typischer Einzelhandelskatalog herangezogen, in dem Nutzer auf zwei verschiedene Arten suchen. Manchmal wissen sie genau, was sie wollen, wie zum Beispiel „AirPods Pro 2“. In anderen Fällen beschreiben sie ein Bedürfnis, wie zum Beispiel „Laufschuhe für Plattfüße“. Das Ziel besteht darin, die p95-Latenz konstant zu halten, die Filterung zuverlässig zu gestalten und letztendlich eine höhere Konversionsrate zu erzielen.

Anfrageablauf (Abfragezeit)

Der folgende Ablauf wendet die zuvor beschriebenen Regeln für das Abrufen, Filtern und das Latenzbudget auf eine Suchfunktion im Einzelhandel an.

Beispiel für eine funktionierende Abfrage im Einzelhandel: hybride Abfrage

import { algoliasearch } from "algoliasearch";

const client = algoliasearch(
  process.env.ALGOLIA_APP_ID,
  process.env.ALGOLIA_SEARCH_API_KEY
);

const query = "running shoes for flat feet";

const response = await client.searchSingleIndex({
  indexName: "products",
  searchParams: {
    query,
    filters: "tenant_id:acme AND region:US AND language:en AND in_stock:true",
    facetFilters: ["category_path:Shoes > Running"],
    hitsPerPage: 24,
    attributesToRetrieve: [
      "objectID",
      "title",
      "brand",
      "category_path",
      "price",
      "currency",
      "discount_percent",
      "in_stock",
      "rating_avg",
      "image_url",
      "product_url"
    ],
    facets: ["brand", "category_path", "price_bucket", "rating_bucket", "attributes.color",
      "attributes.size"]
  }
});

const hits = response.hits;
const facets = response.facets;

Datensatzfelder (Mindestschema)

  • objectID (stabile SKU oder Produkt-ID)
  • Titel, Untertitel, Marke, Kategoriepfad, Kurzbeschreibung
  • Bild-URL, Produkt-URL
  • Preis, Währung, Rabatt_in_Prozent
  • in_stock (boolesch), inventory_count (optional), availability_status
  • Region, Sprache, tenant_id
  • Durchschnittliche Bewertung, Anzahl der Bewertungen
  • Attribute (vereinfachte Attribute wie Größe, Farbe, Material)
  • popularity_7d, sales_30d (oder ein einzelner Wert)
  • Einbettung (aus Titel und Schlüsselattributen abgeleitete Vektordarstellung)

Filter und Facetten (empfohlene Standardeinstellungen)

  • Filter: tenant_id, Region, Sprache, in_stock und beliebige Compliance-Tags
  • Facetten: Marke, Kategoriepfad, Preisklasse, Bewertungsklasse, Attribute.Farbe, Attribute.Größe

Regler für Ranking und Tuning

  • Verwenden Sie eine benutzerdefinierte Sortierung für Ihre Geschäftsziele: „in_stock“ absteigend, „popularity_7d“ absteigend, „rating_avg“ absteigend, „discount_percent“ absteigend (die Reihenfolge hängt von Ihrer Strategie ab)
  • Regeln für das Merchandising anwenden: Hervorgehobene Artikel für saisonale Kampagnen, beworbene Kategorien oder Markenvereinbarungen
  • Verwenden Sie Synonyme für Kategoriebegriffe mit Bedacht und vermeiden Sie zu weit gefasste Synonyme, die die Genauigkeit beeinträchtigen.
  • Achten Sie darauf, dass Vektoren und Textfelder aufeinander abgestimmt sind. Wenn Einbettungen das Attribut „wasserfest“ enthalten, stellen Sie sicher, dass Ihre durchsuchbaren Felder dieses Attribut ebenfalls enthalten.

Ausweichregeln (Latenz und Qualität)

  • Bei Überschreitung des Budgets zunächst auf die Neugewichtung verzichten und optimierte Hybrid-Ergebnisse mit Facetten zurückgeben
  • Sollte das Budget weiterhin überschritten werden, reduzieren Sie die Anzahl der Kandidaten und beschränken Sie kostspielige Hervorhebungen oder Felder mit großem Datenvolumen.
  • Bei starken Schwankungen im Lagerbestand sollten Sie teilweise Aktualisierungen von Bestandsmengen und Preisen vorziehen. Bei Verzögerungen bei der Aktualisierung sollten Sie einen kurzen Hinweis im Benutzerinterface anzeigen („Verfügbarkeit kann variieren“) und dies als Erfassungslücke protokollieren.

Module empfehlen

  • „Verwandte Produkte“ können Co-View- oder Ähnlichkeitssignale nutzen
  • „Häufig zusammen gekauft“ kann auf Warenkorb-Analysen und Signale nach dem Kauf zurückgreifen
  • Halten Sie diese Module innerhalb ihrer jeweiligen Latenzbudgets und greifen Sie bei Bedarf auf einfache, kategorienbasierte Empfehlungen zurück.

Dokumentenportal: versionsbezogene Suche, Zitate und sichere RAG-Antwortfähigkeit

Dieses Beispiel geht von einem Dokumentationsportal aus, auf dem Nutzer die Frage „Wie konfiguriere ich X?“ stellen und zuverlässige Antworten mit Quellenangaben erwarten. Das Ziel sind Korrektheit, strenge Zugriffskontrolle, Versionsverfolgung und ein klares Verhalten bei fehlenden Inhalten.

Anfrageablauf (Abfragezeit)

Der folgende Ablauf wendet die zuvor beschriebenen Regeln zur Aufteilung in Abschnitte, zur Versionsfilterung, zur Zugriffskontrolle und zur fundierten Generierung auf einen Dokumentations-Workflow an.

import { algoliasearch } from "algoliasearch";

const client = algoliasearch(
  process.env.ALGOLIA_APP_ID,
  process.env.ALGOLIA_SEARCH_API_KEY
);

function buildContextPack(hits) {
  return hits.map((hit) => ({
    source_id: hit.objectID,
    doc_id: hit.doc_id,
    section_id: hit.section_id,
    heading_path: hit.heading_path ?? [],
    content: hit.content,
    url: hit.url,
    anchor: hit.anchor,
    version: hit.version,
  }));
}

async function retrieveChunks({ query, product, version, aclRole }) {
  const response = await client.searchSingleIndex({
    indexName: "docs_chunks",
    searchParams: {
      query,
      filters: `product:${product} AND version:${version} AND acl_roles:${aclRole}`,
      hitsPerPage: 8,
      attributesToRetrieve: [
        "objectID",
        "doc_id",
        "section_id",
        "heading_path",
        "content",
        "product",
        "version",
        "url",
        "anchor",
      ],
    },
  });

  return response.hits;
}

const hits = await retrieveChunks({
  query: "how do I configure webhook retries",
  product: "payments",
  version: "v3",
  aclRole: "developer",
});

const contextPack = buildContextPack(hits);

// Replace this with your actual LLM call.
const promptPayload = {
  user_question: "how do I configure webhook retries",
  retrieved_sources: contextPack,
  answerability_score: "high",
  max_answer_tokens: 300,
  max_citations_per_claim: 2,
};

Chunking und Metadatenmodell

  • Abschnittsgröße: Streben Sie 150 bis 350 Wörter pro Abschnitt an, wobei die Abschnitte an Überschriften und Listen ausgerichtet sein sollten.
  • Pflichtfelder:
    • objectID (stabile Chunk-ID)
    • doc_id, section_id, heading_path
    • Inhalt (Textabschnitt)
    • Produkt, Version, Sprache
    • URL, Anker (Deep-Link zu einem Abschnitt)
    • tenant_id, acl_roles (oder entsprechende Zugriffs-Tags)
    • updated_at (zur Verwaltung der Aktualität)
    • Einbettung (Vektor für die semantische Suche)

Filter und Facetten

Filter: tenant_id, acl_roles, Sprache und, falls vorhanden, Produkt, Version

Facetten: Produkt, Version, doc_type (Anleitung, API-Referenz, Fehlerbehebung) und optional Plattform (Web, iOS, Android)

Richtlinie zur Erstellung von RAGs

  • Nur aus abgerufenen Chunks generieren und Zitate stets sichtbar lassen
  • Wenn der Nutzer nach einzelnen Schritten fragt, sollten vorzugsweise aus den Quellen kopierte, leicht umformulierte, nummerierte Schritte angegeben und für jeden Schritt der entsprechende Abschnitt zitiert werden.
  • Wenn sich die Quellen hinsichtlich der Version unterscheiden, sollte die unterschiedliche Versionsangabe ausdrücklich angegeben und beide zitiert werden

Rechenschaftspflicht und Ausweichregeln

  • Wenn die Abdeckung gering ist, sollten Sie keine Vermutungen anstellen. Zeigen Sie die besten Passagen an, stellen Sie Filter für Produkt und Version bereit und empfehlen Sie eine Verfeinerungsabfrage.
  • Wenn die Zitate nicht aussagekräftig sind, nur die „wichtigsten Quellen“ zurückgeben und die Generierung überspringen
  • Wenn es sich bei der Abfrage um einen bekannten Fehlercode handelt und die Abfrage mehrere Versionen liefert, soll die Benutzeroberfläche den Nutzer nach der gewünschten Version fragen und dabei die Quellen der am häufigsten verwendeten Version zuerst anzeigen.

Zu protokollierende Auswertungssignale

  • Anteil der Umformulierungen von Suchanfragen nach Erhalt der Antwort
  • Klickraten bei Zitaten und Verweildauer auf der Quelle
  • Anteil der Fälle, in denen „keine Antwort generiert“ wurde, und die am häufigsten fehlenden Themen
  • Rate der Versionsabweichungen, bei denen Nutzer nach dem Anzeigen der Ergebnisse eine andere Version auswählen

Typisches serverseitiges Muster: Generierung eines bereichsgebundenen, gesicherten API-Schlüssels

Typisches serverseitiges Beispiel

Die genaue Umsetzung hängt von der Backend-Laufzeitumgebung und der Konfiguration der Schlüsselverwaltung ab, doch das Prinzip ist immer dasselbe: Auf dem Server wird ein kurzlebiger, gesicherter Suchschlüssel generiert, dessen Gültigkeitsbereich durch Mandanten- und Rollenfilter eingeschränkt wird, und der ausschließlich an einen autorisierten Client zurückgegeben wird.

Typisches serverseitiges Muster: Generierung eines bereichsgebundenen, gesicherten API-Schlüssels

Erstellen Sie auf dem Server einen kurzlebigen, gesicherten Suchschlüssel auf Basis eines übergeordneten Suchschlüssels, schränken Sie dessen Geltungsbereich mithilfe von Mandanten- und Rollenfiltern ein, beschränken Sie ihn optional auf den erforderlichen Index und geben Sie ihn nur an einen autorisierten Client zurück.

const securedApiKey = client.generateSecuredApiKey({
  parentApiKey: process.env.ALGOLIA_SEARCH_API_KEY,
  restrictions: {
    restrictIndices: ["docs_chunks"],
    filters: "tenant_id:acme AND acl_roles:developer",
    validUntil: Math.floor(Date.now() / 1000) + 3600,
  },
});

Setzen Sie dieses Muster in der Produktion in Verbindung mit üblichen Backend-Maßnahmen wie der Speicherung von Geheimnissen, der Schlüsselrotation, der Benutzerauthentifizierung und der Protokollierung von Überprüfungen ein. Erfahren Sie mehr überdie gesicherten API-Schlüssel von Algoliafür Datensicherheit.

Hybridsuche richtig umgesetzt: Lexikalisch plus Vektor plus Steuerung

Warum die Suche nach einem einzigen Modus nicht funktioniert

Die Stichwortsuche basiert auf der Überschneidung von Begriffen und liefert gute Ergebnisse bei Suchanfragen nach bekannten Elementen wie Artikelnummern, IDs und genauen Bezeichnungen. Bei Suchanfragen in natürlicher Sprache und mit explorativem Charakter schneidet sie hingegen schlecht ab, insbesondere wenn die Metadaten im Katalog unvollständig sind und Nutzer eher Anwendungsfälle als Produktnamen beschreiben.

Die Vektorsuchezeichnet sich durch semantische Ähnlichkeit aus, verfügt jedoch standardmäßig nicht über feste Einschränkungen. Die rein semantische Suche liefert oft geschäftlich unbrauchbare Ergebnisse, ignoriert Einschränkungen wie Verfügbarkeit und Compliance und hat Schwierigkeiten mit exakten Übereinstimmungen wie Fehlercodes.

Hybride Abrufarchitektur

Eine Produktionsarchitektur unterteilt:

  • Kandidatengenerierung (hybrides Retrieval)
  • Zugriffsberechtigung (Filter, ACLs, Richtlinien-Tags)
  • Navigation (Facetten und Verfeinerungen)
  • Optimierung (Ranking-Signale, Regeln, Synonyme)
  • Optionale Präzisionsschritte (Neubewertung)

Diese Trennung verbessert die Debugging-Möglichkeiten. Wenn eine Abfrage fehlschlägt, können Sie feststellen, ob das Problem auf fehlende Daten, falsche Filter, Ranking-Signale oder mangelhafte Embeddings zurückzuführen ist.

Wo die Parameter des „Nearest-Neighbor“-Verfahrens eine Rolle spielen

Wenn Sie Ihre eigene Vektorebene verwalten, wirken sich die ANN-Parameter auf die Latenz und den Recall aus. Zu den gängigen Einstellmöglichkeiten gehören:

  • Die Größe der Kandidatenliste, die zwar die Wiederauffindbarkeit erhöht, aber auch die Latenzzeit verlängert
  • Parameter für die Suchtiefe, wie z. B. „efSearch“ oder ähnliche suchmaschinenspezifische Steuerelemente
  • Filterstrategie, bei der strukturierte Filter idealerweise nach der Generierung von ANN-Kandidaten effizient angewendet werden

Relevanzoptimierung und Ausweichlösungen

Erst durch die Feinabstimmung wird die hybride Suche zu einem Produkt. Man benötigt klare Regeln dafür, wann die lexikalische Suche Vorrang hat, wann die semantische Suche erweitert wird und wann die Generierung abgelehnt werden soll.

Gewichtung der lexikalischen Sicherheit gegenüber semantischer Erweiterung

Ein praxisorientierter Ansatz:

  • Wenn die lexikalische Zuverlässigkeit hoch ist, beispielsweise bei einer exakten SKU-Übereinstimmung, wird die lexikalische Verzerrung
  • Wenn der semantische Abruf gering ist, sollten die semantischen Kandidaten erweitert werden
  • Verwenden Sie Synonyme und Regeln, um die geschäftliche Absicht zu kodieren, und nicht, um fehlerhafte Daten zu flicken.

Zugriffskontrollstrategien für eingeschränkte oder sensible Inhalte

Für eingeschränkte Domänen ist eine explizite Zugriffskontrolle erforderlich. Gemäß den zuvor genannten Zulassungsregeln sollten beim Abruf ACL-Filter angewendet werden; anschließend sind zusätzliche Kontrollmaßnahmen wie Indextrennung, Vertraulichkeitskennzeichnungen und die Beschränkung auf die ursprünglichen Quellen bei Anfragen mit hohem Risiko einzuführen.

Gating ist nicht nur ein Sicherheitsmechanismus. Es stärkt auch das Vertrauen und verringert die Anzahl der nachfolgenden Vorfälle.

In diesem Beitrag behandelte grundlegende Funktionsprinzipien:

  • Wenden Sie Zulassungsbeschränkungen vor der Rangfolgeentscheidung an. Filter für Mandanten, ACLs, Regionen, Versionen und Richtlinien sollten bereits zum Zeitpunkt des Abrufs angewendet und nicht erst nachträglich eingefügt werden.
  • Die Aufteilung sollte der für den Benutzer sichtbaren Bedeutung entsprechen. Bei Dokumenten und PDFs sollte die Aufteilung nach Überschriften und anschließend nach Absatz- oder Abschnittsgrenzen erfolgen, damit die Verweise präzise bleiben.
  • Behandeln Sie die Latenz wie ein Produktbudget. Sorgen Sie dafür, dass frühere Phasen vorhersehbar bleiben, und nehmen Sie bei Bedarf eine sanfte Herabstufung vor, indem Sie optionale Präzisionsstufen überspringen, bevor die Kernabfrage unterbrochen wird.
  • Verwenden Sie bei Neuaufbauten „Atomic Cutovers“. Führen Sie eine Neuindizierung in ein neues Ziel durch, überprüfen Sie es, schalten Sie einmal um und halten Sie die Rollback-Möglichkeit offen, bis sich die Kennzahlen stabilisiert haben.

Indizierungs- und Chunking-Strategien, die den Unterschied ausmachen

Die Chunking-Struktur und das Datensatzdesign sind oft wichtiger als die Wahl des Modells, da sie darüber entscheiden, ob Einschränkungen durchgesetzt werden können, ob Zitate im richtigen Abschnitt landen und ob Sie die Qualität auf reproduzierbare Weise bewerten können. Wenn man mit der falschen Granularität indiziert, wird RAG zu einem Ratespiel und Filter wirken unzuverlässig. Eine praktische Regel lautet, das „richtige“ Ergebnis so zu gestalten, dass es unter bereits angewendeten Einschränkungen leicht abrufbar ist. Das bedeutet stabile Identifikatoren und einen kleinen Satz erforderlicher Metadaten sowie Chunks, die einer für den Nutzer sichtbaren Struktur wie Überschriften und Abschnitten folgen.

Grundsätze, die für alle Bereiche gelten

  • Wählen Sie die Detailgenauigkeit entsprechend der Absicht des Nutzers: Bei Dokumenten und PDFs sollte die Verlinkung auf einen Absatz oder einen Abschnitt erfolgen, bei Code und APIs auf ein Symbol oder einen Fehlerverweis und im E-Commerce auf ein Produkt oder eine Variante.
  • Machen Sie die kanonische Identität zu einer unverzichtbaren Voraussetzung: Verwenden Sie stabile IDs, die auch bei Neuaufbauten erhalten bleiben. Ohne sie kommt es zu Duplikaten, Abweichungen, fehlerhaften Verweisen und unzuverlässigen Teilaktualisierungen.
  • Fügen Sie Einschränkungen in den Datensatz ein: Wenn eine Einschränkung von Bedeutung ist, muss sie gespeichert werden und zum Zeitpunkt des Abrufs filterbar sein. Verlassen Sie sich bei Zielgruppe, Region, Veröffentlichung oder Rollen nicht allein auf die Anwendungslogik.
  • Chunk für Aussagekraft und Zitierqualität: Die dokumentspezifischen Regeln für Überschriften, Absätze und Anker werden im Abschnitt „Dokumente und PDFs“ weiter unten behandelt.
  • Auf Messbarkeit ausgelegtes Design: Ihr Schema sollte es Ihnen erleichtern, die Beantwortbarkeit, die Abdeckung und die Versionsübereinstimmung zu messen, damit Sie systematische Verbesserungen vornehmen können.

Erforderliche Pflichtfelder:

  • objectID oder stabile Primär-ID
  • Inhalt (der durchsuchbare Text des Abschnitts oder Datensatzes)
  • doc_id oder Entitäts-ID (Dokument, Symbol, Produkt)
  • chunk_id oder Abschnittszeiger (bei in Blöcke unterteilten Quellen)
  • Version (oder Versionskennung)
  • acl_roles (oder ein gleichwertiges Feld zur Zugriffskontrolle)
  • doc_type oder Entitätstyp (Anleitung, API-Referenz, Produkt, Ticket)
  • Quelle oder URL (Herkunftsangabe für die Fehlersuche und Zitate)

Indizierung von Dokumenten und PDF-Dateien

Dokumente und PDF-Dateien reagieren besonders empfindlich auf die Aufteilung in Blöcke, da die Qualität von Zitaten und die Präzision bei der Suche von strukturellen Grenzen abhängen. Die folgenden Regeln konzentrieren sich auf die Beibehaltung von Überschriften, der Bedeutung von Absätzen und Deep-Link-Ankern.

In Absätze unterteilt, an die Struktur angepasst

  • Zunächst nach Überschriften, dann nach Absatzgrenzen innerhalb der einzelnen Abschnitte
  • Zielumfang: 150 bis 350 Wörter pro Abschnitt für die meisten Inhalte
  • Listen und Tabellen als Textblöcke beibehalten, die mit der nächstgelegenen Überschrift verknüpft sind
  • Fassen Sie „Verfahrensschritte“ nach Möglichkeit zusammen, da eine Aufteilung der Schritte den Nutzen mindert.

Verwenden Sie Überlappungen nur, wenn es notwendig ist

  • Falls der Text zahlreiche Querverweise enthält, fügen Sie eine kurze Überlappung von 1 bis 2 Sätzen ein.
  • Vermeiden Sie große Überschneidungen, die zu Quasi-Duplikaten führen, da diese den Erfassungsgrad beeinträchtigen und den Speicherbedarf in die Höhe treiben.

Überschriften als erstklassige Elemente behandeln

  • Jeder Abschnitt sollte den Pfad „heading_path“ enthalten, zum Beispiel „Setup > Authentifizierung > API-Schlüssel“
  • Speichere die „section_id“, die einem Deep-Link-Anker zugeordnet ist
  • Die Seite nur dann speichern, wenn die Quelle eine PDF-Datei ist und die Seitenzahlen für die Nutzer von Bedeutung sind

Empfohlene Bezeichner

  • doc_id: stabile Dokumentenkennung, zum Beispiel docs_payment_api
  • Version: Veröffentlichungsversion, zum Beispiel v3.2 oder 2025-10
  • chunk_id: stabile Chunk-Kennung innerhalb des Dokuments und der Version
  • canonical_id: formatübergreifender Identifikator, beispielsweise für denselben Inhalt im HTML- und im PDF-Format
  • source_id: Erfassungsquelle, zum Beispiel crawler_html, pdf_ocr, cms_export

Abstammungsfelder

  • parent_doc_id: wenn der Inhalt aus einem anderen Dokument stammt
  • derived_from: for example pdf_sha256:<hash> or cms_page_id:<id>
  • updated_at: Zeitpunkt der letzten Änderung der Quelle
  • indexed_at: Zeitpunkt, zu dem dieser Datensatz indiziert wurde

Mit Lineage können Sie Fragen wie „Warum habe ich Duplikate?“ und „Welche Quelle ist maßgeblich?“ beantworten.

Filter: Inhaltskategorie, Veröffentlichung und Benutzerrolle

Für die Dokumentensuche sind in der Regel Filter erforderlich, die den Benutzern zwar nicht immer sichtbar sind, von denen sie aber stets profitieren:

  • doc_type: Anleitung, API-Referenz, Fehlerbehebung, Versionshinweise
  • Zielgruppe: Entwickler, Händler, interner Support, Administrator
  • acl_roles: Rollen, die diesen Inhalt anzeigen dürfen
  • Version: filterbar und im Idealfall in der Benutzeroberfläche nach verschiedenen Kriterien sortierbar
  • Produkt oder Komponente: dient der Verfeinerung und Bewertung

Dadurch erfolgt die Abfrage korrekt, noch bevor eine Rangfolge erstellt wird.

Empfohlene Datensatzfelder für Dokumente und PDF-Dateien

Empfohlene Mindestfelder:

  • doc_id, version, chunk_id, canonical_id
  • Seite, Abschnitts-ID, Überschriftenpfad
  • doc_type, Zielgruppe, acl_roles
  • Sprache, Region (falls zutreffend)
  • URL, Anker
  • Inhalt (Textabschnitt)
  • updated_at, indexed_at

Äußerst nützliche optionale Felder:

  • Elemente (Fehlercodes, Produktnamen, Parameter)
  • Schlüsselwörter (manuell von den Autoren hinzugefügte Tags)
  • Vertraulichkeitsstufe (öffentlich, intern, vertraulich)
  • Einbettung (Vektordarstellung)

Häufige Fehler bei der Dokumentenindizierung und wie man sie vermeidet

  • Die Indizierung der gesamten Seite als ein einziger Datensatz führt zu ungenauen Verweisen und einer geringen Beantwortbarkeit. Lösung: In Abschnitte nach Überschriften und Absätzen unterteilen, Anker beibehalten
  • Wenn die Version nicht als filterbares Attribut gespeichert wird, führt dies zu unpassenden Ergebnissen. Lösung: Die Version für alle Dokumentabschnitte als Pflichtfeld festlegen und in der Benutzeroberfläche als Filteroption einrichten.
  • Wie im Abschnitt „Abruf“ erläutert, müssen Zugriffsbeschränkungen zum Zeitpunkt des Abrufs durchgesetzt werden. Für Dokumente bedeutet dies, dass jeder Datensatz mit „acl_roles“ oder entsprechenden Tags versehen sein muss, damit die Regel technisch durchsetzbar ist.

Code und API-Dokumentation

Die Dokumentation von Code und APIs erfordert einen anderen Ansatz als herkömmliche schriftliche Dokumentationen. Nutzer suchen anhand von Symbolnamen, Fehlercodes, Methodensignaturen, Parameternamen und sprachspezifischer Syntax. Wenn Ihre Indizierung diese Struktur nicht erfasst, wirken die Suchergebnisse uneinheitlich, selbst wenn der Inhalt technisch gesehen vorhanden ist.

Nach Symbolen gruppieren, nicht nach Seiten

  • API-Referenzen, nach Endpunkt oder Methode gegliedert
  • Bei SDK-Dokumentationen: Unterteilung nach Klasse, Methode, Funktion oder Modul
  • Behalte die Signatur mit der Beschreibung, den Beispielen und den Fehlern bei

Beispiele sollten sich in der Nähe des Symbols befinden

Beispiele sind oft genau das, was Nutzer am dringendsten benötigen. Wenn Sie Beispiele separat speichern, liefert die Suche möglicherweise falsche Ergebnisse. Speichern Sie Beispiele daher im selben Datensatz oder als untergeordnete Datensätze mit einer klaren Zuordnung zum übergeordneten Symbol.

Vermeiden Sie Doppelungen zwischen verschiedenen Versionen und Plattformen

In SDK-Dokumentationen werden Inhalte häufig versionsübergreifend wiederverwendet. Dies kann zu Duplikaten führen, die die Suche erschweren und die Kosten in die Höhe treiben.

Empfohlene Strategien:

  • Verwenden Sie kanonische Identifikatoren, die Plattform, Sprache und sdk_version enthalten
  • „Alias“-Felder speichern, wenn ein Symbol umbenannt oder in ein anderes Paket verschoben wird
  • Legen Sie eine klare Regel fest, welche Version als Standard gilt, wenn der Benutzerkontext fehlt.

Schema-Entwurf für Code und APIs

Das Schema soll drei Abfragetypen unterstützen:

  • Exakte Symbolsuche
  • „Wie mache ich …“-Fragen, die auf eine bestimmte Methode oder Anleitung verweisen sollten
  • Fehlerbasierte Debugging-Abfragen

Bei der genauen Suche spielen lexikalische Felder eine Rolle. Bei „Wie mache ich …“-Fragen spielen semantische Felder eine Rolle. Bei Fehlern spielen beide eine Rolle.

Empfohlene Felder

  • Bezeichnung und Typ:
    • symbol_id, symbol_type (Klasse, Methode, Funktion, Endpunkt, Fehler)
    • Sprache, Plattform
    • Paket, Modul, Namensraum
    • sdk_version oder api_version
  • Durchsuchbare Inhalte:
    • Unterschrift
    • Beschreibung
    • Parameter
    • Erträge
    • Beispiele
    • Fehler (Fehlercodes, Ausnahmen)
    • „siehe auch“-Links oder zugehörige Symbole
  • Einschränkungen und Benutzererfahrung:
    • Publikum
    • Version
    • doc_type (Referenz, Anleitung, Migration)
    • URL, Anker

Empfohlene Datensatzfelder für Code- und API-Dokumentationen

Empfohlene Mindestfelder:

  • symbol_id, symbol_type, Sprache, Paket, SDK-Version
  • Signatur, Beschreibung, Beispiele, Fehler
  • Plattform, Zielgruppe, Version
  • URL, Anker, aktualisiert am
  • Einbettung

Äußerst nützliche optionale Felder:

  • deprecated (bool) und replacement_symbol_id
  • eingeführt_in_Version, entfernt_in_Version
  • Tags (Authentifizierung, Zahlungen, Webhooks, Wiederholungsversuche)
  • Elemente (gemeinsame Konfigurationsschlüssel, Kopfzeilennamen)

Muster zur Vermeidung von Duplikaten

  • Kanonische Symbolidentität: Verwenden Sie eine Symbol-ID, die stabile Komponenten enthält, zum Beispiel java:com.acme.payments.Client#charge
  • Versionsabhängige Standardwerte: Falls der Benutzerkontext fehlt, wähle eine Standardversion aus, kennzeichne diese jedoch deutlich und stelle eine Versionsfacette bereit.
  • Metadaten zu veralteten Elementen: Wenn ein Symbol veraltet ist, sollte bei der Abfrage der Ersatz angezeigt werden und die Benutzer von alten Versionen abgehalten werden.

E-Commerce-Kataloge

Bei der E-Commerce-Suche gelten etwas andere Regeln. Filter müssen sofort reagieren, und Änderungen wie Preis oder Lagerbestand sollten unverzüglich angezeigt werden. Hinzu kommt, dass beim Ranking oft ein Gleichgewicht zwischen Relevanz und geschäftlichen Zielen gefunden werden muss. Die Aufteilung in Blöcke ist hier in der Regel nicht der entscheidende Faktor. Was die Leistung und Benutzerfreundlichkeit wirklich beeinflusst, sind ein übersichtliches Schema und gut normalisierte Attribute.

Für die Suche denormalisieren

Bei der Suche kommt es auf Geschwindigkeit und Einfachheit bei der Abfrage an. Denormalisieren Sie die Schlüsselfelder in die einzelnen Datensätze:

  • Produkttitel, Marke, Kategoriepfad
  • Variantenmerkmale wie Größe, Farbe, Material
  • Verfügbarkeits- und Preissignale
  • Region und Sprache

Wählen Sie aus, ob Sie Folgendes indizieren möchten:

  • Ein Datensatz pro Produkt, wobei Varianten entweder verschachtelt oder in flache Felder umgewandelt sind
  • Ein Datensatz pro Variante, sofern sich die Varianten hinsichtlich Preis oder Verfügbarkeit wesentlich unterscheiden

Verfügbarkeits- und Preisdaten

Verfügbarkeit und Preise müssen aus Gründen der Korrektheit filterbar sein:

  • „inStock“ sollte filterbar sein
  • Die Region sollte filterbar sein
  • Der Preis sollte filterbar und sortierbar sein.
  • „price_range“ sollte nach Facets sortiert werden können, in der Regel durch Einteilung in Gruppen

Verwenden Sie Teilaktualisierungen für Bestand und Preis, wenn Ihr SLO für die Frische sehr eng bemessen ist.

Facetten und Navigation

Facetten leiten die Erkundung:

  • Kategorie, Marke, Preisklasse
  • optional rating_bucket, discount_bucket
  • steuerbare Eigenschaften wie Farbe, Größe, Material

Empfohlene Datensatzfelder für den E-Commerce

Empfohlene Mindestfelder:

  • product_id, variant_id, title, description
  • Kategorie, Marke
  • Preis, Preisspanne, auf Lager
  • Region, Sprache
  • Beliebtheit (oder Engagement-Signal)
  • Optional: margin_bucket, falls Sie diesen Wert für das Ranking verwenden

Auswahl einer Einbettungsstrategie

Embeddings sind nur dann sinnvoll, wenn sie das Produkt verbessern. Ob sie tatsächlich helfen, hängt weniger vom Modell selbst ab, sondern vielmehr davon, wie Sie Inhalte indexieren und wie Sie die Ergebnisse auswerten.

Standard-Embeddings vs. domänenspezifische Modelle

Vorgefertigte Embeddings bilden eine solide Ausgangsbasis für allgemeine Sprache. Domänenspezifische Modelle sind hilfreich, wenn:

  • Sie verfügen über Fachvokabular (Medizin, Fintech, Recht)
  • Kurze Tokens haben eine bestimmte Bedeutung (Fehlercodes, Produkt-SKUs)
  • Sie benötigen eine leistungsstarke mehrsprachige oder sprachübergreifende Übereinstimmungssuche

Ein praktischer Ansatz besteht darin, mit einem Basis-Einbettungsmodell zu beginnen und dieses erst dann zu verfeinern, wenn Sie über aussagekräftige Bewertungsdaten und eine stabile Chunking-Struktur verfügen.

Dimensionierung und Kostenmanagement

Die Einbettungsdimension wirkt sich auf die Kosten für Speicherung und Abruf aus. So steuern Sie die Kosten:

  • Die Chunk-Größe und die Indexgranularität angemessen halten
  • Vermeidung der Einbettung von Feldern, die die Abrufbarkeit nicht verbessern
  • Festlegung von Vektorkandidaten und Beschränkung der Neuordnung auf den benötigten Datenverkehr
  • Messung des Grenznutzens von Modelländerungen vor deren Skalierung

Versionsverwaltung und Drift-Management

Embeddings ändern sich, wenn sich Inhalte oder Modelle ändern. Behandeln Sie Embeddings wie versionierte Artefakte:

  • Version des Einbettungsmodells in den Metadaten speichern
  • Einbettungen bei kontrollierten Neuaufbauten neu berechnen
  • Nutzen Sie die Evaluierung, um Verbesserungen vor der vollständigen Einführung zu validieren
  • Behalten Sie die Rollback-Möglichkeit während des im Lebenszyklus beschriebenen Wiederherstellungs- und Umstellungsablaufs bei.

Vektordatenbank-Muster im Produktivbetrieb

Die Vektorsuche ist erst dann wirklich produktionsreif, wenn sie genauso funktioniert wie der Rest Ihres Systems. Das bedeutet, dass sie über leistungsstarke Filterfunktionen, eine zuverlässige Durchsetzung von Zugriffskontrolllisten (ACLs), einen klaren Lebenszyklusplan für veraltete Inhalte und ein Schema verfügen muss, das weiterentwickelt werden kann, ohne dass es zu Störungen kommt.

Einheitliche Vektor- und Stichwortindizes

Der einfachste Weg, Überraschungen zu vermeiden, besteht darin, die Stichwortsuche und die Vektorsuche im selben Index zu führen. Das bedeutet, dass jeder Datensatz den zu durchsuchenden Text, die für die Filterung und Facettierung benötigten Attribute sowie die Vektor-Einbettung enthält. Wenn alles an einem Ort gespeichert ist, bleibt die Abfrage konsistent, und Ihre Einschränkungen – wie Mandant, Region und Zugriffskontrolle – werden jedes Mal auf dieselbe Weise angewendet.

Wenn Sie die lexikalische und die Vektor-Infrastruktur trennen, müssen Sie die gleichen, im Abschnitt „Abruf“ beschriebenen Berechtigungsregeln – insbesondere die Durchsetzung von ACLs und Mandantenbeschränkungen – auf beiden Pfaden beibehalten. Wenn Sie nicht an beiden Stellen die gleichen Regeln durchsetzen können, werden Sie letztendlich Ergebnisse zurückgeben, die ein Benutzer nicht sehen sollte, oder Ergebnisse, die zwar relevant erscheinen, für diese Anfrage jedoch ungültig sind.

Mandantenmodelle

Multi-Tenancy ist ein Problem der Ressourcenbeschränkung. Muster:

  • Einzelner Index mit „tenant_id“ und gesicherten API-Schlüsseln
  • Mehrere Indizes pro Mandant für eine strikte Isolierung
  • Hybridmodell: gemeinsamer öffentlicher Index plus mandantenspezifische Überlagerungen

Treffen Sie Ihre Entscheidung auf der Grundlage der Anforderungen an die Datenisolierung, der Zugriffsmuster und der einfachen Handhabung. Unabhängig vom Muster müssen die Tags „tenant_id“ und „role“ auf Datensatzebene vorhanden sein.

Schemaentwicklung und Resilienz

Ihr Schema wird sich weiterentwickeln, ganz gleich, wie „endgültig“ es heute noch erscheinen mag. Mit dem Wachstum des Produkts werden Sie neue Felder hinzufügen, Metadaten präzisieren, und früher oder später wird jemand nach einer neuen Facette oder einem neuen Filter fragen. Die Teams, die damit gut umgehen, sind diejenigen, die Veränderungen von vornherein einplanen, sodass Aktualisierungen vorhersehbar bleiben und nicht zu einer störenden Migration werden.

Eine praktische Vorgehensweise:

  • Beginnen Sie mit schrittweisen Änderungen. Fügen Sie neue Felder oder neue Facetten hinzu, ohne dabei das zu beeinträchtigen, was bereits funktioniert.
  • Füllen Sie die Daten schrittweise ein und aktivieren Sie anschließend die Funktion. Füllen Sie zunächst die neuen Felder für vorhandene Datensätze aus und aktivieren Sie dann die Filterung, Facettierung oder Rangfolge, die davon abhängt.
  • Führen Sie eine Validierung in einem Staging-Index durch und nehmen Sie die Umstellung atomar vor. Erstellen und testen Sie den neuen Index und leiten Sie den Datenverkehr dann in einem einzigen sauberen Schritt um, um ein nur teilweise migriertes Verhalten zu vermeiden.
  • Stellen Sie sicher, dass die App während des Migrationszeitraums kompatibel bleibt. Es kann sein, dass Ihre Anwendung eine Zeit lang sowohl mit alten als auch mit neuen Feldern arbeiten muss, bis die Umstellung abgeschlossen ist.

Suche in strukturierten und unstrukturierten Daten

Frühe vs. späte Fusion

Es gibt zwei gängige Methoden, um strukturierte und unstrukturierte Suche zu kombinieren. Bei der „Early Fusion“ werden alle Daten in einem Index und einem Abrufprozess zusammengefasst, wobei strukturierte Felder und Textsignale miteinander vermischt werden. Das erleichtert in der Regel die Verwaltung von Rankings und Einschränkungen, funktioniert jedoch nur dann gut, wenn Ihr Schema robust und konsistent ist. Bei der späten Fusion werden Daten aus mehreren Indizes wie Katalog, Dokumente und Tickets abgerufen und die Ergebnisse anschließend in der Anwendungsschicht zusammengeführt. Dies bietet Ihnen mehr Freiheit bei der unabhängigen Optimierung jeder einzelnen Quelle, erhöht jedoch auch die Anforderungen an die Eignungsprüfung und -messung, da die Einschränkungen über alle Pfade hinweg konsistent bleiben müssen. Im Allgemeinen eignet sich die frühe Fusion gut, wenn Ihr Schema stabil ist und die Einschränkungen gemeinsam genutzt werden, während die späte Fusion besser funktioniert, wenn die Quellen sehr unterschiedlich sind oder eine separate Optimierung erfordern.

Anwendungsfälle für Support und Wissensnutzung

Die Suche im Support sollte auf die Zeit bis zur Lösung optimiert werden:

  • Wissensinhalte in Blöcke unterteilen, um ein präzises Abrufen zu ermöglichen
  • Nach Produkt, Version und Benutzerrolle filtern
  • Bei RAG sind Quellenangaben erforderlich; bei unzureichender Abdeckung ist der Antrag abzulehnen
  • Verfolgen Sie Kennzahlen zur Abweichung und Klicks auf Zitate, um das Vertrauen zu messen

Die Suche im Support profitiert in hohem Maße von Anreicherungsmaßnahmen, wie beispielsweise der Entitätsextraktion für Fehlercodes und Konfigurationsschlüssel.

Kombination von Kataloginhalten und nutzergenerierten Inhalten

Die Zusammenführung von Katalog-Ergebnissen mit nutzergenerierten Inhalten erfordert Leitlinien:

  • Separate Moderationszustände als filterbare Felder
  • Verhindern Sie, dass minderwertige Nutzerinhalte die Suchergebnisse dominieren
  • Verwenden Sie Facetten, damit Benutzer den Inhaltstyp eingrenzen können
  • Ziehen Sie separate Indizes mit später Fusion in Betracht, wenn sich die Ranking-Ziele unterscheiden

Echtzeit- und Streaming-Suche

Bei der Echtzeit-Suche geht es weniger um eine einzelne Funktion als vielmehr um ein Betriebsmodell. Wenn sich Bestände, Preise, Produktdetails oder Dokumentationen ändern, erwarten Nutzer, dass die Suche diese Änderungen schnell und konsistent widerspiegelt. Um dies zu gewährleisten, benötigen Sie einen zuverlässigen Aktualisierungspfad von den Quellsystemen in den Index, klare und messbare Aktualisierungsziele sowie einen Wiederherstellungsplan, der greift, wenn Pipelines ins Stocken geraten oder fehlerhafte Daten durchrutschen.

Pipelines für die Streaming-Erfassung

Pipeline-Muster:

  • Quell-Webhooks oder CDC
  • Leichter Transformator
  • Teilaktualisierungen, gebündelt zur Steigerung des Durchsatzes
  • Rückstau bei Warteschlangen

Beispiel für eine teilweise Aktualisierungsnachricht

import { algoliasearch } from "algoliasearch";

const client = algoliasearch(
  process.env.ALGOLIA_APP_ID,
  process.env.ALGOLIA_ADMIN_API_KEY
);

const { taskID } = await client.partialUpdateObjects({
  indexName: "products",
  objects: [
    {
      objectID: "prod_123",
      inStock: true,
      inventory_count: 12,
      updated_at: 1738020000,
    },
    {
      objectID: "prod_456",
      inStock: false,
      inventory_count: 0,
      updated_at: 1738020000,
    },
  ],
  createIfNotExists: false,
});

await client.waitForTask({
  indexName: "products",
  taskID,
});

Frischeüberwachung und Rückgewinnung

Aktualität ist nichts, was man einfach voraussetzt, sondern etwas, das man misst und sichert. Wenn Nutzer erwarten, dass Änderungen bei Bestand, Preisen oder Dokumentationen umgehend angezeigt werden, benötigen Sie klare Signale, die Ihnen anzeigen, wann das System auf dem neuesten Stand ist und wann es den Nutzern veraltete Informationen liefert.

Beginnen Sie damit, eine kleine Auswahl an Kennzahlen zu erfassen, die Aufschluss über den Aktualisierungszustand geben. Messen Sie die Erfassungsverzögerung, also die Zeitspanne zwischen der Änderung an der Quelle und dem Zeitpunkt, zu dem der Index diese Änderung widerspiegelt. Verfolgen Sie die Fehlerquote bei Teilaktualisierungen, damit Sie erkennen, wann inkrementelle Aktualisierungen fehlschlagen, zu oft wiederholt werden oder verworfen werden. Beobachten Sie den Prozentsatz der Abfragen, die sich auf kürzlich aktualisierte Elemente beziehen, denn genau in diesen Sitzungen treten Aktualitätsprobleme als Erstes auf. Überwachen Sie im Dokumentationsbereich die Darstellung veralteter Inhalte, um festzustellen, wie oft Nutzer auf ältere oder veraltete Versionen statt auf die richtige Version gelangen.

Richten Sie Warnmeldungen für Verzögerungen bei der Datenaufnahme und zunehmende Aktualisierungsfehler ein. Dies sind in der Regel die ersten Warnzeichen, die meist schon auftreten, bevor das Problem in den Dashboards deutlich wird.

Betrachten Sie zudem die Wiederherstellung als Teil der Aktualität. Pipelines kommen manchmal zum Stillstand und fehlerhafte Daten schlüpfen gelegentlich durch, daher muss der Wiederherstellungspfad zuverlässig sein. Führen Sie wiederholbare Ereignisprotokolle oder einen Backfill-Prozess, damit Sie versäumte Aktualisierungen wiederherstellen können. Gestalten Sie Transformationen idempotent, damit bei Wiederholungen keine Duplikate entstehen oder Abweichungen auftreten. Richten Sie einen Workflow zum Neuaufbau ein, der eine atomare Umstellung unterstützt: Erstellen Sie einen neuen Index, validieren Sie ihn und leiten Sie den Datenverkehr dann in einem einzigen sauberen Schritt um. Führen Sie vor der Umstellung eine kleine Reihe wichtiger Prüfungen durch, um sicherzustellen, dass Einschränkungen, Relevanz und das Versionsverhalten korrekt sind.

Bewertung, Experimentieren und Messung

Relevanzbewertung für RAG bei der Dokumentensuche

Die Bewertung von RAG in einem Dokumentenportal erfordert mehr als nur Relevanz. Sie benötigen eine Möglichkeit, um zu entscheiden, wann die Generierung angemessen ist, sowie eine Methode, um zu messen, ob die Antworten fundiert bleiben. Ein „Answerability Score“ ist ein praktisches Kontrollinstrument, das Signale zur Suchqualität zu einer einzigen Entscheidung zusammenfasst. Nutzen Sie ihn, um die Generierung zum Zeitpunkt der Abfrage zu steuern, und verwenden Sie ihn als Bewertungskennzahl im Zeitverlauf.

Die Punktzahl anhand messbarer Komponenten bestimmen

Sie können für jede Abfrage einen Antwortbarkeitswert berechnen, indem Sie eine gewichtete Kombination verschiedener Signale verwenden, wie zum Beispiel:

  • Abdeckung: Wie viele der abgerufenen Chunks enthalten die Schlüsselelemente der Abfrage (Feature-Name, Fehlercode, API-Name)?
  • Versionsabgleich: Gibt an, ob die abgerufenen Chunks mit der angeforderten Version übereinstimmen oder mit der aus dem Benutzerkontext abgeleiteten Version.
  • Konsens: ob sich die obersten Chunks decken oder ob sie zwischen verschiedenen Versionen oder Dokumenttypen widersprechen
  • Spezifität: ob die gefundenen Textabschnitte konkrete Verfahren, Parameter oder erwartete Ergebnisse enthalten und nicht nur konzeptionelle Inhalte
  • Zitationsdichte: Wie viele Aussagen in der generierten Antwort lassen sich einer kleinen Menge von abgerufenen Textbausteinen zuordnen?

Halten Sie das Modell zunächst einfach. Beginnen Sie mit Schwellenwerten für die Top-N-Trefferwerte und dem Vorhandensein von Produkt- und Versionsmetadaten in den Top-Ergebnissen. Verfeinern Sie den Wert im Laufe der Datenerfassung, indem Sie ihn mit Ergebnissen wie der Reformulierungsrate, den Klicks auf Zitate und dem Feedback zur Nutzerzufriedenheit in Beziehung setzen.

Verwendung der Antwortbarkeit zur Steuerung der Generierung

Legen Sie einfache, eindeutige Regeln fest, wann eine Generierung zulässig ist. Bei hoher Beantwortbarkeit generieren Sie eine fundierte Antwort und fügen Sie Quellenangaben hinzu. Bei mittlerer Beantwortbarkeit generieren Sie nur dann, wenn die Anfrage nicht sensibel ist und die wichtigsten Quellen übereinstimmen; andernfalls geben Sie die besten Quellen zurück, anstatt zu raten. Bei geringer Beantwortbarkeit generieren Sie überhaupt nicht. Geben Sie die aussagekräftigsten Passagen zurück, die Sie haben, fügen Sie hilfreiche Filter wie Produkt und Version hinzu und protokollieren Sie die Anfrage als Lücke im Inhalt oder in den Metadaten. Diese Art der Filterung schützt das Vertrauen, indem sie selbstbewusste Antworten vermeidet, die nicht fundiert sind, und hält zudem Latenz und Kosten unter Kontrolle, da die Generierung nicht bei jeder Anfrage ausgelöst wird.

Checkliste zur Korrektheit von Quellenangaben

Die Korrektheit von Quellenangaben sollte ebenso streng bewertet werden wie die Richtigkeit. Eine Quellenangabe ist keine bloße Zierde. Sie ist der Beweis dafür, dass eine Antwort fundiert ist. Verwenden Sie die folgende Checkliste bei der Offline-Prüfung, in QA-Workflows und bei der automatisierten Stichprobenprüfung.

Eine Zitierung ist nur dann korrekt, wenn alle Bedingungen erfüllt sind.

  • Unterstützt die Behauptung: Der zitierte Textabschnitt untermauert direkt die konkrete Behauptung, auf die er sich bezieht.
  • Stimmt mit der Version überein: Der zitierte Ausschnitt stammt aus der richtigen Produktversion, oder in der Antwort wird der Versionsunterschied ausdrücklich angegeben.
  • Entspricht dem Geltungsbereich: Der zitierte Abschnitt bezieht sich auf dasselbe Merkmal, denselben Parameter oder denselben Fehlercode und nicht auf ein ähnlich benanntes Konzept.
  • Verweist auf die richtige Stelle: Die URL und der Anker führen zum genauen Abschnitt, nicht nur zum Anfang einer langen Seite.
  • Wird nicht durch eine Quelle mit höherer Priorität widerlegt: Im Falle eines Konflikts muss die Antwort den Konflikt aufzeigen und beide Seiten anführen, oder sie muss dem maßgeblichen Dokumenttyp den Vorzug geben.
  • Es dürfen keine erforderlichen Quellenangaben fehlen: Jeder Schritt, jede Konfiguration, jede Einschränkung oder jeder Warnhinweis in der Antwort muss mit einer Quellenangabe versehen sein.
  • Keine übermäßige Verwendung von Quellenangaben: Vermeiden Sie es, einer einzelnen Behauptung zahlreiche Quellenangaben hinzuzufügen, wenn eine einzige präzise Quelle ausreicht.

Praktisches Probenahmeverfahren

  • Beispielabfragen aus den Bereichen „Head“, „Torso“ und „Tail“. Dazu gehören Fehlercodes, Konfigurationsaufgaben und konzeptionelle Fragen.
  • Überprüfen Sie die generierten Antworten und kennzeichnen Sie jede Behauptung als „begründet“ oder „unbegründet“; kennzeichnen Sie anschließend jede Quellenangabe als „richtig“ oder „falsch“.
  • Erfassen Sie drei Kennzahlen: die Korrektheitsrate bei Zitaten, die Rate unbegründeter Behauptungen und die Rate nicht generierter Inhalte

Operative Leitplanken

  • Sollte die Quote der unbegründeten Behauptungen steigen, sollten die Schwellenwerte für die Rechenschaftspflicht verschärft und die Genauigkeit der Segmentierung erhöht werden.
  • Sollte die Korrektheit der Zitierweise nachlassen, sollten Sie die Gliederung und die Anker verbessern sowie überprüfen, ob die Versionsmetadaten vorhanden und filterbar sind.
  • Wenn die Rate der nicht generierten Inhalte steigt, sollte dies als Hinweis auf eine Inhaltslücke gewertet und der Verbesserung der Dokumentation oder der Korrektur von Metadaten Priorität eingeräumt werden.

Sicherheit, Datenschutz und Governance

Sicherheit ist kein zusätzliches Feature, das man nachträglich hinzufügt, sondern ein fester Bestandteil des Produkts. Bei Suchfunktionen gehen die größten Risiken in der Regel von uneinheitlich angewandten Einschränkungen und von Datenflüssen aus, die mit zunehmender Größe des Systems leicht aus den Augen verloren werden.

Zugangskontrolle und Mietverhältnisse

Stellen Sie die Einhaltung von Nutzungs- und Zugriffsberechtigungen mithilfe gesicherter API-Schlüssel und Filtern auf Datensatzebene sicher.

Ein praktisches Muster:

  • Speichere „tenant_id“ und „acl_roles“ in jedem Datensatz
  • Schlüssel mit Geltungsbereich generieren, die Mandantenfilter durchsetzen
  • Wenden Sie bei der Abfrage zusätzliche Filter für den Kontext an, wie beispielsweise Region und Version.

Datenschutz und Umgang mit personenbezogenen Daten

Kümmern Sie sich frühzeitig um den Datenschutz, nicht erst im Nachhinein. Entfernen Sie personenbezogene Daten bereits im Vorfeld, vermeiden Sie die Indizierung von Daten, die nicht abgerufen werden sollen, und stellen Sie sicher, dass Ihre Protokolle sicher sind, während Sie gleichzeitig die Anforderungen an die Nachprüfbarkeit erfüllen. Da Suchvorgänge häufig sensible Daten betreffen, sollten Sie dies als vorrangige Designvorgabe behandeln: Kennzeichnen Sie Datensätze, die möglicherweise personenbezogene Daten enthalten, trennen Sie suchbare von lediglich anzeigbaren Daten, vermeiden Sie die Einbettung von Rohdaten mit personenbezogenen Merkmalen in Vektoren und richten Sie Aufbewahrungsregeln sowie Löschworkflows ein, damit Sie die Compliance-Anforderungen erfüllen können.

Nutzungsüberwachung und Nachvollziehbarkeit

Es ist immer ratsam, auf Missbrauchsmuster zu achten, zuverlässige Prüfpfade zu führen und sicherzustellen, dass Ihr System für Compliance-Prüfungen gerüstet ist.

Governance erfordert Observability:

  • Abfragevolumina nach Mandant und Endpunkt verfolgen
  • Beobachten Sie ungewöhnliche Spitzenwerte, die auf Missbrauch hindeuten könnten
  • Änderungen an Ranking-Regeln, Synonymen und Schemata protokollieren
  • Dashboards für die P95-Latenz, Ergebnisse ohne Treffer und Aktualisierungsverzögerung pflegen

Abstimmung von Sicherheitskontrollen und p95-Latenzzielen

Sicherheitskontrollen befinden sich häufig im kritischsten Abschnitt des Anforderungspfads. Sichere Modell-Gateways, sofortige Filterung und Ausgabemoderation verringern das Risiko, können jedoch auch zusätzliche Netzwerk-Hops, Rechenzeit und Fehlerquellen verursachen, die die p95- und p99-Latenz unbemerkt verschlechtern. Behandeln Sie diese Kontrollen als Teil der Architektur und nicht als Zusatzkomponente.

Befolgen Sie die oben genannten Regeln für die Datenabfrage und -verwaltung, setzen Sie vor der Erweiterung der Kandidatenliste Einschränkungen hinsichtlich der Mandanten und Zugriffsrechte durch und steuern Sie anschließend die Latenz, indem Sie die Kandidatenmengen begrenzen und die Neuordnung sowie die Generierung als optionale, budgetierte Phasen behandeln.

Legen Sie abschließend Regeln für eine kontrollierte Einschränkung fest. Wenn die Anfrage das Budget überschreitet, überspringen Sie zunächst die Neugewichtung. Wenn sie das Budget weiterhin überschreitet, reduzieren Sie die Kontextlänge und begrenzen Sie die Anzahl der abgerufenen Passagen. Bei geringer Abdeckung oder schwachen Zitaten sollten Sie keine Vermutungen anstellen. Geben Sie die am besten bewerteten Ergebnisse mit Filtern und Vorschlägen zur Verfeinerung zurück. So bleibt das Kernsucherlebnis reaktionsschnell, während die Sicherheitsgarantien dort gewahrt bleiben, wo sie am wichtigsten sind.

Kosten- und Kapazitätsplanung

Die Kosten entstehen selten durch eine einzige große Entscheidung. Sie summieren sich durch alltägliche Entscheidungen, beispielsweise wie detailliert Ihre Datensätze sind, welche Facetten Sie aktivieren, wie groß Ihre Kandidatenpools werden, wie oft eine Neubewertung durchgeführt wird und wie häufig Sie die Generierung von Anrufen für RAG auslösen. Wenn Sie vorhersehbare Ausgaben wünschen, sollten Sie diese als Designentscheidungen betrachten und nicht als Last-Minute-Maßnahmen.

Indexgrößenbestimmung und Replikationsstrategie

Passen Sie die Größe des Indexes an das an, was Sie tatsächlich abrufen und anzeigen müssen. Kleinere, übersichtlichere Datensätze lassen sich einfacher verarbeiten und kostengünstiger skalieren. Replikate können hilfreich sein, jedoch nur, wenn sie einem klaren Produktzweck dienen. Setzen Sie sie ein, wenn Sie sie mit einem messbaren Ergebnis verknüpfen können, wie beispielsweise einer alternativen Ranking-Strategie oder einem ortsspezifischen Verhalten. Wenn ein Replikat keinen Einfluss auf eine von Ihnen verfolgte Kennzahl hat, lohnt es sich in der Regel nicht, es beizubehalten.

Abfrage- und RAG-Token-Budgets

Budgets sorgen dafür, dass Leistung und Ausgaben unter Kontrolle bleiben. Legen Sie feste Obergrenzen für die Bereiche fest, die im Laufe der Zeit dazu neigen, vom Kurs abzuweichen:

  • Budget für die Abrufverzögerung
  • Neubewertung des Latenzbudgets
  • Generierungsbudget, einschließlich maximaler Tokenanzahl und maximaler Kontextlänge
  • Cache-Ziele für häufige Abfragen und gängige Filterkombinationen

Diese Budgets erleichtern zudem Kompromisse. Verwenden Sie die im Abschnitt „Latenz“ definierten Degradierungsregeln, indem Sie beispielsweise zunächst auf eine Neureihung verzichten und den Kontext nur bei Bedarf reduzieren, anstatt ein Timeout auszulösen.

Caching und Abfrageoptimierung

Das Caching ist eine der zuverlässigsten Methoden, um p95 stabil zu halten, insbesondere bei wiederkehrenden Anfragen. Konzentrieren Sie sich darauf, häufig aufgerufene Abfragen mit gängigen Filterkombinationen zwischenzuspeichern und Facettenergebnisse für beliebte Kategorie- oder Navigationsseiten zu cachen. Achten Sie darauf, dass die Reihenfolge deterministisch und die Parameter konsistent sind, damit die Cache-Treffer tatsächlich erzielt werden, und bevorzugen Sie unter Last eine kontrollierte Leistungsminderung gegenüber Timeouts.

Grundlegende Prinzipien der Optimierung:

Diese Optimierungsregeln setzen die zuvor genannten Prinzipien zur Datensuche und Latenz in die Praxis um: frühzeitige Überprüfung der Eignung, Begrenzung der Kandidatenmengen, Vermeidung unkontrollierter Facetten sowie die Beschränkung von Neuordnung und Generierung auf Anfragen, bei denen sich der Aufwand rechtfertigt.

Leitfaden für Entscheidungsfindungen

Die folgenden Punkte konzentrieren sich auf eine 90-tägige Einführungsphase, die vom Pilotprojekt über die Auswertung bis hin zur Stärkung der Governance und der Skalierung in Zusammenarbeit mit der CDC reicht.

Tage 0 bis 30: Aufbau der Basis für die Datenabfrage

  • Modellindexdatensätze mit stabilen Metadaten zu objectID, Mandant und ACL, bei Bedarf mit Versionsfeldern sowie mit Attributen, die für Facetten geeignet sind
  • Konfigurieren Sie den ersten Algolia-Index und aktivieren Sie die grundlegenden Suchfunktionen, auf die sich der Artikel stützt: durchsuchbare Attribute, Filter und Facetten
  • Laden Sie einen Anfangskorpus, überprüfen Sie die Qualität der Chunking-Aufteilung für Dokumentinhalte und stellen Sie sicher, dass die festgelegten Einschränkungen zum Zeitpunkt der Abfrage tatsächlich durchgesetzt werden können.
  • Legen Sie im Dashboard zunächst die Relevanzsteuerungen fest, von denen Sie bereits wissen, dass Sie sie benötigen, wie z. B. benutzerdefinierte Rangfolge, Synonyme und eine kleine Auswahl an Regeln für offensichtlich besonders wertvolle Suchabsichten.

Tag 31 bis 60: Relevanz optimieren und Nutzen nachweisen

  • Erstellen Sie „Golden Queries“ für die Suche im Einzelhandel oder in Dokumenten und messen Sie anschließend den Erfolg der ersten Abfrage, die Neuformulierung, die Quote der Abfragen ohne Ergebnisse sowie die Beantwortbarkeit, sofern RAG aktiviert ist.
  • Nutzen Sie Algolia Analytics und Insights, um das Suchverhalten, das Klickverhalten und die Konversionssignale zu analysieren
  • Führen Sie A/B-Tests für wesentliche Änderungen durch, wie z. B. Aktualisierungen der Rangfolge, Änderungen an Synonymen oder die Aktivierung der dynamischen Neurangfolge für den Zielindex.
  • Halten Sie den Abrufpfad begrenzt: Überprüfen Sie das Verhalten der Facetten, die Größe der Kandidatenmenge und ob die Neugewichtung die Ergebnisse so stark verbessert, dass sich der damit verbundene Latenzaufwand rechtfertigt.

Tag 61 bis 75: Governance und Zugriffskontrolle in Harden stärken

  • Wechseln Sie von einem umfassenden Zugriff auf die Umgebung zu einer bereichsbezogenen Bereitstellung mithilfe sicherer API-Schlüssel und Filter auf Datensatzebene.
  • Stellen Sie sicher, dass die bisherigen Zulassungsregeln – insbesondere die Einschränkungen hinsichtlich Mieter, ACL, Region und Version – im Produktionsverkehr konsistent bleiben.
  • Fügen Sie vorgelagerte Datenschutzkontrollen, Regeln für eine sichere Protokollierung sowie Dashboards für p95-Latenz, Null-Ergebnisse, Aktualisierungsverzögerungen und verdächtige Nutzungsspitzen hinzu
  • Für RAG-Erfahrungen: Festlegung von Grundregeln, Schwellenwerten für die Verantwortlichkeit, Zitiervorschriften und Verhaltensregeln zur Vermeidung der Generierung

Tag 76 bis 90: Frische bewahren und sicher freisetzen

  • Ersetzen Sie die Massenaktualisierung bei Bedarf durch CDC- oder Webhook-gesteuerte Aktualisierungen
  • Verwenden Sie Teilaktualisierungen für sich schnell ändernde Felder wie Bestandsdaten, Preise oder Angaben zur Frische.
  • Einrichtung einer wiederholbaren Wiederherstellung bei fehlgeschlagenen Updates und eines Wiederherstellungspfads, der Indexkopier- oder -verschiebungsoperationen für atomare Umstellungen und Rollbacks nutzt
  • Überprüfen Sie vor jeder Umstellung die Übereinstimmung der Einstellungen, das Filterverhalten, das Ranking-Verhalten, die Annahmen zur Kontinuität der Analysen sowie die wichtigsten Nutzerpfade, die für Sie von größter Bedeutung sind.

Fazit

Die Architektur bestimmt Relevanz, Latenz und Kosten. Der hybride Abruf ist der Standard in der Produktion für die meisten modernen Sucherlebnisse, und die Datenmodellierung legt die Obergrenze für die Qualität fest. Systeme, die Ergebnisse messen, Governance durchsetzen und diszipliniert iterieren, schneiden besser ab als Stacks, die ausschließlich auf Neuheit optimiert sind.

Sicherheit ist eine gemeinsame Verantwortung innerhalb einer Organisation und unter deren Partnern. Eine strenge Zugriffskontrolle, sorgfältige Datenhygiene und kontinuierliche Überwachung verringern das Risiko, funktionieren jedoch nur dann, wenn die Plattform und das Betriebsmodell dies in großem Maßstab praktikabel machen. Die Wahl des richtigen Partners ist entscheidend, da sie Einfluss darauf hat, wie schnell Teams sicher implementieren, die Relevanz zuverlässig optimieren und die Leistung auch bei steigender Nutzung stabil halten können.


Fordern Sieunter algolia.com/demorequest eine Demo der KI-Suchlösung von Algolia anoder erfahren Sie mehr unteralgolia.com/blog/ai/

Jeden in die Lage versetzen, hervorragende Such- und Entdeckungsfunktionen zu entwickeln