RAG-Pipeline aufbauen
Retrieval-Augmented Generation (RAG) kombiniert ein großes Sprachmodell mit Ihrer eigenen Dokumentbasis. Statt sich auf das Trainingswissen des Modells zu verlassen, holt die Pipeline relevante Passagen aus Ihren Quellen und reicht sie als Kontext an das LLM weiter. So bleiben Antworten aktuell, nachvollziehbar und auf Ihre Daten bezogen.
Eine vollständige RAG-Pipeline besteht aus sechs Schritten. Die noris “LLM as a Service”-Plattform übernimmt dabei Embedding, Reranking und die finale Generierung. Speicherung und Ähnlichkeitssuche erfolgen in der Vektor-Datenbank Ihrer Wahl.
Schritt 1: Dokumente embedden
Abschnitt betitelt „Schritt 1: Dokumente embedden“Zunächst wandeln Sie jeden Dokumentenabschnitt in einen dichten Vektor um. Dazu dient der Endpunkt POST /v1/embeddings. Senden Sie den reinen Text je Abschnitt im Feld input und wählen Sie als model das Embedding-Modell der Plattform.
curl -X POST https://ai.noris.de/v1/embeddings \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_API_KEY" \ -d '{ "model": "vllm/release/harrier-oss-v1-0.6b", "input": "Der noris Cloud Stack bietet eine vollständige Kubernetes-Plattform für Unternehmen." }'Die Antwort enthält unter data[0].embedding einen Vektor (Float-Liste) fester Dimensionalität. Speichern Sie für jeden Abschnitt zusätzlich Metadaten wie Quelle, Kapitel oder Datum.
Schritt 2: In Vektor-DB speichern
Abschnitt betitelt „Schritt 2: In Vektor-DB speichern“Die Speicherung der Vektoren erfolgt in der Vektor-Datenbank Ihrer Wahl, beispielsweise pgvector, Weaviate, Qdrant, Milvus oder Pinecone. Die noris-Plattform bindet keine bestimmte Datenbank vor. Legen Sie pro Datensatz mindestens den Embedding-Vektor, den Originaltext und die Metadaten ab. Wählen Sie als Distanzmetrik das Cosine-Ähnlichkeitsmaß, da die Embedding-Modelle der Plattform darauf optimiert sind.
Schritt 3: Query embedden
Abschnitt betitelt „Schritt 3: Query embedden“Wenn eine Frage gestellt wird, muss deren Text in denselben Vektorraum transformiert werden wie die Dokumente. Verwenden Sie exakt denselben Endpunkt und dasselbe Modell wie in Schritt 1, nur der Inhalt von input unterscheidet sich.
curl -X POST https://ai.noris.de/v1/embeddings \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_API_KEY" \ -d '{ "model": "vllm/release/harrier-oss-v1-0.6b", "input": "Welche Kubernetes-Plattform bietet noris an?" }'Entnehmen Sie den Vektor aus data[0].embedding und übergeben Sie ihn an Ihre Vektor-Datenbank.
Schritt 4: Kandidaten abrufen
Abschnitt betitelt „Schritt 4: Kandidaten abrufen“Führen Sie in Ihrer Vektor-Datenbank eine Ähnlichkeitssuche durch, die die top_k nächstgelegenen Abschnitte zur Nutzeranfrage liefert. Typische Werte für top_k liegen zwischen 20 und 50, bewusst größer gewählt als die endgültige Anzahl, weil im nächsten Schritt ein Reranker die wirklich relevanten Treffer aussortiert. Je nach Datenbank können Sie zusätzliche Filter (z.B. Sprache, Datum, Zugriffsrechte) anwenden, um die Kandidatenmenge einzuschränken.
Schritt 5: Reranking
Abschnitt betitelt „Schritt 5: Reranking“Embedding-basierte Suche ist schnell, aber nicht immer präzise: Sie misst grobe semantische Nähe, versteht jedoch Feinheiten wie Negationen oder Relevanz-Hierarchien nur bedingt. Ein Cross-Encoder-Reranker bewertet jedes Paar aus Query und Kandidat gemeinsam und sortiert die Liste neu. Der Endpunkt POST /v1/rerank nimmt die Anfrage, die Liste der Kandidaten-Texte und die gewünschte Anzahl top_n entgegen.
curl -X POST https://ai.noris.de/v1/rerank \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_API_KEY" \ -d '{ "model": "vllm/release/bge-reranker-v2-m3", "query": "Welche Kubernetes-Plattform bietet noris an?", "documents": [ "Der noris Cloud Stack bietet eine vollständige Kubernetes-Plattform für Unternehmen.", "noris betreibt Rechenzentren in Nürnberg und Frankfurt.", "Kubernetes ist ein Orchestrierungs-System für Container.", "Mit dem Managed Kubernetes von noris skalieren Teams Workloads automatisch." ], "top_n": 2 }'Die Antwort enthält unter results die Indizes der sortierten Dokumente samt Relevance-Score. Behalten Sie nur die top_n besten Treffer, diese landen anschließend im Kontext für das LLM.
Schritt 6: LLM-Anfrage mit Kontext
Abschnitt betitelt „Schritt 6: LLM-Anfrage mit Kontext“Nun folgt die eigentliche Generierung. Übergeben Sie die gerankten Abschnitte als Kontext innerhalb der System-Nachricht an den /chat/completions-Endpunkt. Weisen Sie das Modell an, ausschließlich auf Basis des Kontexts zu antworten und fehlendes Wissen offen zuzugeben.
curl -X POST https://ai.noris.de/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_API_KEY" \ -d '{ "model": "vllm/release/gpt-oss-120b", "messages": [ { "role": "system", "content": "Du beantwortest Fragen ausschließlich auf Basis des folgenden Kontexts. Ist die Information nicht enthalten, sag: \"Keine Angabe im Kontext.\"\n\nKontext:\n1) Der noris Cloud Stack bietet eine vollständige Kubernetes-Plattform für Unternehmen.\n2) Mit dem Managed Kubernetes von noris skalieren Teams Workloads automatisch." }, {"role": "user", "content": "Welche Kubernetes-Plattform bietet noris an?"} ] }'Modell-Empfehlungen
Abschnitt betitelt „Modell-Empfehlungen“| Schritt | Empfohlenes Modell | Zweck |
|---|---|---|
| 1 & 3: Embedding | vllm/release/harrier-oss-v1-0.6b | Kompakt, schnell, RAG-optimiert. |
| 5: Reranking (multilingual) | vllm/release/bge-reranker-v2-m3 | Hohe Präzision, viele Sprachen. |
| 5: Reranking (hoher Durchsatz) | vllm/release/jina-reranker-v2-base-multilingual | 0,3B Parameter, effizient bei großen Mengen. |
| 6: Generierung | vllm/release/gpt-oss-120b | Starkes Reasoning für präzise Antworten. |
| 6: Generierung (lange Kontexte) | vllm/release/glm-5-2 | Bis 1M Tokens Kontext, ideal bei umfangreichen Kandidaten. |
Weitere Hinweise zur Auswahl finden Sie unter Modell-Auswahl.
