Extract each page into colocated _components/ sections to bring page.tsx files from 1008/891/769 LOC down to 57/23/21 LOC, well within the 500-line hard cap. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
101 lines
6.5 KiB
TypeScript
101 lines
6.5 KiB
TypeScript
import { CodeBlock } from '@/components/DevPortalLayout'
|
|
|
|
export function RagKeySharingSection() {
|
|
return (
|
|
<>
|
|
<h2 id="rag-pipeline">8. RAG-Pipeline: KI-Verarbeitung mit Kundenkontext</h2>
|
|
<p>
|
|
Die KI nutzt die vom Kunden hochgeladenen Referenzdokumente als Wissensbasis.
|
|
Dieser Prozess heisst <strong>RAG (Retrieval Augmented Generation)</strong>.
|
|
</p>
|
|
|
|
<h3>8.1 Indexierung der Referenzdokumente</h3>
|
|
<CodeBlock language="text" filename="Indexierung: Vom Upload zum durchsuchbaren Referenzdokument">
|
|
{`Referenzdokument (verschluesselt auf Server)
|
|
|
|
|
v
|
|
┌────────────────────────────────────┐
|
|
│ 1. Passphrase-Verifikation │ ← SDK sendet Schluessel-Hash
|
|
└──────────┬─────────────────────────┘
|
|
v
|
|
┌────────────────────────────────────┐
|
|
│ 2. Entschluesselung │ ← Temporaer im Arbeitsspeicher
|
|
└──────────┬─────────────────────────┘
|
|
v
|
|
┌────────────────────────────────────┐
|
|
│ 3. Text-Extraktion │ ← PDF → Klartext
|
|
└──────────┬─────────────────────────┘
|
|
v
|
|
┌────────────────────────────────────┐
|
|
│ 4. Chunking │ ← ~1.000-Zeichen-Abschnitte
|
|
└──────────┬─────────────────────────┘
|
|
v
|
|
┌────────────────────────────────────┐
|
|
│ 5. Embedding │ ← Text → 1.536 Zahlen
|
|
└──────────┬─────────────────────────┘
|
|
v
|
|
┌────────────────────────────────────┐
|
|
│ 6. Re-Encryption │ ← Jeder Chunk wird erneut verschluesselt
|
|
└──────────┬─────────────────────────┘
|
|
v
|
|
┌────────────────────────────────────┐
|
|
│ 7. Qdrant-Indexierung │ ← Vektor + verschluesselter Chunk
|
|
│ tenant_id: "firma-alpha-001" │ mit Tenant-Filter gespeichert
|
|
│ training_allowed: false │
|
|
└────────────────────────────────────┘`}
|
|
</CodeBlock>
|
|
|
|
<h3>8.2 Wie die KI eine Anfrage bearbeitet (RAG-Query)</h3>
|
|
<ol>
|
|
<li><strong>Anfrage formulieren:</strong> Das SDK sendet eine Suchanfrage mit dem zu verarbeitenden Dokument.</li>
|
|
<li><strong>Semantische Suche:</strong> Die Anfrage wird in einen Vektor umgewandelt und gegen die Referenz-Vektoren in Qdrant gesucht -- <em>nur im Namespace des Kunden</em>.</li>
|
|
<li><strong>Entschluesselung:</strong> Die gefundenen Chunks werden mit der Passphrase des Kunden entschluesselt.</li>
|
|
<li><strong>KI-Antwort:</strong> Die entschluesselten Referenzpassagen werden als Kontext an die KI uebergeben.</li>
|
|
</ol>
|
|
|
|
<h2 id="key-sharing">9. Key Sharing: Zusammenarbeit ermoeglichen</h2>
|
|
<p>
|
|
Das Key-Sharing-System ermoeglicht es dem Eigentuemer, seinen Namespace sicher mit
|
|
anderen zu teilen (z.B. fuer Vier-Augen-Prinzip, Qualitaetskontrolle oder externe Audits).
|
|
</p>
|
|
|
|
<h3>9.1 Einladungs-Workflow</h3>
|
|
<CodeBlock language="text" filename="Key Sharing: Sicheres Teilen zwischen Bearbeitern">
|
|
{`Eigentuemer Server Eingeladener
|
|
│ │ │
|
|
│ 1. Einladung senden │ │
|
|
│─────────────────────────────────▶ │
|
|
│ │ 2. Einladung erstellt │
|
|
│ │ (14 Tage gueltig) │
|
|
│ │ 3. Benachrichtigung ──────▶│
|
|
│ │ 4. Einladung annehmen
|
|
│ │◀─────────────────────────────│
|
|
│ │ 5. Key-Share erstellt │
|
|
│ │ 6. Eingeladener kann ──────▶│
|
|
│ │ Daten im Namespace │
|
|
│ │ abfragen │
|
|
│ 7. Zugriff widerrufen │ │
|
|
│─────────────────────────────────▶ Share deaktiviert │`}
|
|
</CodeBlock>
|
|
|
|
<h3>9.2 Rollen beim Key-Sharing</h3>
|
|
<div className="not-prose my-4 overflow-x-auto">
|
|
<table className="min-w-full divide-y divide-gray-200 text-sm">
|
|
<thead className="bg-gray-50">
|
|
<tr>
|
|
<th className="px-4 py-3 text-left font-medium text-gray-500">Rolle</th>
|
|
<th className="px-4 py-3 text-left font-medium text-gray-500">Typischer Nutzer</th>
|
|
<th className="px-4 py-3 text-left font-medium text-gray-500">Rechte</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody className="divide-y divide-gray-200">
|
|
<tr><td className="px-4 py-3 font-medium">Owner</td><td className="px-4 py-3">Projektverantwortlicher</td><td className="px-4 py-3">Vollzugriff, kann teilen & widerrufen</td></tr>
|
|
<tr><td className="px-4 py-3 font-medium">Reviewer</td><td className="px-4 py-3">Qualitaetssicherung</td><td className="px-4 py-3">Lesen, RAG-Queries, eigene Anmerkungen</td></tr>
|
|
<tr><td className="px-4 py-3 font-medium">Auditor</td><td className="px-4 py-3">Externer Pruefer</td><td className="px-4 py-3">Nur Lesen (Aufsichtsfunktion)</td></tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</>
|
|
)
|
|
}
|