[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:ai-engineer\u002Fllm-rag":4,"config":194},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":7,"topic_name":7,"spec_key":8,"spec_name":9,"locale":10,"cell_total":11,"field_total":12,"seniorities":13,"topics":17,"specs":100,"samples":108},"ai-engineer","AI Engineer","","llm-rag","LLM\u002FRAG","tr",450,2025,[14,15,16],"junior","mid","senior",[18,22,25,28,31,34,37,40,43,46,49,52,55,58,61,64,67,70,73,76,79,82,85,88,91,94,97],{"key":19,"name":20,"count":21},"agents-tool-use","Agents Tool Use",75,{"key":23,"name":24,"count":21},"aimlops-deployment-strategies-ml","Aimlops Deployment Strategies Ml",{"key":26,"name":27,"count":21},"aimlops-experiment-tracking-reproducibility","Aimlops Experiment Tracking Reproducibility",{"key":29,"name":30,"count":21},"aimlops-feature-store-data-versioning","Aimlops Feature Store Data Versioning",{"key":32,"name":33,"count":21},"aimlops-ml-cicd-pipelines","Aimlops Ml Cicd Pipelines",{"key":35,"name":36,"count":21},"aimlops-model-monitoring-drift-detection","Aimlops Model Monitoring Drift Detection",{"key":38,"name":39,"count":21},"aimlops-model-versioning-registry","Aimlops Model Versioning Registry",{"key":41,"name":42,"count":21},"aipy-async-concurrency-ml-serving","Aipy Async Concurrency Ml Serving",{"key":44,"name":45,"count":21},"aipy-data-pipeline-dataloader","Aipy Data Pipeline Dataloader",{"key":47,"name":48,"count":21},"aipy-gpu-memory-management","Aipy Gpu Memory Management",{"key":50,"name":51,"count":21},"aipy-numpy-vectorization-broadcasting","Aipy Numpy Vectorization Broadcasting",{"key":53,"name":54,"count":21},"aipy-python-ml-packaging-environments","Aipy Python Ml Packaging Environments",{"key":56,"name":57,"count":21},"aipy-tensor-ops-autograd","Aipy Tensor Ops Autograd",{"key":59,"name":60,"count":21},"embeddings-vector-search","Embeddings Vector Search",{"key":62,"name":63,"count":21},"evaluation-testing","Evaluation Testing",{"key":65,"name":66,"count":21},"fine-tuning-adaptation","Fine Tuning Adaptation",{"key":68,"name":69,"count":21},"inference-serving","Inference Serving",{"key":71,"name":72,"count":21},"llm-fundamentals","Llm Fundamentals",{"key":74,"name":75,"count":21},"prompt-engineering","Prompt Engineering",{"key":77,"name":78,"count":21},"rag-chunking-indexing","Rag Chunking Indexing",{"key":80,"name":81,"count":21},"rag-embeddings-similarity","Rag Embeddings Similarity",{"key":83,"name":84,"count":21},"rag-evaluation","Rag Evaluation",{"key":86,"name":87,"count":21},"rag-generation-context","Rag Generation Context",{"key":89,"name":90,"count":21},"rag-reranking-fusion","Rag Reranking Fusion",{"key":92,"name":93,"count":21},"rag-retrieval","Rag Retrieval",{"key":95,"name":96,"count":21},"rag-retrieval-search","Rag Retrieval Search",{"key":98,"name":99,"count":21},"safety-guardrails","Safety Guardrails",[101,102,105],{"key":8,"name":9,"count":11},{"key":103,"name":104,"count":11},"mlops","MLOps",{"key":106,"name":107,"count":11},"python","Python",[109,127,141,154,167,180],{"id":110,"topic":78,"difficulty":111,"body":112,"options":113,"correct_key":115,"explanation":126},"019f667f-d8f2-7f01-b938-14995c660d3b",1,"Bir RAG indeksleme pipeline'ında 'chunking' (parçalama) adımı ne yapar?",[114,117,120,123],{"key":115,"text":116},"a","Kaynak dokümanları embed edilip indekslenmeden önce daha küçük parçalara böler.",{"key":118,"text":119},"b","Vektör indekse kaydedilmeden önce bir embedding vektörünün boyutunu azaltır.",{"key":121,"text":122},"c","Kullanıcının sorgusu retriever'a gönderilmeden önce içindeki stopword'leri temizler.",{"key":124,"text":125},"d","Modelin ağırlıklarını, inference daha az bellek kullansın diye sıkıştırır.","Chunking, ham dokümanları her biri ayrı ayrı embed edilip indekslenebilecek ve tek başına getirilebilecek daha küçük parçalara böler. (b) zaten var olan bir vektör üzerinde boyut azaltmayı anlatır, doküman bölme değil. (c) sorgu ön işlemesidir. (d) model sıkıştırmayı anlatır, metin indekslemeyle ilgisizdir.",{"id":128,"topic":78,"difficulty":129,"body":130,"options":131,"correct_key":118,"explanation":140},"019f667f-d917-7007-8dce-9b410c5a86b3",2,"Bir ekip overlap'i chunk_size'ın %10'u olarak, tam sayı (floor) dönüşümüyle ayarlıyor. chunk_size=256 token iken kaç overlap token oluşur ve her pencere hangi step ile ilerler?",[132,134,136,138],{"key":115,"text":133},"overlap = 26 token (25.6 yukarı yuvarlandı); step = 256 - 26 = 230.",{"key":118,"text":135},"overlap = 25 token (25.6'nın floor'u); step = 256 - 25 = 231.",{"key":121,"text":137},"overlap = 10 token (yüzde doğrudan token sayısı olarak alındı); step = 246.",{"key":124,"text":139},"overlap = 25 token; step = 256, çünkü pencere her zaman chunk_size kadar ilerler.","256'nın %10'u 25.6'dır ve floor dönüşümü 25 overlap token verir; step = chunk_size - overlap = 256 - 25 = 231, kodda doğrulandı. (a) floor yerine yukarı yuvarlıyor. (c) '%10'u 10 token sanıyor. (d) step'i hesaplarken overlap'i yok sayıyor.",{"id":142,"topic":78,"difficulty":129,"body":143,"options":144,"correct_key":121,"explanation":153},"019f667f-d919-7228-91c2-02e07a413e44","Bir korpus 10.000 chunk'a bölünüyor ve her chunk 768 boyutlu float32 bir vektör olarak embed ediliyor (değer başına 4 byte). İndeks ek yükünü göz ardı ederek, embedding vektörleri kabaca ne kadar ham depolama gerektirir? (1 MB = 1.000.000 byte)",[145,147,149,151],{"key":115,"text":146},"10.000 x 768 = 7.680.000 byte, yaklaşık 7,7 MB.",{"key":118,"text":148},"10.000 x 4 = 40.000 byte, yaklaşık 0,04 MB.",{"key":121,"text":150},"10.000 x 768 x 4 = 30.720.000 byte, yaklaşık 30,7 MB.",{"key":124,"text":152},"768 x 4 = 3.072 byte, yaklaşık 0,003 MB.","Her vektör 768 float32 değeri, her biri 4 byte, tutar ve bunlardan 10.000 tane var: 10.000 x 768 x 4 = 30.720.000 byte, yaklaşık 30,7 MB, kodda doğrulandı. (a) değer başına 4 byte'ı atlıyor. (b) boyutu atlıyor. (d) chunk sayısını atlıyor.",{"id":155,"topic":78,"difficulty":129,"body":156,"options":157,"correct_key":124,"explanation":166},"019f667f-d91c-7538-a01b-2872d29890df","Bir dokümanda tam olarak 1000 token var. chunk_size=200 ve overlap=50 token ile sliding window kullanılarak bölünüyor (son chunk daha kısa olabilir). chunks = ceil((total - size) \u002F (size - overlap)) + 1 formülüyle kaç chunk oluşur? (tiktoken ile doğrulandı: ceil((1000-200)\u002F150)+1 = 7)",[158,160,162,164],{"key":115,"text":159},"6",{"key":118,"text":161},"5",{"key":121,"text":163},"8",{"key":124,"text":165},"7","step = size - overlap = 150. chunks = ceil((1000-200)\u002F150) + 1 = ceil(800\u002F150) + 1 = 6 + 1 = 7; bu, sliding window döngüsü doğrudan çalıştırılarak da doğrulandı. (a), (b) ve (c) step'in yanlış hesaplanmasından ya da yukarı yuvarlamanın hatalı yapılmasından kaynaklanır.",{"id":168,"topic":78,"difficulty":111,"body":169,"options":170,"correct_key":115,"explanation":179},"019f667f-d91e-718a-a985-db78650d1cbc","Bir embedding modeli, çağrı başına en fazla sabit sayıda girdi token'ı kabul eder. chunk_size bu limitten büyük ayarlanırsa ne olur ve nasıl ele alınmalı?",[171,173,175,177],{"key":115,"text":172},"Limiti aşan chunk'lar kesilir, kuyruk token'ları düşer; chunk_size limit içinde tutulmalı.",{"key":118,"text":174},"Model, boyutu aşan chunk'ı otomatik böler ve parçaları ortalar, böylece içerik kaybolmaz.",{"key":121,"text":176},"Limit yalnızca sorgulara uygulanır, bu yüzden sorgular kısa olduğu sürece büyük chunk'lar sorun değildir.",{"key":124,"text":178},"Boyutu aşan chunk'lar vektörün boyutunu artırır, bu da retrieval doğruluğunu iyileştirir.","Modelin maksimumunu aşan girdiler kesilir, bu yüzden boyutu aşan bir chunk'ın kuyruğu embedding'e hiç ulaşmaz ve içeriği aranamaz hale gelir; chunk_size limit içinde tutulmalı. (b), (c) ve (d) embedding modellerinin sergilemediği davranışları anlatıyor.",{"id":181,"topic":78,"difficulty":182,"body":183,"options":184,"correct_key":118,"explanation":193},"019f667f-d91f-7d50-a521-e001692aa7f4",3,"Bir recursive chunker max_tokens=100 kullanıyor. 250 token'lık bir paragraf bunu aşıyor, bu yüzden cümlelere bölünüp 100 token'ı aşmadan chunk'lara açgözlü (greedy) paketleniyor (bir sonraki cümle taşacaksa yeni chunk başlar). Cümle token uzunlukları sırayla [40, 30, 55, 45, 80]. Kaç chunk oluşur ve token boyutları nedir?",[185,187,189,191],{"key":115,"text":186},"[125, 125] boyutlarında 2 chunk, çünkü cümleler tam ortadan eşit bölünür.",{"key":118,"text":188},"[70, 100, 80] boyutlarında 3 chunk.",{"key":121,"text":190},"Cümle başına bir tane olmak üzere 5 chunk: [40, 30, 55, 45, 80].",{"key":124,"text":192},"[70, 55, 45, 80] boyutlarında 4 chunk.","Greedy paketleme: 40+30=70 (sonraki 55 taşardı) chunk 1'i kapatır; 55+45=100 (sonraki 80 taşardı) chunk 2'yi kapatır; 80, chunk 3'ü oluşturur. Sonuç: [70, 100, 80], 3 chunk, döngü çalıştırılarak doğrulandı. (a) 100 limitini yok sayıyor, (c) paketlemeyi atlıyor, (d) gruplamayı yanlış sayıyor.",{"fields":195,"seniorities":372,"interview_shapes":373,"locales":378,"oauth":380,"question_count":383,"coach_enabled":384,"jd_match_enabled":384},[196,219,239,255,279,286,305,324,346,353,359,366],{"key":197,"name_tr":198,"name_en":198,"sort":111,"specializations":199},"backend","Backend",[200,203,206,207,210,213,216],{"key":201,"name":202,"field":197},"general","Genel",{"key":204,"name":205,"field":197},"go","Go",{"key":106,"name":107,"field":197},{"key":208,"name":209,"field":197},"java","Java",{"key":211,"name":212,"field":197},"csharp","C#\u002F.NET",{"key":214,"name":215,"field":197},"nodejs","Node.js",{"key":217,"name":218,"field":197},"php","PHP",{"key":220,"name_tr":221,"name_en":221,"sort":129,"specializations":222},"frontend","Frontend",[223,224,227,230,233,236],{"key":201,"name":202,"field":220},{"key":225,"name":226,"field":220},"javascript","JavaScript",{"key":228,"name":229,"field":220},"typescript","TypeScript",{"key":231,"name":232,"field":220},"react","React",{"key":234,"name":235,"field":220},"vue","Vue",{"key":237,"name":238,"field":220},"angular","Angular",{"key":240,"name_tr":241,"name_en":241,"sort":182,"specializations":242},"fullstack","Fullstack",[243,244,245,246,247,248,249,250,251,252,253,254],{"key":201,"name":202,"field":240},{"key":204,"name":205,"field":197},{"key":106,"name":107,"field":197},{"key":208,"name":209,"field":197},{"key":211,"name":212,"field":197},{"key":214,"name":215,"field":197},{"key":217,"name":218,"field":197},{"key":225,"name":226,"field":220},{"key":228,"name":229,"field":220},{"key":231,"name":232,"field":220},{"key":234,"name":235,"field":220},{"key":237,"name":238,"field":220},{"key":256,"name_tr":257,"name_en":257,"sort":258,"specializations":259},"devops-cloud","DevOps \u002F Cloud",4,[260,261,264,267,270,273,276],{"key":201,"name":202,"field":256},{"key":262,"name":263,"field":256},"aws","AWS",{"key":265,"name":266,"field":256},"gcp","GCP",{"key":268,"name":269,"field":256},"azure","Azure",{"key":271,"name":272,"field":256},"kubernetes","Kubernetes",{"key":274,"name":275,"field":256},"terraform","Terraform",{"key":277,"name":278,"field":256},"linux","Linux",{"key":5,"name_tr":6,"name_en":6,"sort":280,"specializations":281},5,[282,283,284,285],{"key":201,"name":202,"field":5},{"key":106,"name":107,"field":5},{"key":8,"name":9,"field":5},{"key":103,"name":104,"field":5},{"key":287,"name_tr":288,"name_en":289,"sort":290,"specializations":291},"database","Veritabanı","Database",6,[292,293,296,299,302],{"key":201,"name":202,"field":287},{"key":294,"name":295,"field":287},"postgresql","PostgreSQL",{"key":297,"name":298,"field":287},"mysql","MySQL",{"key":300,"name":301,"field":287},"mongodb","MongoDB",{"key":303,"name":304,"field":287},"redis","Redis",{"key":306,"name_tr":307,"name_en":308,"sort":309,"specializations":310},"mobile","Mobil","Mobile",7,[311,312,315,318,321],{"key":201,"name":202,"field":306},{"key":313,"name":314,"field":306},"ios-swift","iOS (Swift)",{"key":316,"name":317,"field":306},"android-kotlin","Android (Kotlin)",{"key":319,"name":320,"field":306},"flutter","Flutter",{"key":322,"name":323,"field":306},"react-native","React Native",{"key":325,"name_tr":326,"name_en":327,"sort":328,"specializations":329},"security","Güvenlik","Security",8,[330,331,334,337,340,343],{"key":201,"name":202,"field":325},{"key":332,"name":333,"field":325},"appsec","AppSec",{"key":335,"name":336,"field":325},"offensive-pentest","Offensive \u002F Pentest",{"key":338,"name":339,"field":325},"cloud-security","Cloud Security",{"key":341,"name":342,"field":325},"devsecops","DevSecOps",{"key":344,"name":345,"field":325},"blue-team-incident","Blue Team \u002F Incident",{"key":347,"name_tr":348,"name_en":349,"sort":350,"specializations":351},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[352],{"key":201,"name":202,"field":347},{"key":354,"name_tr":355,"name_en":355,"sort":356,"specializations":357},"data-engineer","Data Engineer",10,[358],{"key":201,"name":202,"field":354},{"key":360,"name_tr":361,"name_en":362,"sort":363,"specializations":364},"game-dev","Oyun Geliştirme","Game Development",11,[365],{"key":201,"name":202,"field":360},{"key":367,"name_tr":368,"name_en":368,"sort":369,"specializations":370},"ml-engineer","ML Engineer",12,[371],{"key":201,"name":202,"field":367},[14,15,16],{"junior":374,"mid":376,"senior":377},{"questions":375,"median_sec":3},20,{"questions":375,"median_sec":3},{"questions":375,"median_sec":3},[10,379],"en",[381,382],"google","github",21750,true]