Giriş ve Kurumsal Yapay Zekada Halüsinasyon Problemi
Büyük Dil Modelleri (Large Language Models - LLM), parametrik hafızalarında tuttukları devasa genel bilgi birikimi ile dil anlama ve üretme konusunda çığır açmıştır. Ancak, kurumsal ve akademik ortamlarda saf LLM kullanımının iki temel ölümcül kısıtı bulunmaktadır:
1. Bilgi Güncelliği ve Statik Bilgi Sınırı: Model eğitimi tamamlandığı anda dondurulur; güncel verilere veya kurum içi özel dokümanlara erişemez.
2. Stokastik Halüsinasyon (Stochastic Hallucination): Olasılıksal dil üretim mekanizması nedeniyle model, bilgi sahibi olmadığı konularda yüksek özgüvenle tamamen uydurma ve yanlış veriler üretebilir.
Bu sorunun çözümü, Patrick Lewis ve ekibinin (2020) Retrieval-Augmented Generation (RAG) makalesiyle literatüre kazandırdığı dinamik harici bilgi alma mimarisidir. RAG, parametrik hafıza ile parametrik olmayan (harici veritabanı) bilgiyi birleştirerek, modelin yanıt vermeden önce en alakalı doküman parçalarını (chunks) anlamsal olarak arayıp bulmasını ve bağlama (context) enjekte etmesini sağlar.

