RAG API
Semantische Suche im Legal Corpus (DSGVO, AI Act, NIS2)
Uebersicht
Die RAG (Retrieval-Augmented Generation) API ermoeglicht semantische Suche im Compliance-Korpus. Der Korpus enthaelt:
- DSGVO (Datenschutz-Grundverordnung)
- AI Act (EU KI-Verordnung)
- NIS2 (Netzwerk- und Informationssicherheit)
- ePrivacy-Verordnung
- Bundesdatenschutzgesetz (BDSG)
Embedding-Modell
Die Suche verwendet BGE-M3 Embeddings fuer praezise semantische Aehnlichkeit. Die Vektoren werden in Qdrant gespeichert.
GET /rag/search
Durchsucht den Legal Corpus semantisch.
Query-Parameter
| Parameter | Type | Required | Description |
|---|---|---|---|
q | string | Yes | Die Suchanfrage (z.B. "Einwilligung personenbezogene Daten") |
top_k | number | No | Anzahl der Ergebnisse (default: 5, max: 20) |
corpus | string | No | Einschraenkung auf bestimmten Corpus: dsgvo, ai_act, nis2, all (default: all) |
min_score | number | No | Minimaler Relevanz-Score 0-1 (default: 0.5) |
Request
cURL
curl -X GET "https://api.breakpilot.io/sdk/v1/rag/search?q=Einwilligung%20DSGVO&top_k=5" \
-H "Authorization: Bearer YOUR_API_KEY"Response (200 OK)
Response
{
"success": true,
"data": {
"query": "Einwilligung DSGVO",
"results": [
{
"id": "dsgvo-art-7",
"title": "Art. 7 DSGVO - Bedingungen fuer die Einwilligung",
"content": "Beruht die Verarbeitung auf einer Einwilligung, muss der Verantwortliche nachweisen koennen, dass die betroffene Person in die Verarbeitung ihrer personenbezogenen Daten eingewilligt hat...",
"corpus": "dsgvo",
"article": "Art. 7",
"score": 0.92,
"metadata": {
"chapter": "II",
"section": "Einwilligung",
"url": "https://dsgvo-gesetz.de/art-7-dsgvo/"
}
},
{
"id": "dsgvo-art-6-1-a",
"title": "Art. 6 Abs. 1 lit. a DSGVO - Einwilligung als Rechtsgrundlage",
"content": "Die Verarbeitung ist nur rechtmaessig, wenn mindestens eine der nachstehenden Bedingungen erfuellt ist: a) Die betroffene Person hat ihre Einwilligung...",
"corpus": "dsgvo",
"article": "Art. 6",
"score": 0.88,
"metadata": {
"chapter": "II",
"section": "Rechtmaessigkeit",
"url": "https://dsgvo-gesetz.de/art-6-dsgvo/"
}
}
],
"total_results": 2,
"search_time_ms": 45
},
"meta": {
"corpus_version": "2026-01",
"embedding_model": "bge-m3"
}
}GET /rag/status
Gibt Status-Informationen ueber das RAG-System zurueck.
Request
cURL
curl -X GET "https://api.breakpilot.io/sdk/v1/rag/status" \
-H "Authorization: Bearer YOUR_API_KEY"Response (200 OK)
Response
{
"success": true,
"data": {
"status": "healthy",
"corpus": {
"dsgvo": {
"documents": 99,
"chunks": 1250,
"last_updated": "2026-01-15T00:00:00Z"
},
"ai_act": {
"documents": 89,
"chunks": 980,
"last_updated": "2026-01-20T00:00:00Z"
},
"nis2": {
"documents": 46,
"chunks": 520,
"last_updated": "2026-01-10T00:00:00Z"
}
},
"embedding_service": {
"status": "online",
"model": "bge-m3",
"dimension": 1024
},
"vector_db": {
"type": "qdrant",
"collections": 3,
"total_vectors": 2750
}
}
}SDK Integration
Verwenden Sie den SDK-Client fuer einfache RAG-Suche:
rag-search.ts
import { getSDKBackendClient, isLegalQuery } from '@breakpilot/compliance-sdk'
const client = getSDKBackendClient()
// Pruefen ob die Query rechtliche Inhalte betrifft
if (isLegalQuery('Was ist eine Einwilligung?')) {
// RAG-Suche durchfuehren
const results = await client.search('Einwilligung DSGVO', 5)
results.forEach(result => {
console.log(`[${result.corpus}] ${result.title}`)
console.log(`Score: ${result.score}`)
console.log(`URL: ${result.metadata.url}`)
console.log('---')
})
}Keyword-Erkennung
Die Funktion isLegalQuery erkennt automatisch rechtliche Anfragen:
keyword-detection.ts
import { isLegalQuery } from '@breakpilot/compliance-sdk'
// Gibt true zurueck fuer:
isLegalQuery('DSGVO Art. 5') // true - Artikel-Referenz
isLegalQuery('Einwilligung') // true - DSGVO-Begriff
isLegalQuery('AI Act Hochrisiko') // true - AI Act Begriff
isLegalQuery('NIS2 Richtlinie') // true - NIS2 Referenz
isLegalQuery('personenbezogene Daten') // true - Datenschutz-Begriff
// Gibt false zurueck fuer:
isLegalQuery('Wie ist das Wetter?') // false - Keine rechtliche Anfrage
isLegalQuery('Programmiere mir X') // false - Technische AnfrageBeispiel: Command Bar Integration
command-bar-rag.tsx
import { useState } from 'react'
import { getSDKBackendClient, isLegalQuery } from '@breakpilot/compliance-sdk'
function CommandBarSearch({ query }: { query: string }) {
const [results, setResults] = useState([])
const [loading, setLoading] = useState(false)
useEffect(() => {
if (query.length > 3 && isLegalQuery(query)) {
setLoading(true)
const client = getSDKBackendClient()
client.search(query, 3).then(data => {
setResults(data)
setLoading(false)
})
}
}, [query])
if (!isLegalQuery(query)) return null
return (
<div className="rag-results">
{loading ? (
<p>Suche im Legal Corpus...</p>
) : (
results.map(result => (
<div key={result.id} className="result-card">
<h4>{result.title}</h4>
<p>{result.content.slice(0, 200)}...</p>
<a href={result.metadata.url} target="_blank">
Volltext lesen
</a>
</div>
))
)}
</div>
)
}Rate Limits
Die RAG-Suche ist auf 100 Anfragen/Minute (Professional) bzw. unbegrenzt (Enterprise) limitiert. Implementieren Sie Client-Side Debouncing fuer Echtzeit-Suche.