[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en:ai-engineer\u002Frag-evaluation":4,"config":189},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-evaluation","Rag Evaluation","en",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,82,85,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":8,"name":9,"count":11},{"key":83,"name":84,"count":11},"rag-generation-context","Rag Generation Context",{"key":86,"name":87,"count":11},"rag-reranking-fusion","Rag Reranking Fusion",{"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,140,154,164,176],{"id":110,"topic":9,"difficulty":111,"body":112,"options":113,"correct_key":118,"explanation":126},"019f667f-d96c-72c7-8ecf-e4eaecb3e45f",1,"In RAG retrieval evaluation, what does recall@k measure?",[114,117,120,123],{"key":115,"text":116},"a","Fraction of the top-k retrieved chunks that are relevant",{"key":118,"text":119},"b","Fraction of relevant chunks appearing in the top-k results",{"key":121,"text":122},"c","Whether the single highest-ranked chunk is relevant",{"key":124,"text":125},"d","The rank position of the first relevant chunk","Recall@k = (relevant chunks found in top-k) \u002F (total relevant chunks that exist), so it measures coverage of the full relevant set (b). Fraction of top-k that are relevant is precision@k, not recall@k (a is wrong). Checking only the top-1 chunk describes hit@1, a different metric (c is wrong). The rank of the first relevant chunk is the basis of MRR, not recall@k (d is wrong).",{"id":128,"topic":9,"difficulty":111,"body":129,"options":130,"correct_key":115,"explanation":139},"019f667f-d96d-76f7-ad47-c35c326dafed","In RAG retrieval evaluation, what does precision@k measure?",[131,133,135,137],{"key":115,"text":132},"Fraction of the k retrieved chunks that are relevant",{"key":118,"text":134},"Fraction of all relevant chunks retrieved in the top-k",{"key":121,"text":136},"Reciprocal of the rank of the first relevant chunk",{"key":124,"text":138},"Whether any relevant chunk appears in the top-k","Precision@k = (relevant chunks among the retrieved k) \u002F k, so it measures how 'clean' the retrieved set is (a). Coverage of all relevant chunks in the top-k describes recall@k, not precision@k (b is wrong). Reciprocal rank of the first relevant chunk is MRR's building block (c is wrong). A binary yes\u002Fno on whether any relevant chunk appears describes hit@k (d is wrong).",{"id":141,"topic":9,"difficulty":142,"body":143,"options":144,"correct_key":115,"explanation":153},"019f667f-d96e-7568-98e3-ae234db8c0b0",2,"A vector search returns this ranked list of chunk IDs for a query:\n```python\nretrieved = [\"d3\", \"d1\", \"d7\", \"d2\", \"d9\"]\nrelevant = {\"d1\", \"d2\", \"d5\"}  # ground-truth relevant set, size 3\n```\nWhat is recall@2 (using only the top 2 retrieved items)?",[145,147,149,151],{"key":115,"text":146},"0.33",{"key":118,"text":148},"0.67",{"key":121,"text":150},"0.50",{"key":124,"text":152},"1.00","Top-2 = [\"d3\",\"d1\"]. Only d1 is in the relevant set, so hits = 1. recall@2 = hits \u002F |relevant| = 1\u002F3 ≈ 0.33 (a). d2 only appears at rank 4, outside the top 2, so 2\u002F3 overcounts (b is wrong). 0.50 divides by k instead of by the relevant-set size, which is the precision@k formula, not recall (c is wrong). d5 never appears in the retrieved list at all, so recall never reaches 1.00 (d is wrong).",{"id":155,"topic":9,"difficulty":142,"body":156,"options":157,"correct_key":118,"explanation":163},"019f667f-d96f-7c6c-a6a7-11fdeda9eca1","Using the same setup:\n```python\nretrieved = [\"d3\", \"d1\", \"d7\", \"d2\", \"d9\"]\nrelevant = {\"d1\", \"d2\", \"d5\"}\n```\nWhat is precision@2?",[158,159,160,161],{"key":115,"text":146},{"key":118,"text":150},{"key":121,"text":152},{"key":124,"text":162},"0.20","Top-2 = [\"d3\",\"d1\"]; 1 of these 2 items is relevant, so precision@2 = 1\u002F2 = 0.50 (b). Dividing by 3 (the relevant-set size) instead of by k=2 gives recall@2, not precision (a is wrong). Precision isn't inherently 1.00 just because a chunk found so far is correct — it's still 1 relevant out of 2 retrieved (c is wrong). Dividing by 5 mixes in items outside the k=2 window being evaluated (d is wrong).",{"id":165,"topic":9,"difficulty":142,"body":166,"options":167,"correct_key":124,"explanation":175},"019f667f-d970-7a10-a131-5ad2c794f956","Same retrieved list and relevant set:\n```python\nretrieved = [\"d3\", \"d1\", \"d7\", \"d2\", \"d9\"]\nrelevant = {\"d1\", \"d2\", \"d5\"}\n```\nWhat is hit@1 (1 if at least one relevant chunk is in the top 1, else 0)?",[168,170,171,173],{"key":115,"text":169},"1",{"key":118,"text":146},{"key":121,"text":172},"0.2",{"key":124,"text":174},"0","Top-1 = [\"d3\"]. d3 is not in {\"d1\",\"d2\",\"d5\"}, so hit@1 = 0 (d). hit@k is a binary indicator per query, not a fraction, so it can't equal 0.33 (b is wrong). hit@1 only looks at the top-1 item, not the whole ranking, so appearing later doesn't count (c is wrong), and there's no notion of a 'document family' bonus in this metric (a is wrong).",{"id":177,"topic":9,"difficulty":111,"body":178,"options":179,"correct_key":121,"explanation":188},"019f667f-d972-7065-86ef-642418565c10","How does hit@k fundamentally differ from recall@k?",[180,182,184,186],{"key":115,"text":181},"hit@k is always numerically larger than recall@k",{"key":118,"text":183},"hit@k needs a labeled relevant set, recall@k does not",{"key":121,"text":185},"hit@k is binary per query; recall@k is a coverage fraction",{"key":124,"text":187},"hit@k is computed after generation; recall@k before retrieval","hit@k answers 'was at least one relevant chunk retrieved?' (0 or 1), while recall@k answers 'what fraction of all relevant chunks was retrieved?' — a continuous coverage measure (c). Neither metric is systematically larger than the other; it depends on the data (a is wrong). Both metrics require the same labeled relevant set to compute (b is wrong). Both are retrieval-stage metrics computed from the ranked list alone, before any generation happens (d is wrong).",{"fields":190,"seniorities":368,"interview_shapes":369,"locales":374,"oauth":376,"question_count":379,"coach_enabled":380,"jd_match_enabled":380},[191,214,234,251,275,282,301,320,342,349,355,362],{"key":192,"name_tr":193,"name_en":193,"sort":111,"specializations":194},"backend","Backend",[195,198,201,202,205,208,211],{"key":196,"name":197,"field":192},"general","Genel",{"key":199,"name":200,"field":192},"go","Go",{"key":106,"name":107,"field":192},{"key":203,"name":204,"field":192},"java","Java",{"key":206,"name":207,"field":192},"csharp","C#\u002F.NET",{"key":209,"name":210,"field":192},"nodejs","Node.js",{"key":212,"name":213,"field":192},"php","PHP",{"key":215,"name_tr":216,"name_en":216,"sort":142,"specializations":217},"frontend","Frontend",[218,219,222,225,228,231],{"key":196,"name":197,"field":215},{"key":220,"name":221,"field":215},"javascript","JavaScript",{"key":223,"name":224,"field":215},"typescript","TypeScript",{"key":226,"name":227,"field":215},"react","React",{"key":229,"name":230,"field":215},"vue","Vue",{"key":232,"name":233,"field":215},"angular","Angular",{"key":235,"name_tr":236,"name_en":236,"sort":237,"specializations":238},"fullstack","Fullstack",3,[239,240,241,242,243,244,245,246,247,248,249,250],{"key":196,"name":197,"field":235},{"key":199,"name":200,"field":192},{"key":106,"name":107,"field":192},{"key":203,"name":204,"field":192},{"key":206,"name":207,"field":192},{"key":209,"name":210,"field":192},{"key":212,"name":213,"field":192},{"key":220,"name":221,"field":215},{"key":223,"name":224,"field":215},{"key":226,"name":227,"field":215},{"key":229,"name":230,"field":215},{"key":232,"name":233,"field":215},{"key":252,"name_tr":253,"name_en":253,"sort":254,"specializations":255},"devops-cloud","DevOps \u002F Cloud",4,[256,257,260,263,266,269,272],{"key":196,"name":197,"field":252},{"key":258,"name":259,"field":252},"aws","AWS",{"key":261,"name":262,"field":252},"gcp","GCP",{"key":264,"name":265,"field":252},"azure","Azure",{"key":267,"name":268,"field":252},"kubernetes","Kubernetes",{"key":270,"name":271,"field":252},"terraform","Terraform",{"key":273,"name":274,"field":252},"linux","Linux",{"key":5,"name_tr":6,"name_en":6,"sort":276,"specializations":277},5,[278,279,280,281],{"key":196,"name":197,"field":5},{"key":106,"name":107,"field":5},{"key":99,"name":100,"field":5},{"key":103,"name":104,"field":5},{"key":283,"name_tr":284,"name_en":285,"sort":286,"specializations":287},"database","Veritabanı","Database",6,[288,289,292,295,298],{"key":196,"name":197,"field":283},{"key":290,"name":291,"field":283},"postgresql","PostgreSQL",{"key":293,"name":294,"field":283},"mysql","MySQL",{"key":296,"name":297,"field":283},"mongodb","MongoDB",{"key":299,"name":300,"field":283},"redis","Redis",{"key":302,"name_tr":303,"name_en":304,"sort":305,"specializations":306},"mobile","Mobil","Mobile",7,[307,308,311,314,317],{"key":196,"name":197,"field":302},{"key":309,"name":310,"field":302},"ios-swift","iOS (Swift)",{"key":312,"name":313,"field":302},"android-kotlin","Android (Kotlin)",{"key":315,"name":316,"field":302},"flutter","Flutter",{"key":318,"name":319,"field":302},"react-native","React Native",{"key":321,"name_tr":322,"name_en":323,"sort":324,"specializations":325},"security","Güvenlik","Security",8,[326,327,330,333,336,339],{"key":196,"name":197,"field":321},{"key":328,"name":329,"field":321},"appsec","AppSec",{"key":331,"name":332,"field":321},"offensive-pentest","Offensive \u002F Pentest",{"key":334,"name":335,"field":321},"cloud-security","Cloud Security",{"key":337,"name":338,"field":321},"devsecops","DevSecOps",{"key":340,"name":341,"field":321},"blue-team-incident","Blue Team \u002F Incident",{"key":343,"name_tr":344,"name_en":345,"sort":346,"specializations":347},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[348],{"key":196,"name":197,"field":343},{"key":350,"name_tr":351,"name_en":351,"sort":352,"specializations":353},"data-engineer","Data Engineer",10,[354],{"key":196,"name":197,"field":350},{"key":356,"name_tr":357,"name_en":358,"sort":359,"specializations":360},"game-dev","Oyun Geliştirme","Game Development",11,[361],{"key":196,"name":197,"field":356},{"key":363,"name_tr":364,"name_en":364,"sort":365,"specializations":366},"ml-engineer","ML Engineer",12,[367],{"key":196,"name":197,"field":363},[14,15,16],{"junior":370,"mid":372,"senior":373},{"questions":371,"median_sec":3},20,{"questions":371,"median_sec":3},{"questions":371,"median_sec":3},[375,10],"tr",[377,378],"google","github",21750,true]