RAG boru hatları genellikle açık bir kasa gibi çalışır; denetlenmemiş istemler ve doğrulanmamış çıktılar yoluyla hassas verileri ortaya çıkarır. Katmanlı güvenlik olmadan, bu sistemler kredi kartı numaralarını günlüklerde sızdırabilir, talimat geçersiz kılmalarına izin verebilir veya kaynak gösterilmeyen, otoriter tonlu halüsinasyonlar üretebilir. Çözüm sadece güvenlik açıklarını yamamak değil—her katmanın diğerlerinin kaçırdığı şeyleri yakaladığı, güvenliğe öncelik veren bir mimari inşa etmektir.
İki Aşamalı Savunma: Girdi ve Çıktı Korumaları
Her RAG iş akışı iki kritik kontrol noktasına indirgenebilir: sistemin kötü niyetli manipülasyondan korunmasını sağlayan girdi korumaları ve kullanıcıları yanlış veya zararlı yanıtlardan koruyan çıktı korumaları. Bu aşamalar, ikili bir güvenlik duvarı oluşturur. Hiçbir kontrol noktası opsiyonel değildir ve bunlardan biri atlandığında boru hattı önemli risklere maruz kalır.
Girdi Korumaları: Temeli Koruma
İlk beş katman, veri alma, yeniden sıralama veya sentezleme başlamadan önce devreye girer. Amaçları, kötü verilerin LLM veya gömme modeline ulaşmasını engellemektir.
#### Katman 1: İleti Boyutu ve Yapısı Doğrulaması
En temel ancak etkili koruma, boyut ve biçim doğrulamasıdır. İçeriğin ayrıştırılmasından önce sistem, karakter sayısı, satır yoğunluğu veya bayt boyutu gibi makul sınırları aşan iletileri reddetmelidir.
def validate_length(message: str, max_chars: int = 10_000) -> bool:
if not message or not message.strip():
raise ValueError("Boş ileti")
# UTF-8 bayt uzunluğu kontrolü, çok baytlı karakter istismarlarını yakalar
if len(message.encode("utf-8")) > max_chars * 4:
raise ValueError("İleti çok büyük")
if len(message) > max_chars:
raise ValueError(f"{max_chars} karakter sınırını aşıyor")
# Aşırı satır araları yoluyla talimat yığılmasını engelle
if message.count("\n") > 50:
raise ValueError("Çok fazla satır")
return TrueBu katman milisaniyeden kısa sürede çalışır ve bellek tükenmesini tetiklemek için 10.000 emoji göndermek gibi Unicode karakterlerini istismar eden saldırıları durdurur.
#### Katman 2: Kişisel Verilerin Taranması ve Gizlenmesi
Kredi kartı numaraları, e-posta adresleri veya sosyal güvenlik numaraları gibi hassas veriler, denetlenmeden boru hattına girmemelidir. Microsoft'un Presidio kütüphanesi, regex, NLP ve bağlam puanlamasını birleştirerek kişisel verileri dinamik olarak algılar ve işler.
from presidio_analyzer import AnalyzerEngine
from presidio_anonymizer import AnonymizerEngine
from presidio_anonymizer.entities import OperatorConfig
analyzer = AnalyzerEngine()
anonymizer = AnonymizerEngine()
def scan_pii(text: str) -> dict:
results = analyzer.analyze(
text=text,
language="en",
entities=["PHONE_NUMBER", "EMAIL_ADDRESS", "CREDIT_CARD", "US_SSN", "PERSON", "LOCATION", "IP_ADDRESS"],
score_threshold=0.5
)
if not results:
return {"has_pii": False, "text": text}
redacted = anonymizer.anonymize(
text=text,
analyzer_results=results,
operators={
"CREDIT_CARD": OperatorConfig("replace", {"new_value": "<KREDİ_KARTI>"}),
"US_SSN": OperatorConfig("replace", {"new_value": "<SSN>"}),
"EMAIL_ADDRESS": OperatorConfig("replace", {"new_value": "<E-POSTA>"}),
"PERSON": OperatorConfig("replace", {"new_value": "<KİŞİ>"}),
}
)
return {
"has_pii": True,
"text": redacted.text,
"entities": results
}Sistem, kredi kartları, SSN'ler veya pasaportlar içeren iletileri engelleyerek, e-postaları, telefon numaralarını ve isimleri gizleyerek ve düşük güvenilirlikli algılamaları inceleme için kaydederek katı bir karar matrisi uygular.
#### Katman 3: Zehirli ve Konu Dışı İstekler için İçerik Filtrelemesi
Tüm zararlı içerikler kötü niyetli olmaktan kaynaklanmaz. Bazı istemler basitçe konu dışı, yasa dışı veya etik dışıdır. Hafif bir regex tabanlı filtre,
Yapay zeka özeti
Learn how to build a 10-layer security system for RAG pipelines that blocks prompt injection, PII leaks, and hallucinations while protecting users and compliance.