[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:ai-engineer\u002Frag-reranking-fusion":4,"config":194},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":8,"topic_name":9,"spec_key":7,"spec_name":7,"locale":10,"cell_total":11,"field_total":12,"seniorities":13,"topics":17,"specs":97,"samples":108},"ai-engineer","AI Engineer","","rag-reranking-fusion","Rag Reranking Fusion","tr",75,2025,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,88,91,94],{"key":19,"name":20,"count":11},"agents-tool-use","Agents Tool Use",{"key":22,"name":23,"count":11},"aimlops-deployment-strategies-ml","Aimlops Deployment Strategies Ml",{"key":25,"name":26,"count":11},"aimlops-experiment-tracking-reproducibility","Aimlops Experiment Tracking Reproducibility",{"key":28,"name":29,"count":11},"aimlops-feature-store-data-versioning","Aimlops Feature Store Data Versioning",{"key":31,"name":32,"count":11},"aimlops-ml-cicd-pipelines","Aimlops Ml Cicd Pipelines",{"key":34,"name":35,"count":11},"aimlops-model-monitoring-drift-detection","Aimlops Model Monitoring Drift Detection",{"key":37,"name":38,"count":11},"aimlops-model-versioning-registry","Aimlops Model Versioning Registry",{"key":40,"name":41,"count":11},"aipy-async-concurrency-ml-serving","Aipy Async Concurrency Ml Serving",{"key":43,"name":44,"count":11},"aipy-data-pipeline-dataloader","Aipy Data Pipeline Dataloader",{"key":46,"name":47,"count":11},"aipy-gpu-memory-management","Aipy Gpu Memory Management",{"key":49,"name":50,"count":11},"aipy-numpy-vectorization-broadcasting","Aipy Numpy Vectorization Broadcasting",{"key":52,"name":53,"count":11},"aipy-python-ml-packaging-environments","Aipy Python Ml Packaging Environments",{"key":55,"name":56,"count":11},"aipy-tensor-ops-autograd","Aipy Tensor Ops Autograd",{"key":58,"name":59,"count":11},"embeddings-vector-search","Embeddings Vector Search",{"key":61,"name":62,"count":11},"evaluation-testing","Evaluation Testing",{"key":64,"name":65,"count":11},"fine-tuning-adaptation","Fine Tuning Adaptation",{"key":67,"name":68,"count":11},"inference-serving","Inference Serving",{"key":70,"name":71,"count":11},"llm-fundamentals","Llm Fundamentals",{"key":73,"name":74,"count":11},"prompt-engineering","Prompt Engineering",{"key":76,"name":77,"count":11},"rag-chunking-indexing","Rag Chunking Indexing",{"key":79,"name":80,"count":11},"rag-embeddings-similarity","Rag Embeddings Similarity",{"key":82,"name":83,"count":11},"rag-evaluation","Rag Evaluation",{"key":85,"name":86,"count":11},"rag-generation-context","Rag Generation Context",{"key":8,"name":9,"count":11},{"key":89,"name":90,"count":11},"rag-retrieval","Rag Retrieval",{"key":92,"name":93,"count":11},"rag-retrieval-search","Rag Retrieval Search",{"key":95,"name":96,"count":11},"safety-guardrails","Safety Guardrails",[98,102,105],{"key":99,"name":100,"count":101},"llm-rag","LLM\u002FRAG",450,{"key":103,"name":104,"count":101},"mlops","MLOps",{"key":106,"name":107,"count":101},"python","Python",[109,127,141,155,168,181],{"id":110,"topic":9,"difficulty":111,"body":112,"options":113,"correct_key":118,"explanation":126},"019f667f-d99b-7e9a-819d-e604ec752ba7",1,"Reciprocal Rank Fusion (RRF), iki sıralanmış listeyi her dökümana score(d) = listeler üzerinden toplam 1\u002F(k + rank_i(d)) skoru vererek birleştirir; rank_i(d) dökümanın o listedeki 1'den başlayan sıra pozisyonudur. k sabiti ne işe yarar?",[114,117,120,123],{"key":115,"text":116},"a","Her listeden birleştirilebilecek maksimum döküman sayısını belirler.",{"key":118,"text":119},"b","Üst sıraların etkisini yumuşatır, çok küçük sıralarda skorun patlamasını önler.",{"key":121,"text":122},"c","Birleştirmeden önce BM25 skorlarını cosine similarity skoruna çevirir.",{"key":124,"text":125},"d","Bir dökümanın tutulması için kaç listede aynı anda görünmesi gerektiğini tanımlar.","k, ters çevirmeden önce sıraya eklenir. k olmasaydı sıra 1 için 1\u002F1=1.0 çıkardı — sıra 10'un (1\u002F10=0.1) 10 katı, aşırı büyük bir skor. k (ör. 60) eklenince 1\u002F61 vs 1\u002F70 olur, göreli fark çok küçülür. Yani k, skor eğrisini sıralar arasında yumuşatır, bir listenin en tepesinin birleşik skora tamamen hakim olmasını engeller.",{"id":128,"topic":9,"difficulty":129,"body":130,"options":131,"correct_key":115,"explanation":140},"019f667f-d99c-7ef2-a5bc-865488545b8c",2,"Dense retrieval, D1 dökümanını 1. sıraya koyuyor. Keyword (BM25) retrieval aynı D1'i 2. sıraya koyuyor. k=60 ile RRF kullanılırsa D1'in birleşik skoru (score(d) = 1\u002F(k+rank_dense) + 1\u002F(k+rank_bm25)) nedir?",[132,134,136,138],{"key":115,"text":133},"Yaklaşık 0.0325 (1\u002F61 + 1\u002F62).",{"key":118,"text":135},"Yaklaşık 0.0164 (sadece dense listenin katkısı, 1\u002F61).",{"key":121,"text":137},"Yaklaşık 1.5 (iki ham sıra pozisyonunun ortalaması).",{"key":124,"text":139},"Yaklaşık 0.5 (sıra 1 ve sıra 2'nin ortalanıp [0,1]'e normalize edilmesi).","score(D1) = 1\u002F(60+1) + 1\u002F(60+2) = 1\u002F61 + 1\u002F62 = 0.016393... + 0.016129... = 0.032522..., yani yaklaşık 0.0325. RRF, dökümanın göründüğü her liste için bir terim toplar; ham sıraları ortalamaz, 1.5 veya 0.5'e yakın bir değer üretmez.",{"id":142,"topic":9,"difficulty":143,"body":144,"options":145,"correct_key":121,"explanation":154},"019f667f-d99d-7838-8fed-e0748bef3f06",3,"Dense sıralaması: D1,D2,D3,D4,D5 (pozisyon 1-5). BM25 sıralaması: D3,D1,D5,D2,D4 (pozisyon 1-5). k=60 ile RRF kullanıldığında birleşik skorlar D1=0.032522, D3=0.032266, D2=0.031754, D5=0.031258, D4=0.031010 çıkıyor. Doğru birleşik sıralama (en yüksek skor önce) nedir?",[146,148,150,152],{"key":115,"text":147},"D3, D1, D2, D4, D5 — çünkü D3 BM25'te 1. sıradadır, eşitlikte her zaman keyword-search kazananı öne geçer.",{"key":118,"text":149},"D1, D2, D3, D4, D5 — birleştirme, dense önce listelendiği için dense sıralamasını olduğu gibi korur.",{"key":121,"text":151},"D1, D3, D2, D5, D4 — D1'in sıraları (1,2) toplamı D3'ünkinden (3,1) az da olsa yüksek olduğu için D1 öne geçer.",{"key":124,"text":153},"D3, D5, D1, D2, D4 — D3 için en yüksek skoru ürettiği için BM25'in sıralaması doğrudan kullanılır.","Verilen skorları büyükten küçüğe sıralayınca: 0.032522 (D1) > 0.032266 (D3) > 0.031754 (D2) > 0.031258 (D5) > 0.031010 (D4). Yani birleşik sıra D1, D3, D2, D5, D4'tür. D3 BM25'te #1 olsa da, D1'in hem dense'te #1 hem BM25'te #2 olması (her iki listede de güçlü konum) D3'ün BM25'te #1 ama dense'te sadece #3 olmasından ufak farkla daha yüksek skor verir.",{"id":156,"topic":9,"difficulty":143,"body":157,"options":158,"correct_key":118,"explanation":167},"019f667f-d99e-72c3-b6f1-90fffecf0d44","Bir ekip, BM25 skorlarını (ham aralık kabaca 0-20, sınırsız) doğrudan cosine similarity skorlarıyla (aralık -1 ile 1) basit toplama ile birleştiriyor ve sonuçlar hangi retriever'ın ham sayıları daha büyük üretiyorsa onun baskın çıktığı bir görüntü veriyor. RRF bu başarısızlık modunu neden yaşamaz?",[159,161,163,165],{"key":115,"text":160},"RRF önce BM25 skorlarını öğrenilmiş bir doğrusal eşleme ile cosine similarity'ye çevirir, sonra toplar.",{"key":118,"text":162},"RRF ham skorları bir kenara bırakır, yalnızca her dökümanın her listedeki sırasını kullanır, bu yüzden hiçbir retriever'ın ölçeği baskın olamaz.",{"key":121,"text":164},"RRF toplamadan önce her skoru min-max normalizasyon ile [0,1] aralığına sıkıştırır.",{"key":124,"text":166},"RRF yalnızca iki retriever zaten aynı ölçeği paylaşıyorsa çalışır, yani anlatılan senaryoda RRF de başarısız olurdu.","RRF'in formülü, 1\u002F(k+rank), yalnızca sırayı (1., 2., 3. gibi tam sayı bir pozisyonu) alır, altta yatan skor değerini asla almaz. Her retrieval yöntemi skorlama ölçeği ne olursa olsun doğası gereği bir sıra üretir, bu yüzden RRF ölçek-uyuşmazlığı problemini tamamen atlar — ham BM25 veya cosine sayılarına hiç dokunmaz, dolayısıyla farklı aralıkları birleştirmeyi çarpıtamaz.",{"id":169,"topic":9,"difficulty":129,"body":170,"options":171,"correct_key":124,"explanation":180},"019f667f-d99f-74bc-917f-e4796f7b352a","Aynı iki sıralama kullanılarak D1'in D4'e göre birleşik skoru iki farklı k değerinde hesaplanıyor. k=1'de: D1=0.8333, D4=0.3667 (oran ~2.27x). k=60'ta: D1=0.0325, D4=0.0310 (oran ~1.05x). Bu, k'yi artırmanın etkisi hakkında ne gösterir?",[172,174,176,178],{"key":115,"text":173},"k'yi artırmak RRF'in BM25'i tamamen görmezden gelip yalnızca dense retrieval'a dayanmasını sağlar.",{"key":118,"text":175},"k'yi artırmak her zaman hangi dökümanın birinci sırada biteceğini değiştirir.",{"key":121,"text":177},"k'yi artırmak birleşik skorları toplamı 1 olan gerçek olasılıklara çevirir.",{"key":124,"text":179},"k'yi artırmak sıralar arasındaki skor farklarını yassılaştırır, birleştirmeyi sıra farklarına daha az duyarlı yapar.","k=1'de sıra 1 ile sıra 5 arasındaki fark oransal olarak devasadır (2'ye bölmek vs 6'ya bölmek). k=60'ta her sıraya 60 eklemek aynı farkı 61'e vs 65'e bölmeye küçültür — çok daha küçük göreli fark. Yani büyük k, sıralar arasındaki skor yayılımını sıkıştırır (yassılaştırır); hangi retriever kullanıldığına dokunmaz, olasılık dağılımı üretmez ve bir sıralama değişikliğini garanti etmez.",{"id":182,"topic":9,"difficulty":129,"body":183,"options":184,"correct_key":115,"explanation":193},"019f667f-d99f-7dba-8bbb-1a1b09964e12","RRF, 1\u002F(k+rank)'ı üç listenin tamamı üzerinden toplayarak 2 listeden 3 sıralanmış listeye (ör. dense, BM25 ve recency-boosted bir liste) genişletiliyor. k=60 ve sıralar: A=(1,2,2), B=(2,1,3), C=(3,4,1), D=(4,3,4) olduğunda hesaplanan toplamlar A=0.048652, B=0.048395, C=0.047891, D=0.047123 çıkıyor. Bu, RRF hakkında neyi doğrular?",[185,187,189,191],{"key":115,"text":186},"RRF herhangi sayıda listeye genelleşir — liste başına bir ters-sıra teriminin toplamıdır.",{"key":118,"text":188},"RRF aynı anda tam olarak iki sıralanmış listeyi birleştirebilir; üçlü birleştirme RRF'i art arda iki kez çalıştırmayı gerektirir.",{"key":121,"text":190},"Üç listeyle, skorları iki-listeli RRF ile aynı sayısal aralıkta tutmak için k'nin 3'e bölünmesi gerekir.",{"key":124,"text":192},"Üçüncü bir liste eklemek her dökümanın skorunu her zaman orantılı olarak artırır, bu yüzden sıralama düzeni asla değişmez.","score(d) = sum_i 1\u002F(k+rank_i(d)), kaç sıralanmış liste verilmişse onun üzerinden toplam olarak tanımlanır — formülde ikiyle sınırlayan bir şey yoktur. Burada A, her üç listede de güçlü konumlara (1,2,2) sahip olduğu için 0.048652 ile kazanır; formül ve ortaya çıkan sıra, RRF'in değişiklik yapılmadan N listeye doğal olarak ölçeklendiğini doğrular.",{"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":143,"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":99,"name":100,"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]