{"id":43020,"date":"2026-07-02T21:11:31","date_gmt":"2026-07-02T18:11:31","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/practical-rag-part-1-the-simplest-rag-that-actually-works-en-temel-rag-sistemi-nasil-kurulur\/"},"modified":"2026-07-02T21:12:02","modified_gmt":"2026-07-02T18:12:02","slug":"practical-rag-part-1-the-simplest-rag-that-actually-works-en-temel-rag-sistemi-nasil-kurulur","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/practical-rag-part-1-the-simplest-rag-that-actually-works-en-temel-rag-sistemi-nasil-kurulur\/","title":{"rendered":"Practical RAG, Part 1: The Simplest RAG That Actually Works &#8211; En Temel RAG Sistemi Nas\u0131l Kurulur?"},"content":{"rendered":"<h2>Practical RAG, Part 1: The Simplest RAG That Actually Works &#8211; En Temel RAG Sistemi Nas\u0131l Kurulur?<\/h2>\n<p>B\u00fcy\u00fck Dil Modelleri (LLM&#8217;ler) son y\u0131llarda yapay zeka d\u00fcnyas\u0131nda devrim yaratt\u0131, ancak bu g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131n da kendine \u00f6zg\u00fc s\u0131n\u0131rlamalar\u0131 bulunuyor. Peki, LLM&#8217;lerin g\u00fcncel bilgilere eri\u015fimini art\u0131rarak, &#8220;hal\u00fcsinasyon&#8221; olarak bilinen yanl\u0131\u015f veya uydurma cevap verme e\u011filimini nas\u0131l azaltabiliriz? \u0130\u015fte bu noktada RAG (Retrieval Augmented Generation &#8211; Eri\u015fim Art\u0131r\u0131lm\u0131\u015f \u00dcretim) devreye giriyor. Bu makalede, en temel RAG sistemini ad\u0131m ad\u0131m nas\u0131l kuraca\u011f\u0131n\u0131z\u0131, arkas\u0131ndaki mant\u0131\u011f\u0131 ve ger\u00e7ek d\u00fcnya uygulamalar\u0131n\u0131 ke\u015ffedece\u011fiz. Amac\u0131m\u0131z, karma\u015f\u0131k yapay zeka sistemlerini herkesin anlayabilece\u011fi ve uygulayabilece\u011fi basit bir \u00e7er\u00e7eveye oturtmakt\u0131r. E\u011fer \u015firketinizin i\u00e7 dok\u00fcmanlar\u0131na dayal\u0131 ak\u0131ll\u0131 bir sohbet robotu geli\u015ftirmek, m\u00fc\u015fteri sorular\u0131na daha do\u011fru yan\u0131tlar vermek veya sadece LLM&#8217;lerin yeteneklerini geni\u015fletmek istiyorsan\u0131z, do\u011fru yerdesiniz. Bu k\u0131lavuz, RAG&#8217;\u0131n temel prensiplerini ve pratik uygulamas\u0131n\u0131 s\u0131f\u0131rdan \u00f6\u011frenmeniz i\u00e7in tasarland\u0131.<\/p>\n<h2>RAG (Retrieval Augmented Generation) Nedir ve Neden G\u00fcn\u00fcm\u00fcz Yapay Zeka Uygulamalar\u0131 \u0130\u00e7in Vazge\u00e7ilmezdir?<\/h2>\n<p>B\u00fcy\u00fck Dil Modelleri (LLM&#8217;ler), muazzam boyutlardaki metin verileri \u00fczerinde e\u011fitildikleri i\u00e7in geni\u015f bir genel bilgiye sahiptirler ve insan benzeri metinler \u00fcretebilirler. Ancak, bu modellerin temel bir k\u0131s\u0131tlamas\u0131 vard\u0131r: e\u011fitim verilerinin kesildi\u011fi tarihten sonraki olaylar hakk\u0131nda bilgi sahibi de\u011fildirler. Ayr\u0131ca, e\u011fitim verilerinde bulunmayan veya belirli bir domain&#8217;e (alan) \u00f6zg\u00fc, \u00f6zel bilgiler konusunda yetersiz kalabilirler. En \u00f6nemlisi, bazen kendilerine sorulan sorulara, ellerinde yeterli bilgi olmamas\u0131na ra\u011fmen &#8220;hal\u00fcsinasyon&#8221; ad\u0131 verilen uydurma, yanl\u0131\u015f veya mant\u0131ks\u0131z cevaplar verme e\u011filimi g\u00f6sterirler. Bu durum, LLM&#8217;leri kritik i\u015f uygulamalar\u0131nda kullan\u0131rken g\u00fcvenilirlik sorunlar\u0131na yol a\u00e7abilir.<\/p>\n<p>\u0130\u015fte tam da bu noktada RAG (Retrieval Augmented Generation) sistemi devreye girer ve bu k\u0131s\u0131tlamalar\u0131 a\u015fmak i\u00e7in g\u00fc\u00e7l\u00fc bir \u00e7\u00f6z\u00fcm sunar. RAG, bir B\u00fcy\u00fck Dil Modelini do\u011frudan kendi bilgi taban\u0131yla s\u0131n\u0131rlamak yerine, harici ve g\u00fcncel bir bilgi kayna\u011f\u0131na &#8220;eri\u015ferek&#8221; (retrieval) ve bu bilgiyi LLM&#8217;in cevap \u00fcretme s\u00fcrecine &#8220;ekleyerek&#8221; (augmentation) \u00e7al\u0131\u015f\u0131r. Basit\u00e7e ifade etmek gerekirse, bir kullan\u0131c\u0131 bir soru sordu\u011funda, RAG sistemi \u00f6ncelikle bu soruyla alakal\u0131 en uygun bilgileri kendi \u00f6zel bilgi taban\u0131ndan (\u00f6rne\u011fin, \u015firket dok\u00fcmanlar\u0131, web sayfalar\u0131, veritabanlar\u0131) bulur. Daha sonra, bulunan bu alakal\u0131 bilgileri, kullan\u0131c\u0131n\u0131n orijinal sorusuyla birlikte B\u00fcy\u00fck Dil Modeline sunar. LLM, bu ek ba\u011flam\u0131 kullanarak \u00e7ok daha do\u011fru, g\u00fcncel ve ilgili bir cevap \u00fcretir. Bu yakla\u015f\u0131m, LLM&#8217;lerin yaln\u0131zca genel bilgilerini kullanmak yerine, belirli bir konuya veya g\u00fcncel duruma odaklanmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>RAG&#8217;\u0131n g\u00fcn\u00fcm\u00fcz yapay zeka uygulamalar\u0131 i\u00e7in vazge\u00e7ilmez olmas\u0131n\u0131n birka\u00e7 \u00f6nemli nedeni bulunmaktad\u0131r. Birincisi, <strong>do\u011fruluk ve g\u00fcvenilirli\u011fi art\u0131r\u0131r<\/strong>. LLM&#8217;lerin hal\u00fcsinasyon yapma olas\u0131l\u0131\u011f\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde azalt\u0131r \u00e7\u00fcnk\u00fc model art\u0131k cevab\u0131n\u0131 uydurmak yerine, kendisine sa\u011flanan somut verilere dayanarak \u00fcretir. \u0130kincisi, <strong>g\u00fcncel bilgiye eri\u015fim sa\u011flar<\/strong>. LLM&#8217;leri s\u00fcrekli olarak yeniden e\u011fitmek maliyetli ve zaman al\u0131c\u0131d\u0131r. RAG ile, bilgi taban\u0131n\u0131z\u0131 d\u00fczenli olarak g\u00fcncelleyerek LLM&#8217;in her zaman en yeni bilgilere sahip olmas\u0131n\u0131 sa\u011flayabilirsiniz. \u00dc\u00e7\u00fcnc\u00fcs\u00fc, <strong>\u015feffafl\u0131k ve a\u00e7\u0131klanabilirlik sunar<\/strong>. RAG tabanl\u0131 bir sistem, cevab\u0131n\u0131 hangi kaynaklardan ald\u0131\u011f\u0131n\u0131 g\u00f6sterebilir, bu da kullan\u0131c\u0131lar\u0131n bilginin do\u011frulu\u011funu teyit etmesine olanak tan\u0131r. D\u00f6rd\u00fcnc\u00fcs\u00fc, <strong>maliyet etkin bir \u00e7\u00f6z\u00fcmd\u00fcr<\/strong>. \u00d6zel bir LLM e\u011fitmek yerine, mevcut genel bir LLM&#8217;i RAG ile g\u00fc\u00e7lendirmek \u00e7ok daha ekonomiktir. Son olarak, <strong>esneklik ve \u00f6zelle\u015ftirilebilirlik<\/strong> sunar. Herhangi bir domain&#8217;e veya veri tipine uyarlanabilir, bu da onu \u00e7ok \u00e7e\u015fitli end\u00fcstriler ve kullan\u0131m senaryolar\u0131 i\u00e7in ideal k\u0131lar. Bu nedenlerle, RAG, yapay zeka destekli asistanlardan kurumsal arama motorlar\u0131na, e\u011fitim platformlar\u0131ndan m\u00fc\u015fteri hizmetleri botlar\u0131na kadar bir\u00e7ok alanda temel bir teknoloji haline gelmi\u015ftir.<\/p>\n<h2>Basit Bir RAG Sisteminin Temel Ta\u015flar\u0131 Nelerdir? Mimariyi Anlamak<\/h2>\n<p>En basit RAG sistemi bile, belirli g\u00f6revleri yerine getiren birka\u00e7 ana bile\u015fenden olu\u015fur. Bu bile\u015fenlerin her biri, sistemin genel ba\u015far\u0131s\u0131 i\u00e7in kritik bir rol oynar ve birbirleriyle uyum i\u00e7inde \u00e7al\u0131\u015f\u0131rlar. Bir RAG sisteminin mimarisini anlamak, onu etkin bir \u015fekilde uygulaman\u0131n ve optimize etmenin ilk ad\u0131m\u0131d\u0131r. \u015eimdi, bu temel ta\u015flar\u0131 ve her birinin i\u015flevini detayl\u0131ca inceleyelim.<\/p>\n<h3>Bilgi Taban\u0131 Olu\u015fturma: Verilerinizi Nas\u0131l Haz\u0131rlars\u0131n\u0131z?<\/h3>\n<p>RAG sisteminin kalbinde, B\u00fcy\u00fck Dil Modelinin eri\u015fece\u011fi bilgi taban\u0131 (knowledge base) yer al\u0131r. Bu bilgi taban\u0131, sistemin cevaplayabilece\u011fi t\u00fcm \u00f6zel veya g\u00fcncel bilgileri i\u00e7erir. Bu bilgiler, \u015firketinizin i\u00e7 dok\u00fcmanlar\u0131 (PDF&#8217;ler, Word dosyalar\u0131, e-postalar), web sitelerindeki makaleler, veritaban\u0131 kay\u0131tlar\u0131, e-kitaplar veya herhangi bir metin tabanl\u0131 veri olabilir. \u00d6nemli olan, bu verilerin yap\u0131land\u0131r\u0131lm\u0131\u015f veya yap\u0131land\u0131r\u0131lmam\u0131\u015f olabilmesidir. Ancak, LLM&#8217;lerin verimli bir \u015fekilde kullanabilmesi i\u00e7in bu b\u00fcy\u00fck bilgi y\u0131\u011f\u0131n\u0131n\u0131n \u00f6n i\u015flenmesi gerekir. Bu \u00f6n i\u015fleme s\u00fcrecinin en kritik ad\u0131mlar\u0131ndan biri &#8220;b\u00f6l\u00fcmlendirme&#8221; (chunking) i\u015flemidir. B\u00f6l\u00fcmlendirme, b\u00fcy\u00fck dok\u00fcmanlar\u0131 daha k\u00fc\u00e7\u00fck, y\u00f6netilebilir ve anlaml\u0131 par\u00e7alara ay\u0131rma i\u015flemidir. Neden mi? \u00c7\u00fcnk\u00fc LLM&#8217;lerin girdi olarak alabilece\u011fi metin uzunlu\u011fu s\u0131n\u0131rl\u0131d\u0131r (token limitleri). Ayr\u0131ca, \u00e7ok b\u00fcy\u00fck bir metin par\u00e7as\u0131n\u0131n tamam\u0131n\u0131 bir sorguya dahil etmek, hem gereksiz bilgi y\u00fck\u00fcne yol a\u00e7ar hem de LLM&#8217;in en alakal\u0131 bilgiyi bulmas\u0131n\u0131 zorla\u015ft\u0131r\u0131r. Bu nedenle, dok\u00fcmanlar\u0131 genellikle belirli bir kelime veya karakter say\u0131s\u0131na g\u00f6re veya semantik (anlamsal) s\u0131n\u0131rlara g\u00f6re b\u00f6l\u00fcmlere ay\u0131r\u0131r\u0131z. \u00d6rne\u011fin, bir PDF dosyas\u0131n\u0131 paragraflara veya her biri 200-500 kelime i\u00e7eren par\u00e7alara ay\u0131rabiliriz. Bu par\u00e7alar, daha sonra vekt\u00f6r veritaban\u0131nda depolanacak ve sorgu an\u0131nda eri\u015filecek birimler olacakt\u0131r.<\/p>\n<h3>G\u00f6mme (Embedding) Modelleri: Metni Say\u0131lara D\u00f6n\u00fc\u015ft\u00fcrmek<\/h3>\n<p>LLM&#8217;ler ve vekt\u00f6r veritabanlar\u0131, metinleri do\u011frudan i\u015fleyemezler; onlar say\u0131larla \u00e7al\u0131\u015f\u0131r. \u0130\u015fte burada &#8220;g\u00f6mme modelleri&#8221; (embedding models) devreye girer. G\u00f6mme modelleri, metin par\u00e7alar\u0131n\u0131 (yani az \u00f6nce bahsetti\u011fimiz &#8220;chunk&#8221;lar\u0131) y\u00fcksek boyutlu vekt\u00f6rlere (say\u0131 dizilerine) d\u00f6n\u00fc\u015ft\u00fcren yapay zeka modelleridir. Bu vekt\u00f6rler, metnin anlamsal i\u00e7eri\u011fini matematiksel olarak temsil eder. Yani, anlamsal olarak birbirine benzeyen metinler, vekt\u00f6r uzay\u0131nda birbirine yak\u0131n konumlarda yer al\u0131r. \u00d6rne\u011fin, &#8220;kedi&#8221; ve &#8220;fare&#8221; kelimelerinin vekt\u00f6rleri, &#8220;ta\u015f&#8221; kelimesinin vekt\u00f6r\u00fcnden daha yak\u0131n olacakt\u0131r \u00e7\u00fcnk\u00fc anlamsal olarak hayvanlard\u0131r. Ayn\u0131 \u015fekilde, bir c\u00fcmlenin veya bir dok\u00fcman par\u00e7as\u0131n\u0131n vekt\u00f6r\u00fc, o par\u00e7an\u0131n ana fikrini ve ba\u011flam\u0131n\u0131 yans\u0131t\u0131r. G\u00f6mme modelleri, RAG sisteminin &#8220;eri\u015fim&#8221; (retrieval) a\u015famas\u0131nda kilit rol oynar \u00e7\u00fcnk\u00fc kullan\u0131c\u0131 sorgusunu da bir vekt\u00f6re d\u00f6n\u00fc\u015ft\u00fcr\u00fcr ve bu vekt\u00f6r\u00fc bilgi taban\u0131ndaki di\u011fer metin par\u00e7alar\u0131n\u0131n vekt\u00f6rleriyle kar\u015f\u0131la\u015ft\u0131rarak en alakal\u0131 olanlar\u0131 bulur. OpenAI&#8217;nin <code>text-embedding-ada-002<\/code> modeli veya a\u00e7\u0131k kaynakl\u0131 Sentence Transformers modelleri gibi bir\u00e7ok se\u00e7enek mevcuttur.<\/p>\n<h3>Vekt\u00f6r Veritabanlar\u0131: Bilgiyi H\u0131zl\u0131ca Eri\u015filebilir K\u0131lmak<\/h3>\n<p>Metin par\u00e7alar\u0131n\u0131 vekt\u00f6rlere d\u00f6n\u00fc\u015ft\u00fcrd\u00fckten sonra, bu vekt\u00f6rleri ve onlara kar\u015f\u0131l\u0131k gelen orijinal metin par\u00e7alar\u0131n\u0131 verimli bir \u015fekilde depolamam\u0131z ve sorgulayabilmemiz gerekir. Geleneksel veritabanlar\u0131 bu t\u00fcr anlamsal aramalar i\u00e7in optimize edilmemi\u015ftir. \u0130\u015fte bu y\u00fczden &#8220;vekt\u00f6r veritabanlar\u0131&#8221; (vector databases) kullan\u0131l\u0131r. Vekt\u00f6r veritabanlar\u0131, y\u00fcksek boyutlu vekt\u00f6rleri depolamak ve aralar\u0131ndaki benzerlikleri (genellikle kosin\u00fcs benzerli\u011fi gibi metriklerle) h\u0131zl\u0131 bir \u015fekilde hesaplamak i\u00e7in \u00f6zel olarak tasarlanm\u0131\u015ft\u0131r. Bir kullan\u0131c\u0131 sorgusu geldi\u011finde, bu sorgu da bir vekt\u00f6re d\u00f6n\u00fc\u015ft\u00fcr\u00fcl\u00fcr ve vekt\u00f6r veritaban\u0131nda bu sorgu vekt\u00f6r\u00fcne en yak\u0131n olan (yani anlamsal olarak en benzer) metin par\u00e7alar\u0131n\u0131n vekt\u00f6rleri bulunur. Bu sayede, saniyeler i\u00e7inde binlerce veya milyonlarca dok\u00fcman aras\u0131ndan en alakal\u0131 bilgiler \u00e7ekilebilir. Pop\u00fcler vekt\u00f6r veritabanlar\u0131 aras\u0131nda ChromaDB, FAISS (Facebook AI Similarity Search), Pinecone, Weaviate ve Qdrant gibi \u00e7\u00f6z\u00fcmler bulunmaktad\u0131r. Bu veritabanlar\u0131, RAG sisteminin \u00f6l\u00e7eklenebilirli\u011fi ve performans\u0131 i\u00e7in hayati \u00f6neme sahiptir.<\/p>\n<h3>B\u00fcy\u00fck Dil Modeli (LLM): Cevaplar\u0131 \u00dcreten Beyin<\/h3>\n<p>Son olarak, RAG sisteminin &#8220;\u00fcretim&#8221; (generation) a\u015famas\u0131ndan sorumlu olan B\u00fcy\u00fck Dil Modeli (LLM) bulunur. Bu, OpenAI&#8217;nin GPT-3.5 veya GPT-4&#8217;\u00fc, Google&#8217;\u0131n Gemini&#8217;si, Meta&#8217;n\u0131n Llama&#8217;s\u0131 veya \u00e7e\u015fitli a\u00e7\u0131k kaynakl\u0131 modeller olabilir. LLM&#8217;in g\u00f6revi, kullan\u0131c\u0131 sorgusunu ve vekt\u00f6r veritaban\u0131ndan al\u0131nan alakal\u0131 metin par\u00e7alar\u0131n\u0131 (ba\u011flam olarak) birle\u015ftirerek do\u011fal ve tutarl\u0131 bir cevap \u00fcretmektir. Bu s\u00fcre\u00e7, &#8220;prompt m\u00fchendisli\u011fi&#8221; (prompt engineering) ad\u0131 verilen bir teknikle optimize edilir. Yani, LLM&#8217;e sadece &#8220;X nedir?&#8221; diye sormak yerine, &#8220;A\u015fa\u011f\u0131daki ba\u011flam\u0131 kullanarak X hakk\u0131nda bilgi ver: [Alakal\u0131 Metin Par\u00e7alar\u0131]. Cevab\u0131n\u0131 sadece bu ba\u011flamla s\u0131n\u0131rland\u0131r ve ba\u015fka bilgi ekleme.&#8221; gibi daha detayl\u0131 ve y\u00f6nlendirici bir prompt (talimat) verilir. Bu, LLM&#8217;in sa\u011flanan ba\u011flamdan sapmas\u0131n\u0131 \u00f6nler ve daha do\u011fru, hedefe y\u00f6nelik cevaplar \u00fcretmesini sa\u011flar. LLM, RAG sisteminin son \u00e7\u0131kt\u0131s\u0131n\u0131 olu\u015fturarak kullan\u0131c\u0131n\u0131n nihai cevab\u0131 almas\u0131n\u0131 sa\u011flar.<\/p>\n<h2>Kendi En Basit RAG Sistemimizi Ad\u0131m Ad\u0131m \u0130n\u015fa Edelim: Pratik Bir Uygulama<\/h2>\n<p>\u015eimdi teorik bilgileri prati\u011fe d\u00f6kme zaman\u0131! En basit RAG sistemini Python kullanarak nas\u0131l kuraca\u011f\u0131m\u0131z\u0131 ad\u0131m ad\u0131m g\u00f6rece\u011fiz. Bu \u00f6rnekte, LangChain k\u00fct\u00fcphanesini ve a\u00e7\u0131k kaynakl\u0131 embedding modelleri ile vekt\u00f6r veritabanlar\u0131n\u0131 kullanaca\u011f\u0131z. Amac\u0131m\u0131z, belirli bir metin dosyas\u0131 \u00fczerinden sorular\u0131 yan\u0131tlayabilen bir sistem olu\u015fturmak.<\/p>\n<h3>Ad\u0131m 1: Veri Y\u00fckleme ve B\u00f6l\u00fcmlendirme (Chunking)<\/h3>\n<p>\u00d6ncelikle, bilgi taban\u0131m\u0131z\u0131 olu\u015fturacak verileri y\u00fcklememiz ve bunlar\u0131 y\u00f6netilebilir par\u00e7alara ay\u0131rmam\u0131z gerekiyor. Bu \u00f6rnek i\u00e7in basit bir metin dosyas\u0131 kullanaca\u011f\u0131z. Ger\u00e7ek d\u00fcnyada bu, PDF&#8217;ler, web sayfalar\u0131 veya di\u011fer dok\u00fcmanlar olabilir.<\/p>\n<p>\u0130lk olarak gerekli k\u00fct\u00fcphaneleri kural\u0131m:<\/p>\n<div class=\"code-container\">\n<pre><code>\npip install langchain pypdf sentence-transformers chromadb\n      <\/code><\/pre>\n<\/p><\/div>\n<p>\u015eimdi, basit bir metin dosyas\u0131 olu\u015ftural\u0131m. Ad\u0131 <code>bilgi_kaynagi.txt<\/code> olsun ve i\u00e7ine a\u015fa\u011f\u0131daki metni ekleyelim:<\/p>\n<div class=\"code-container\">\n<pre><code>\nYapay Zeka (YZ), makinelerin insan benzeri zeka sergilemesini sa\u011flayan bir bilim dal\u0131d\u0131r. Makine \u00f6\u011frenimi, YZ'nin bir alt k\u00fcmesidir ve bilgisayarlar\u0131n a\u00e7\u0131k\u00e7a programlanmadan \u00f6\u011frenmesini sa\u011flar. Derin \u00f6\u011frenme ise makine \u00f6\u011freniminin bir alt dal\u0131 olup, yapay sinir a\u011flar\u0131 kullanarak karma\u015f\u0131k desenleri \u00f6\u011frenir.\n\nRAG (Retrieval Augmented Generation), B\u00fcy\u00fck Dil Modelleri'nin (LLM) harici bilgi kaynaklar\u0131ndan bilgi alarak daha do\u011fru ve g\u00fcncel cevaplar \u00fcretmesini sa\u011flayan bir mimaridir. Bu sayede, LLM'lerin hal\u00fcsinasyon yapma e\u011filimi azal\u0131r ve belirli bir konudaki uzmanl\u0131klar\u0131 artar. RAG sistemleri genellikle bir vekt\u00f6r veritaban\u0131, bir embedding modeli ve bir LLM'den olu\u015fur.\n\nLangChain, LLM destekli uygulamalar geli\u015ftirmeyi kolayla\u015ft\u0131ran bir \u00e7er\u00e7evedir. Dok\u00fcman y\u00fckleyiciler, zincirler (chains) ve arac\u0131lar\u0131 (agents) gibi bir\u00e7ok mod\u00fcl sunar. Python tabanl\u0131d\u0131r ve h\u0131zla prototipleme yap\u0131lmas\u0131na olanak tan\u0131r.\n      <\/code><\/pre>\n<\/p><\/div>\n<p>\u015eimdi bu dosyay\u0131 y\u00fckleyip b\u00f6l\u00fcmlere ay\u0131ral\u0131m:<\/p>\n<div class=\"code-container\">\n<pre><code>\nfrom langchain_community.document_loaders import TextLoader\nfrom langchain.text_splitter import RecursiveCharacterTextSplitter\n\n# 1. Veri Y\u00fckleme\nloader = TextLoader(\"bilgi_kaynagi.txt\", encoding=\"utf-8\")\ndocuments = loader.load()\n\n# 2. B\u00f6l\u00fcmlere Ay\u0131rma (Chunking)\ntext_splitter = RecursiveCharacterTextSplitter(\n    chunk_size=500,  # Her bir par\u00e7an\u0131n maksimum karakter say\u0131s\u0131\n    chunk_overlap=50  # Par\u00e7alar aras\u0131ndaki \u00e7ak\u0131\u015fma miktar\u0131\n)\nchunks = text_splitter.split_documents(documents)\n\nprint(f\"Toplam {len(documents)} dok\u00fcman y\u00fcklendi.\")\nprint(f\"Bu dok\u00fcmanlar {len(chunks)} par\u00e7aya ayr\u0131ld\u0131.\")\nprint(\"\u0130lk par\u00e7a i\u00e7eri\u011fi:\")\nprint(chunks[0].page_content)\n      <\/code><\/pre>\n<\/p><\/div>\n<p>Yukar\u0131daki kodda, <code>TextLoader<\/code> ile basit bir metin dosyas\u0131n\u0131 y\u00fckl\u00fcyoruz. Ard\u0131ndan <code>RecursiveCharacterTextSplitter<\/code> kullanarak dok\u00fcman\u0131, belirli bir boyutta (<code>chunk_size<\/code>) ve bir miktar \u00e7ak\u0131\u015fma (<code>chunk_overlap<\/code>) ile par\u00e7alara ay\u0131r\u0131yoruz. \u00c7ak\u0131\u015fma, bir par\u00e7an\u0131n sonundaki bilginin bir sonraki par\u00e7an\u0131n ba\u015f\u0131nda da yer almas\u0131n\u0131 sa\u011flayarak, \u00f6nemli bilgilerin par\u00e7a s\u0131n\u0131rlar\u0131nda kaybolmamas\u0131n\u0131 garanti eder.<\/p>\n<h3>Ad\u0131m 2: G\u00f6mme (Embedding) ve Vekt\u00f6r Veritaban\u0131na Kay\u0131t<\/h3>\n<p>\u015eimdi, olu\u015fturdu\u011fumuz metin par\u00e7alar\u0131n\u0131 vekt\u00f6rlere d\u00f6n\u00fc\u015ft\u00fcrece\u011fiz ve bunlar\u0131 bir vekt\u00f6r veritaban\u0131na kaydedece\u011fiz. Bu \u00f6rnekte, a\u00e7\u0131k kaynakl\u0131 <code>SentenceTransformer<\/code> modelini embedding i\u00e7in ve <code>ChromaDB<\/code>&#8216;yi vekt\u00f6r veritaban\u0131 olarak kullanaca\u011f\u0131z. ChromaDB, yerel olarak \u00e7al\u0131\u015fabilen hafif ve kullan\u0131m\u0131 kolay bir vekt\u00f6r veritaban\u0131d\u0131r.<\/p>\n<div class=\"code-container\">\n<pre><code>\nfrom langchain_community.embeddings import SentenceTransformerEmbeddings\nfrom langchain_community.vectorstores import Chroma\n\n# 3. G\u00f6mme Modeli Se\u00e7imi ve Vekt\u00f6r Veritaban\u0131 Olu\u015fturma\n# A\u00e7\u0131k kaynakl\u0131 bir embedding modeli kullan\u0131yoruz\nembedding_function = SentenceTransformerEmbeddings(model_name=\"all-MiniLM-L6-v2\")\n\n# ChromaDB vekt\u00f6r veritaban\u0131n\u0131 olu\u015fturuyoruz ve par\u00e7alar\u0131 g\u00f6m\u00fcyoruz\n# persist_directory ile veritaban\u0131n\u0131n diskte kal\u0131c\u0131 olmas\u0131n\u0131 sa\u011fl\u0131yoruz\nvectorstore = Chroma.from_documents(\n    chunks,\n    embedding_function,\n    persist_directory=\".\/chroma_db\"\n)\n\n# Vekt\u00f6r veritaban\u0131n\u0131 diske kaydediyoruz\nvectorstore.persist()\nprint(\"Vekt\u00f6r veritaban\u0131 ba\u015far\u0131yla olu\u015fturuldu ve diske kaydedildi.\")\n      <\/code><\/pre>\n<\/p><\/div>\n<p>Bu kod blo\u011fu, <code>SentenceTransformerEmbeddings<\/code> ile bir g\u00f6mme fonksiyonu tan\u0131ml\u0131yor. <code>all-MiniLM-L6-v2<\/code> modeli, h\u0131zl\u0131 ve verimli oldu\u011fu i\u00e7in iyi bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. Daha sonra, <code>Chroma.from_documents<\/code> metodunu kullanarak par\u00e7alar\u0131m\u0131z\u0131 bu embedding fonksiyonu arac\u0131l\u0131\u011f\u0131yla vekt\u00f6rlere d\u00f6n\u00fc\u015ft\u00fcr\u00fcyor ve bunlar\u0131 <code>.\/chroma_db<\/code> dizininde kal\u0131c\u0131 olarak saklanan bir ChromaDB veritaban\u0131na kaydediyoruz.<\/p>\n<h3>Ad\u0131m 3: Sorgulama ve Cevap \u00dcretimi<\/h3>\n<p>Art\u0131k bilgi taban\u0131m\u0131z haz\u0131r oldu\u011funa g\u00f6re, kullan\u0131c\u0131lardan gelen sorular\u0131 i\u015fleyebilir ve B\u00fcy\u00fck Dil Modeli (LLM) arac\u0131l\u0131\u011f\u0131yla cevaplar \u00fcretebiliriz. Bu ad\u0131mda, bir LLM&#8217;i (\u00f6rne\u011fin, OpenAI&#8217;nin GPT modelleri) kullanarak sorgular\u0131 yan\u0131tlayaca\u011f\u0131z. OpenAI API anahtar\u0131n\u0131z\u0131 ayarlaman\u0131z gerekecektir. E\u011fer yerel bir LLM kullanmak isterseniz, bu k\u0131s\u0131mda de\u011fi\u015fiklik yapman\u0131z gerekebilir.<\/p>\n<p>\u00d6ncelikle, OpenAI API anahtar\u0131n\u0131z\u0131 bir ortam de\u011fi\u015fkeni olarak ayarlay\u0131n:<\/p>\n<div class=\"code-container\">\n<pre><code>\nimport os\nos.environ[\"OPENAI_API_KEY\"] = \"sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\" # Kendi anahtar\u0131n\u0131z\u0131 buraya girin\n      <\/code><\/pre>\n<\/p><\/div>\n<p>\u015eimdi sorgulama ve cevap \u00fcretimi k\u0131sm\u0131na ge\u00e7elim:<\/p>\n<div class=\"code-container\">\n<pre><code>\nfrom langchain_openai import ChatOpenAI\nfrom langchain.chains import RetrievalQA\n\n# Vekt\u00f6r veritaban\u0131n\u0131 diskten y\u00fckl\u00fcyoruz (e\u011fer daha \u00f6nce olu\u015fturulduysa)\n# Bu ad\u0131m\u0131, sistemi her ba\u015flatt\u0131\u011f\u0131n\u0131zda veritaban\u0131n\u0131 yeniden olu\u015fturmamak i\u00e7in yap\u0131yoruz\n# E\u011fer ilk defa \u00e7al\u0131\u015ft\u0131r\u0131yorsan\u0131z, yukar\u0131daki Ad\u0131m 2'yi tamamlad\u0131\u011f\u0131n\u0131zdan emin olun.\nvectorstore_loaded = Chroma(\n    persist_directory=\".\/chroma_db\",\n    embedding_function=embedding_function # Ayn\u0131 embedding fonksiyonunu kullanmal\u0131y\u0131z\n)\n\n# 4. B\u00fcy\u00fck Dil Modeli (LLM) Tan\u0131mlama\nllm = ChatOpenAI(model_name=\"gpt-3.5-turbo\", temperature=0.7)\n\n# 5. RAG Zincirini Olu\u015fturma\n# RetrievalQA zinciri, bir retriever'dan (vekt\u00f6r veritaban\u0131) bilgi al\u0131r ve bir LLM ile cevap \u00fcretir.\nqa_chain = RetrievalQA.from_chain_type(\n    llm,\n    retriever=vectorstore_loaded.as_retriever(),\n    chain_type=\"stuff\", # \"stuff\" t\u00fcm alakal\u0131 dok\u00fcmanlar\u0131 tek bir prompt'a s\u0131k\u0131\u015ft\u0131r\u0131r\n    return_source_documents=True # Cevab\u0131n kayna\u011f\u0131n\u0131 da d\u00f6nd\u00fcrs\u00fcn m\u00fc?\n)\n\n# Kullan\u0131c\u0131 sorgusu\nquery = \"RAG nedir ve hangi bile\u015fenlerden olu\u015fur?\"\nresult = qa_chain.invoke({\"query\": query})\n\nprint(\"\\n--- Kullan\u0131c\u0131 Sorgusu ---\")\nprint(query)\n\nprint(\"\\n--- LLM'in Cevab\u0131 ---\")\nprint(result[\"result\"])\n\nprint(\"\\n--- Kullan\u0131lan Kaynak Dok\u00fcmanlar ---\")\nfor doc in result[\"source_documents\"]:\n    print(f\"- {doc.page_content[:100]}...\") # \u0130lk 100 karakterini g\u00f6steriyoruz\n      <\/code><\/pre>\n<\/p><\/div>\n<p>Bu son ad\u0131mda, \u00f6ncelikle daha \u00f6nce kaydetti\u011fimiz ChromaDB veritaban\u0131n\u0131 y\u00fckl\u00fcyoruz. Ard\u0131ndan, bir <code>ChatOpenAI<\/code> modeli tan\u0131ml\u0131yoruz. <code>RetrievalQA.from_chain_type<\/code> metodunu kullanarak RAG zincirini olu\u015fturuyoruz. Bu zincir, vekt\u00f6r veritaban\u0131m\u0131z\u0131 (<code>vectorstore_loaded.as_retriever()<\/code> ile bir &#8220;retriever&#8221; haline getirerek) ve LLM&#8217;imizi bir araya getirir. <code>chain_type=\"stuff\"<\/code>, bulunan t\u00fcm alakal\u0131 metin par\u00e7alar\u0131n\u0131 tek bir prompt i\u00e7inde LLM&#8217;e g\u00f6nderir. Son olarak, bir sorgu g\u00f6nderiyor ve LLM&#8217;in cevab\u0131n\u0131 ve bu cevab\u0131 olu\u015ftururken kulland\u0131\u011f\u0131 kaynak dok\u00fcmanlar\u0131 al\u0131yoruz. Bu basit yap\u0131, temel bir RAG sisteminin t\u00fcm ana bile\u015fenlerini bir araya getirerek, harici bir bilgi taban\u0131ndan g\u00fc\u00e7 alan ak\u0131ll\u0131 cevaplar \u00fcretmenizi sa\u011flar.<\/p>\n<h2>Ger\u00e7ek D\u00fcnya Senaryolar\u0131nda Basit RAG: Kullan\u0131m Alanlar\u0131 ve Faydalar\u0131<\/h2>\n<p>Basit bir RAG sistemi kurmay\u0131 \u00f6\u011frendik, peki bu sistemi ger\u00e7ek d\u00fcnyada nerede kullanabiliriz? RAG&#8217;\u0131n esnekli\u011fi ve g\u00fcc\u00fc, onu bir\u00e7ok sekt\u00f6rde ve uygulama alan\u0131nda de\u011ferli bir ara\u00e7 haline getirir. \u0130\u015fte baz\u0131 pratik kullan\u0131m senaryolar\u0131 ve bu sistemlerin sa\u011flad\u0131\u011f\u0131 faydalar:<\/p>\n<h3>M\u00fc\u015fteri Hizmetleri Botlar\u0131 ve S\u0131k\u00e7a Sorulan Sorular (SSS) Sistemleri<\/h3>\n<p>En yayg\u0131n ve etkili RAG uygulamalar\u0131ndan biri, m\u00fc\u015fteri hizmetleri ve SSS botlar\u0131d\u0131r. Bir\u00e7ok \u015firketin \u00fcr\u00fcnleri, hizmetleri ve politikalar\u0131 hakk\u0131nda kapsaml\u0131 SSS sayfalar\u0131, kullan\u0131m k\u0131lavuzlar\u0131 ve destek dok\u00fcmanlar\u0131 bulunur. Bu dok\u00fcmanlar\u0131 bir RAG sisteminin bilgi taban\u0131na entegre ederek, m\u00fc\u015fterilerin sorular\u0131na an\u0131nda ve do\u011fru yan\u0131tlar veren ak\u0131ll\u0131 botlar olu\u015fturabilirsiniz. M\u00fc\u015fteriler, karma\u015f\u0131k sorular sorsa bile, RAG sistemi ilgili k\u0131lavuzlardan veya SSS&#8217;lerden en uygun bilgiyi \u00e7ekerek LLM&#8217;in do\u011fru bir cevap \u00fcretmesini sa\u011flar. Bu, m\u00fc\u015fteri memnuniyetini art\u0131r\u0131r, destek ekibinin y\u00fck\u00fcn\u00fc azalt\u0131r ve 7\/24 kesintisiz hizmet sunar.<\/p>\n<h3>Kurumsal Bilgi Y\u00f6netimi ve \u0130\u00e7 Dok\u00fcman Arama<\/h3>\n<p>B\u00fcy\u00fck kurulu\u015flar, operasyonel k\u0131lavuzlardan insan kaynaklar\u0131 politikalar\u0131na, teknik \u015fartnamelerden proje raporlar\u0131na kadar y\u00fczlerce, hatta binlerce i\u00e7 dok\u00fcmana sahiptir. Bu dok\u00fcmanlar genellikle farkl\u0131 formatlarda ve farkl\u0131 depolama alanlar\u0131nda bulunur, bu da \u00e7al\u0131\u015fanlar\u0131n arad\u0131klar\u0131 spesifik bilgiyi bulmas\u0131n\u0131 zorla\u015ft\u0131r\u0131r. Bir RAG sistemi, t\u00fcm bu i\u00e7 dok\u00fcmanlar\u0131 tek bir merkezi bilgi taban\u0131na d\u00f6n\u00fc\u015ft\u00fcrebilir. \u00c7al\u0131\u015fanlar, do\u011fal dilde sorular sorarak (\u00f6rne\u011fin, &#8220;Yeni izin politikas\u0131 nedir?&#8221; veya &#8220;X projesinin b\u00fct\u00e7e raporu nerede?&#8221;) an\u0131nda do\u011fru ve g\u00fcncel bilgilere eri\u015febilirler. Bu, bilgiye eri\u015fimi demokratikle\u015ftirir, verimlili\u011fi art\u0131r\u0131r ve karar alma s\u00fcre\u00e7lerini h\u0131zland\u0131r\u0131r. Ayr\u0131ca, yeni \u00e7al\u0131\u015fanlar\u0131n \u015firketin bilgi birikimine daha h\u0131zl\u0131 adapte olmas\u0131na yard\u0131mc\u0131 olur.<\/p>\n<h3>E\u011fitimde Ki\u015fiselle\u015ftirilmi\u015f \u00d6\u011frenme ve Kaynak Bulma<\/h3>\n<p>E\u011fitim sekt\u00f6r\u00fcnde RAG, \u00f6\u011frencilere ve ara\u015ft\u0131rmac\u0131lara b\u00fcy\u00fck faydalar sa\u011flayabilir. Ders kitaplar\u0131, akademik makaleler, ders notlar\u0131 ve \u00e7evrimi\u00e7i kaynaklar gibi geni\u015f bir e\u011fitim materyali havuzunu bir RAG sistemine entegre ederek, \u00f6\u011frencilerin belirli konular hakk\u0131nda derinlemesine bilgi edinmelerine yard\u0131mc\u0131 olabilirsiniz. \u00d6\u011frenciler, &#8220;Einstein&#8217;\u0131n g\u00f6relilik teorisi nedir?&#8221; veya &#8220;Fotosentez s\u00fcrecinin temel ad\u0131mlar\u0131 nelerdir?&#8221; gibi sorular sorabilir ve sistem, ilgili ders materyallerinden veya bilimsel makalelerden en alakal\u0131 bilgiyi \u00e7ekerek ki\u015fiselle\u015ftirilmi\u015f ve a\u00e7\u0131klay\u0131c\u0131 cevaplar sunar. Bu, \u00f6\u011frenme deneyimini zenginle\u015ftirir ve \u00f6\u011frencilerin kendi h\u0131zlar\u0131nda ilerlemesini te\u015fvik eder.<\/p>\n<h3>Hukuk ve T\u0131p Alanlar\u0131nda Bilgi Eri\u015fimi<\/h3>\n<p>Hukuk ve t\u0131p gibi bilgi yo\u011fun alanlarda, RAG sistemleri uzmanlar\u0131n i\u015f y\u00fck\u00fcn\u00fc hafifletebilir. Hukuk\u00e7ular, yasa maddeleri, emsal kararlar veya s\u00f6zle\u015fme \u00f6rnekleri hakk\u0131nda h\u0131zl\u0131ca bilgi alabilirler. Doktorlar ve ara\u015ft\u0131rmac\u0131lar ise, t\u0131bbi makaleler, hasta kay\u0131tlar\u0131 veya ila\u00e7 bilgileri \u00fczerinden spesifik sorular sorarak tan\u0131 koyma veya tedavi planlama s\u00fcre\u00e7lerini destekleyebilirler. Bu alanlarda do\u011fruluk kritik oldu\u011fu i\u00e7in, RAG&#8217;\u0131n sundu\u011fu kaynak belirtme (kaynak dok\u00fcmanlar\u0131 g\u00f6sterme) \u00f6zelli\u011fi, g\u00fcvenilirli\u011fi art\u0131r\u0131r ve hata riskini azalt\u0131r. Ancak bu alanlarda kullan\u0131rken, sistemin \u00e7\u0131kt\u0131lar\u0131n\u0131n her zaman bir insan uzman taraf\u0131ndan do\u011frulanmas\u0131 gerekti\u011fi unutulmamal\u0131d\u0131r.<\/p>\n<h3>Vaka Analizi: Bir \u015eirketin \u0130nsan Kaynaklar\u0131 Dok\u00fcmanlar\u0131 \u00dczerine RAG<\/h3>\n<p>Bir orta \u00f6l\u00e7ekli \u015firketin \u0130nsan Kaynaklar\u0131 (\u0130K) departman\u0131, \u00e7al\u0131\u015fanlar\u0131n izin politikalar\u0131, yan haklar, bordro s\u00fcre\u00e7leri ve \u015firket k\u00fclt\u00fcr\u00fc hakk\u0131nda s\u00fcrekli sorular sormas\u0131ndan bunalm\u0131\u015ft\u0131. Mevcut SSS sayfas\u0131 yetersiz kal\u0131yor, \u00e7al\u0131\u015fanlar ise do\u011fru bilgiyi bulmakta zorlan\u0131yordu. \u015eirket, t\u00fcm \u0130K el kitaplar\u0131n\u0131, politika dok\u00fcmanlar\u0131n\u0131 ve i\u00e7 duyurular\u0131 bir araya getirerek bir RAG sistemi kurmaya karar verdi. Bu dok\u00fcmanlar b\u00f6l\u00fcmlere ayr\u0131ld\u0131, embedding&#8217;lere d\u00f6n\u00fc\u015ft\u00fcr\u00fcld\u00fc ve bir vekt\u00f6r veritaban\u0131na kaydedildi. \u00c7al\u0131\u015fanlar, art\u0131k bir i\u00e7 portal \u00fczerinden do\u011fal dilde sorular sorabiliyorlard\u0131: &#8220;Y\u0131ll\u0131k izin hakk\u0131m ne kadar?&#8221;, &#8220;\u00c7ocuk bak\u0131m\u0131 deste\u011fi i\u00e7in nas\u0131l ba\u015fvurabilirim?&#8221;, &#8220;Yeni ba\u015flayanlar i\u00e7in oryantasyon s\u00fcreci nas\u0131l i\u015fliyor?&#8221;. RAG sistemi, bu sorulara an\u0131nda, ilgili \u0130K dok\u00fcmanlar\u0131ndan \u00e7ekilen bilgilerle do\u011fru ve eksiksiz cevaplar verdi. Sonu\u00e7 olarak, \u0130K departman\u0131n\u0131n soru y\u00fck\u00fc %40 azald\u0131, \u00e7al\u0131\u015fan memnuniyeti artt\u0131 ve bilgiye eri\u015fim \u00e7ok daha kolay ve verimli hale geldi. Bu \u00f6rnek, RAG&#8217;\u0131n basit bir uygulamayla bile ne kadar b\u00fcy\u00fck bir etki yaratabilece\u011fini g\u00f6stermektedir.<\/p>\n<h2>Sonu\u00e7: RAG ile Yapay Zeka Destekli Gelecek<\/h2>\n<p>Bu makalede, RAG (Retrieval Augmented Generation) sistemlerinin temel prensiplerini, neden bu kadar \u00f6nemli olduklar\u0131n\u0131 ve en basit haliyle nas\u0131l kurulduklar\u0131n\u0131 ad\u0131m ad\u0131m inceledik. B\u00fcy\u00fck Dil Modellerinin (LLM) s\u0131n\u0131rlamalar\u0131n\u0131 a\u015farak, onlara g\u00fcncel, do\u011fru ve spesifik bilgilere eri\u015fim yetene\u011fi kazand\u0131ran RAG mimarisi, yapay zeka uygulamalar\u0131n\u0131n g\u00fcvenilirli\u011fini ve kullan\u0131\u015fl\u0131l\u0131\u011f\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rmaktad\u0131r. Bilgi taban\u0131 olu\u015fturmaktan, g\u00f6mme modelleri ve vekt\u00f6r veritabanlar\u0131 kullanarak verileri i\u015flemekten, nihayetinde bir LLM arac\u0131l\u0131\u011f\u0131yla ak\u0131ll\u0131 cevaplar \u00fcretmeye kadar t\u00fcm s\u00fcreci basit bir Python \u00f6rne\u011fiyle g\u00f6sterdik. M\u00fc\u015fteri hizmetlerinden kurumsal bilgi y\u00f6netimine, e\u011fitimden hukuk ve t\u0131p gibi kritik alanlara kadar geni\u015f bir yelpazede RAG&#8217;\u0131n ger\u00e7ek d\u00fcnya uygulamalar\u0131n\u0131 ve sa\u011flad\u0131\u011f\u0131 faydalar\u0131 da ele ald\u0131k. G\u00f6rd\u00fc\u011f\u00fcm\u00fcz gibi, RAG, sadece teknik bir yenilik olman\u0131n \u00f6tesinde, i\u015fletmelerin ve bireylerin bilgiye eri\u015fim ve etkile\u015fim bi\u00e7imlerini d\u00f6n\u00fc\u015ft\u00fcrme potansiyeline sahip g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. Gelecekte, RAG sistemlerinin daha da geli\u015ferek daha karma\u015f\u0131k sorgular\u0131 anlama, daha \u00e7e\u015fitli veri tipleriyle \u00e7al\u0131\u015fma ve daha sofistike \u00e7\u0131kar\u0131mlar yapma yetenekleri kazanmas\u0131 beklenmektedir. Bu teknoloji, yapay zeka destekli gelece\u011fin temel ta\u015flar\u0131ndan biri olmaya devam edecektir.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<ul>\n<li>\n            <strong>RAG ve fine-tuning (ince ayar) aras\u0131ndaki fark nedir?<\/strong><\/p>\n<p>RAG, bir LLM&#8217;e harici bir bilgi taban\u0131ndan anl\u0131k olarak bilgi \u00e7ekerek cevap \u00fcretmesini sa\u011flarken, fine-tuning (ince ayar) mevcut bir LLM&#8217;i belirli bir veri k\u00fcmesi \u00fczerinde ek e\u011fitimle \u00f6zelle\u015ftirme i\u015flemidir. RAG, modelin genel bilgisini de\u011fi\u015ftirmeden g\u00fcncel veya \u00f6zel bilgilere eri\u015fimini art\u0131r\u0131rken, fine-tuning modelin davran\u0131\u015f\u0131n\u0131 ve stilini kal\u0131c\u0131 olarak de\u011fi\u015ftirir.<\/p>\n<\/li>\n<li>\n            <strong>Hangi embedding modelini se\u00e7meliyim?<\/strong><\/p>\n<p>Se\u00e7im, uygulaman\u0131z\u0131n gereksinimlerine ve b\u00fct\u00e7enize ba\u011fl\u0131d\u0131r. OpenAI&#8217;nin <code>text-embedding-ada-002<\/code> gibi modeller y\u00fcksek performans sunar ancak maliyetlidir. A\u00e7\u0131k kaynakl\u0131 Sentence Transformers (\u00f6rne\u011fin, <code>all-MiniLM-L6-v2<\/code> veya <code>multi-qa-MiniLM-L6-cos-v1<\/code>) modelleri ise \u00fccretsiz ve genellikle bir\u00e7ok uygulama i\u00e7in yeterince iyidir. Daha b\u00fcy\u00fck ve karma\u015f\u0131k modeller daha iyi performans sunsa da daha fazla hesaplama kayna\u011f\u0131 gerektirir.<\/p>\n<\/li>\n<li>\n            <strong>Chunking (b\u00f6l\u00fcmlendirme) boyutu nas\u0131l belirlenmeli?<\/strong><\/p>\n<p>Chunking boyutu, LLM&#8217;in token limitleri, dok\u00fcmanlar\u0131n\u0131z\u0131n yap\u0131s\u0131 ve arama sorgular\u0131n\u0131n do\u011fas\u0131 gibi fakt\u00f6rlere ba\u011fl\u0131d\u0131r. Genellikle 200-500 kelime veya 500-1000 karakter aras\u0131 bir boyut iyi bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. \u00c7ok k\u00fc\u00e7\u00fck par\u00e7alar ba\u011flam\u0131 kaybettirebilir, \u00e7ok b\u00fcy\u00fck par\u00e7alar ise LLM&#8217;in token limitlerini a\u015fabilir veya alakas\u0131z bilgileri i\u00e7erebilir. Deneme yan\u0131lma yoluyla en uygun boyutu bulmak \u00f6nemlidir.<\/p>\n<\/li>\n<li>\n            <strong>RAG sistemi ne kadar g\u00fcvenilirdir?<\/strong><\/p>\n<p>RAG sistemleri, LLM&#8217;lerin hal\u00fcsinasyon yapma e\u011filimini \u00f6nemli \u00f6l\u00e7\u00fcde azaltarak g\u00fcvenilirli\u011fi art\u0131r\u0131r. \u00c7\u00fcnk\u00fc cevaplar, do\u011frulanabilir harici kaynaklara dayan\u0131r. Ancak, sistemin g\u00fcvenilirli\u011fi, kullan\u0131lan bilgi taban\u0131n\u0131n kalitesine, embedding modelinin do\u011frulu\u011funa ve LLM&#8217;in yetene\u011fine ba\u011fl\u0131d\u0131r. Her zaman %100 kusursuz de\u011fildir ve kritik uygulamalarda insan denetimi \u00f6nemlidir.<\/p>\n<\/li>\n<\/ul>\n<p>#YapayZeka #RAG #B\u00fcy\u00fckDilModelleri #Makine\u00d6\u011frenimi #VeriBilimi<\/p>\n<div class=\"github-example-link\"><strong>\u00d6rnek kod:<\/strong> <a href=\"https:\/\/github.com\/fatihsoysalcom\/simplest-rag-example-python\" target=\"_blank\" rel=\"noopener noreferrer\">github.com\/fatihsoysalcom\/simplest-rag-example-python<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"B\u00fcy\u00fck Dil Modelleri (LLM&#8217;ler) son y\u0131llarda yapay zeka d\u00fcnyas\u0131nda devrim yaratt\u0131, ancak bu g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131n da kendine \u00f6zg\u00fc s\u0131n\u0131rlamalar\u0131 bulunuyor.","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-43020","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Practical RAG, Part 1: The Simplest RAG That Actually Works - En Temel RAG Sistemi Nas\u0131l Kurulur? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/practical-rag-part-1-the-simplest-rag-that-actually-works-en-temel-rag-sistemi-nasil-kurulur\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Practical RAG, Part 1: The Simplest RAG That Actually Works - En Temel RAG Sistemi Nas\u0131l Kurulur?\" \/>\n<meta property=\"og:description\" content=\"B\u00fcy\u00fck Dil Modelleri (LLM&#039;ler) son y\u0131llarda yapay zeka d\u00fcnyas\u0131nda devrim yaratt\u0131, ancak bu g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131n da kendine \u00f6zg\u00fc s\u0131n\u0131rlamalar\u0131 bulunuyor.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/practical-rag-part-1-the-simplest-rag-that-actually-works-en-temel-rag-sistemi-nasil-kurulur\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-02T18:11:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-02T18:12:02+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"21 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/practical-rag-part-1-the-simplest-rag-that-actually-works-en-temel-rag-sistemi-nasil-kurulur\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/practical-rag-part-1-the-simplest-rag-that-actually-works-en-temel-rag-sistemi-nasil-kurulur\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Practical RAG, Part 1: The Simplest RAG That Actually Works &#8211; En Temel RAG Sistemi Nas\u0131l Kurulur?\",\"datePublished\":\"2026-07-02T18:11:31+00:00\",\"dateModified\":\"2026-07-02T18:12:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/practical-rag-part-1-the-simplest-rag-that-actually-works-en-temel-rag-sistemi-nasil-kurulur\/\"},\"wordCount\":3600,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/practical-rag-part-1-the-simplest-rag-that-actually-works-en-temel-rag-sistemi-nasil-kurulur\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/practical-rag-part-1-the-simplest-rag-that-actually-works-en-temel-rag-sistemi-nasil-kurulur\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/practical-rag-part-1-the-simplest-rag-that-actually-works-en-temel-rag-sistemi-nasil-kurulur\/\",\"name\":\"Practical RAG, Part 1: The Simplest RAG That Actually Works - En Temel RAG Sistemi Nas\u0131l Kurulur? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-07-02T18:11:31+00:00\",\"dateModified\":\"2026-07-02T18:12:02+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/practical-rag-part-1-the-simplest-rag-that-actually-works-en-temel-rag-sistemi-nasil-kurulur\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/practical-rag-part-1-the-simplest-rag-that-actually-works-en-temel-rag-sistemi-nasil-kurulur\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/practical-rag-part-1-the-simplest-rag-that-actually-works-en-temel-rag-sistemi-nasil-kurulur\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Practical RAG, Part 1: The Simplest RAG That Actually Works &#8211; En Temel RAG Sistemi Nas\u0131l Kurulur?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Practical RAG, Part 1: The Simplest RAG That Actually Works - En Temel RAG Sistemi Nas\u0131l Kurulur? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/practical-rag-part-1-the-simplest-rag-that-actually-works-en-temel-rag-sistemi-nasil-kurulur\/","og_locale":"tr_TR","og_type":"article","og_title":"Practical RAG, Part 1: The Simplest RAG That Actually Works - En Temel RAG Sistemi Nas\u0131l Kurulur?","og_description":"B\u00fcy\u00fck Dil Modelleri (LLM'ler) son y\u0131llarda yapay zeka d\u00fcnyas\u0131nda devrim yaratt\u0131, ancak bu g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131n da kendine \u00f6zg\u00fc s\u0131n\u0131rlamalar\u0131 bulunuyor.","og_url":"https:\/\/fatihsoysal.com\/blog\/practical-rag-part-1-the-simplest-rag-that-actually-works-en-temel-rag-sistemi-nasil-kurulur\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-07-02T18:11:31+00:00","article_modified_time":"2026-07-02T18:12:02+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"21 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/practical-rag-part-1-the-simplest-rag-that-actually-works-en-temel-rag-sistemi-nasil-kurulur\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/practical-rag-part-1-the-simplest-rag-that-actually-works-en-temel-rag-sistemi-nasil-kurulur\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Practical RAG, Part 1: The Simplest RAG That Actually Works &#8211; En Temel RAG Sistemi Nas\u0131l Kurulur?","datePublished":"2026-07-02T18:11:31+00:00","dateModified":"2026-07-02T18:12:02+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/practical-rag-part-1-the-simplest-rag-that-actually-works-en-temel-rag-sistemi-nasil-kurulur\/"},"wordCount":3600,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/practical-rag-part-1-the-simplest-rag-that-actually-works-en-temel-rag-sistemi-nasil-kurulur\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/practical-rag-part-1-the-simplest-rag-that-actually-works-en-temel-rag-sistemi-nasil-kurulur\/","url":"https:\/\/fatihsoysal.com\/blog\/practical-rag-part-1-the-simplest-rag-that-actually-works-en-temel-rag-sistemi-nasil-kurulur\/","name":"Practical RAG, Part 1: The Simplest RAG That Actually Works - En Temel RAG Sistemi Nas\u0131l Kurulur? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-07-02T18:11:31+00:00","dateModified":"2026-07-02T18:12:02+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/practical-rag-part-1-the-simplest-rag-that-actually-works-en-temel-rag-sistemi-nasil-kurulur\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/practical-rag-part-1-the-simplest-rag-that-actually-works-en-temel-rag-sistemi-nasil-kurulur\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/practical-rag-part-1-the-simplest-rag-that-actually-works-en-temel-rag-sistemi-nasil-kurulur\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Practical RAG, Part 1: The Simplest RAG That Actually Works &#8211; En Temel RAG Sistemi Nas\u0131l Kurulur?"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/43020","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=43020"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/43020\/revisions"}],"predecessor-version":[{"id":43021,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/43020\/revisions\/43021"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=43020"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=43020"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=43020"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}