1. RAG Mimarisinin Matematiksel ve Mühendislik Temelleri
Klasik bir RAG hattı (pipeline) temelde iki ana aşamadan oluşur: Doküman İndeksleme (Offline Ingestion) ve Sorgu Yanıtlama (Online Retrieval & Generation).
1.1 Metinlerin Vektörel Uzaya İzdüşümü (Dense Embeddings)
Herhangi bir $D$ dokümanı, küçük metin bloklarına ($c_i \in C$) bölünür. Ardından bir embedding modeli ($E: \text{Metin} \to \mathbb{R}^d$) kullanılarak $d$-boyutlu yoğun (dense) bir vektöre dönüştürülür:
$$v_i = E(c_i) \quad \text{burada } v_i \in \mathbb{R}^{1536} \text{ veya } \mathbb{R}^{768}$$
Kullanıcı bir $q$ sorgusu girdiğinde, aynı embedding modeli sorguyu da $v_q = E(q)$ vektörüne izdüşürür.
1.2 Kosinüs Benzerliği ve Semantik Yakınlık (Cosine Similarity)
İki metin arasındaki anlamsal benzerlik, yüksek boyutlu uzaydaki vektörlerin açısal farkı (Kosinüs Benzerliği) ile hesaplanır:
$$\text{Sim}(v_q, v_i) = \frac{v_q \cdot v_i}{\|v_q\| \|v_i\|} = \frac{\sum_{k=1}^d v_{q,k} v_{i,k}}{\sqrt{\sum_{k=1}^d v_{q,k}^2} \sqrt{\sum_{k=1}^d v_{i,k}^2}}$$
Değer $+1.0$ ise metinler anlamsal olarak tamamen özdeş, $0.0$ ise ortogonal (ilgisiz), $-1.0$ ise zıt anlamlıdır.
2. Vektör Veritabanı İndeksleme Algoritmaları: HNSW ve IVF-PQ
Milyonlarca doküman içeren büyük ölçekli sistemlerde, her sorguda tüm vektörlerle tek tek kosinüs mesafesi hesaplamak (Brute-Force / Flat search, $\mathcal{O}(N)$) gerçek zamanlı sistemler için kabul edilemez gecikmelere (latency) yol açar. Bu nedenle Approximate Nearest Neighbor (ANN) algoritmaları kullanılır.
2.1 Hierarchical Navigable Small World (HNSW)
HNSW Algoritması, verileri çok katmanlı bir graf yapısında depolar. Üst katmanlarda uzun mesafeli atlamalar yapılırken, en alt katmana inildikçe hassas komşuluk araması gerçekleştirilir. Zaman karmaşıklığı $\mathcal{O}(\log N)$ mertebesindedir.
[Katman 2] Node A -----------------------------> Node Z
| |
[Katman 1] Node A -----------> Node M ---------> Node Z
| | |
[Katman 0] Node A -> Node B -> Node M -> Node P -> Node Z (Tüm Veri)
2.2 Ürün Kuantizasyonu (Product Quantization - PQ)
Vektörlerin bellekte kapladığı alanı (RAM) %90'a kadar azaltmak için 1536 boyutlu 32-bit float vektörler alt uzaylara bölünerek kodlanır (quantization).
3. İleri Düzey RAG Stratejileri (Advanced RAG Pipelines)
Temel Naive RAG, basit aramalarda başarılı olsa da karmaşık kurumsal senaryolarda yetersiz kalır. İleri düzey RAG teknikleri şunlardır:
3.1 Yeniden Sıralama (Reranking with Cross-Encoders)
İlk aşamada (Bi-Encoder) hızlıca ilk 50 aday doküman seçilir. Ardından yüksek doğruluklu bir Cross-Encoder Reranker modeli (örneğin BGE-Reranker veya Cohere Rerank), sorgu ve dokümanı birlikte değerlendirerek en alakalı 5 parçayı belirler.3.2 Hibrit Arama (Hybrid Search: Dense + Sparse / BM25)
Yalnızca vektör araması teknik terimlerde veya ürün kodlarında (örn.RFC-7519, Error-500-12) başarısız olabilir. Hibrit arama, BM25 (Kelime bazlı ters indeks) ve Vektör Benzerliği sonuçlarını Reciprocal Rank Fusion (RRF) formülüyle harmanlar:
$$\text{RRF\_Score}(d) = \sum_{m \in M} \frac{1}{k + r_m(d)}$$
4. PHP 8.4 ve Python ile Örnek RAG İstemcisi İmplementasyonu
Aşağıdaki örnekte, kurumsal sistemimizde gelen bir kullanıcı sorgusunun Qdrant/Milvus vektör veritabanından bağlam çekerek LLM promptuna nasıl dönüştürüldüğü gösterilmektedir:
<?php
declare(strict_types=1);
namespace Bilgiseli\Modules\AI\RAG;
class VectorSearchClient
{
private string $vectorDbEndpoint;
private string $apiKey;
public function __construct(string $endpoint, string $apiKey)
{
$this->vectorDbEndpoint = $endpoint;
$this->apiKey = $apiKey;
}
/**
* Kullanıcı sorgusu için en alakalı K adet doküman parçasını getirir.
* @return array<int, array{id: string, score: float, content: string, metadata: array}>
*/
public function searchSimilarChunks(array $queryVector, int $limit = 5): array
{
$payload = json_encode([
'vector' => $queryVector,
'limit' => $limit,
'with_payload' => true,
'score_threshold' => 0.75, // Yalnızca yüksek semantik alaka
], JSON_THROW_ON_ERROR);
$ch = curl_init("{$this->vectorDbEndpoint}/collections/kb_articles/points/search");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'api-key: ' . $this->apiKey,
],
CURLOPT_TIMEOUT => 3,
]);
$response = curl_exec($ch);
curl_close($ch);
$decoded = json_decode((string)$response, true);
return $decoded['result'] ?? [];
}
/**
* Bağlam (Context) ile zenginleştirilmiş nihai LLM promptunu oluşturur.
*/
public function buildAugmentedPrompt(string $userQuery, array $retrievedChunks): string
{
$contextText = "";
foreach ($retrievedChunks as $idx => $chunk) {
$contextText .= sprintf("\n[Kaynak #%d]: %s\n", $idx + 1, $chunk['payload']['text'] ?? '');
}
return <<<PROMPT
Aşağıda verilen doğrulanmış kaynak bilgilerini kullanarak kullanıcının sorusunu akademik ve teknik bir dille yanıtlayın.
Kaynakta yer almayan hiçbir bilgiyi tahmin etmeyin veya uydurmayın.
=== DOĞRULANMIŞ HARİCİ BİLGİ KAYNAKLARI ===
{$contextText}
==========================================
Kullanıcı Sorusu: {$userQuery}
Teknik Yanıt:
PROMPT;
}
}
5. RAG Sistemlerinin Başarı Değerlendirmesi: RAG Triad Metrikleri
Bir RAG mimarisinin güvenilirliği, TruLens ve RAGAS standartlarında tanımlanan üç ana eksende ölçülür:
| Metrik | Açıklama | Hedef Eşik Değeri |
|---|---|---|
| Context Relevance | Çekilen parçaların kullanıcının sorusuyla doğrudan ilgisi | $> 0.85$ |
| Groundedness (Faithfulness) | Üretilen yanıtın yalnızca çekilen bağlama sadık kalma oranı | $> 0.95$ |
| Answer Relevance | Yanıtın sorulan soruya ne kadar eksiksiz cevap verdiği | $> 0.90$ |
6. Güvenlik, Hata Ayıklama ve Entegrasyon Araçları
Geliştirdiğiniz RAG ve yapay zeka sistemlerinde JSON API iletişimlerini doğrulamak için sitemizdeki JSON Formatter & Validator aracından faydalanabilir, API isteklerindeki JWT kimlik doğrulamalarını test etmek için ise JWT Decoder aracını kullanabilirsiniz. Ayrıca yazılım katmanlarında temiz mimari kurmak için Clean Architecture ve DDD Rehberi makalemizi incelemenizi öneririz.
Sonuç ve Gelecek Perspektifi
RAG, yapay zekayı kapalı bir tahmin kutusu olmaktan çıkarıp, doğrulanabilir, şeffaf ve kurumsal hafızaya tam entegre bir mühendislik bileşeni haline getirmektedir. Gelecek nesil Agentic RAG (Ajan Destekli RAG) sistemleri, çok adımlı akıl yürütme (multi-step reasoning) ile birleştirilerek tam otonom kurumsal asistanların temelini oluşturmaktadır.