Skip to content

Embeddings ve Vector Search: RAG Temelleri

Metni vektöre dönüştürme, semantic search, RAG mimarisi. Custom GPT Knowledge altında bunlar var.

Şükrü Yusuf KAYA
10 min read
Advanced
Embeddings ve Vector Search: RAG Temelleri

RAG = Retrieval-Augmented Generation#

Sorun: Büyük modellerin bilgi sınırı var (training cutoff). Çözüm: soruyu cevaplamadan önce ilgili dokümanları getir, modele bağlam olarak ver.
3 adım:
  1. Embed: metni 1536-boyutlu vektöre dönüştür
  2. Search: kullanıcı sorusunu da embed et, en yakın K vektörü bul (cosine similarity)
  3. Generate: bulunan dokümanları + soruyu modele ver, yanıt üret
RAG mimari diyagramı: embed → search → generate.
RAG akışı.
javascript
import OpenAI from "openai";
const openai = new OpenAI();
 
// 1. Doküman parçala (chunking)
const docs = [
"Müşteri destek tonu: empati öncelikli, çözüm odaklı.",
"İlk yanıt 4 saat içinde verilir (iş günü).",
"SLA ihlali halinde otomatik ücret iadesi yapılır.",
];
 
// 2. Her chunk için embedding üret
const embeddings = await Promise.all(
docs.map(async (text) => {
const res = await openai.embeddings.create({
model: "text-embedding-3-large",
input: text,
});
return { text, vector: res.data[0].embedding };
})
);
 
// 3. Bunları vector DB'ye kaydet (Pinecone, Weaviate, pgvector, Qdrant)
// (basitlik için: in-memory)
 
// 4. Sorgu zamanı: kullanıcı sorusunu embed et
const query = "Yanıt süresi nedir?";
const queryEmbedding = (await openai.embeddings.create({
model: "text-embedding-3-large",
input: query,
})).data[0].embedding;
 
// 5. Cosine similarity ile en yakın chunk'ı bul
function cosineSim(a, b) {
const dot = a.reduce((s, v, i) => s + v * b[i], 0);
const magA = Math.sqrt(a.reduce((s, v) => s + v * v, 0));
const magB = Math.sqrt(b.reduce((s, v) => s + v * v, 0));
return dot / (magA * magB);
}
 
const ranked = embeddings
.map(e => ({ ...e, score: cosineSim(queryEmbedding, e.vector) }))
.sort((a, b) => b.score - a.score);
 
const topK = ranked.slice(0, 2);
console.log("En ilgili chunk'lar:", topK.map(t => t.text));
 
// 6. Modele bağlam ver
const finalAnswer = await openai.chat.completions.create({
model: "gpt-5",
messages: [
{ role: "system", content: "Bağlamdaki bilgilerle cevapla." },
{ role: "user", content:
`Bağlam:\n${topK.map(t => "- " + t.text).join("\n")}\n\nSoru: ${query}`
}
]
});
Embeddings + cosine similarity + RAG — minimal implementasyon.
💡 Üretim RAG için ek katmanlar
(1) Vector DB (Pinecone, Weaviate, pgvector). (2) Hybrid search: vektör + keyword (BM25). (3) Reranker: top-50 → reranker → top-5. (4) Caching: aynı sorgu için cache. (5) Citation: yanıtla beraber kaynak doküman ID'leri. Modül 11.7 - Modül 13 arasında bunları detaylı işliyoruz.

Özet#

✓ RAG = embed + search + generate ✓ Embedding model: text-embedding-3-large (3072 boyut) ✓ Vector DB üretimde şart ✓ Custom GPT Knowledge = arka planda RAG
Sıradaki ders: Token Ekonomisi — maliyet optimizasyonu.

Yorumlar & Soru-Cevap

(0)
Yorum yazmak için giriş yap.
Yorumlar yükleniyor...

Related Content

Connected pillar topics

Pillar topics this article maps to