hotchpotch's picture
Deploy remote main docs sync
1f41326 verified

NanoCodeRAG

Overview

NanoCodeRAG is the compact CodeRAG-Bench group for code retrieval-augmented generation. It evaluates whether a retriever can find useful programming context before a code-generation model answers a developer request. The group covers four source genres: Python library documentation, online tutorials, compact programming solutions, and Stack Overflow-style posts.

The tasks are all English code retrieval tasks, but they do not have the same retrieval shape. Documentation and tutorials are long explanatory documents, Stack Overflow posts mix problem statements with answers and discussion, and programming solutions are short snippets whose semantics may not repeat the query wording. This makes NanoCodeRAG a source-genre benchmark as much as a code benchmark.

Details

What the Original Group Measures

CodeRAG-Bench: Can Retrieval Augment Code Generation? studies retrieval sources for code-generation tasks, asking whether retrieved programming context can improve generation. NanoCodeRAG packages compact retrieval tasks from that setting. The query is a code-related information need, and the positive document is the library documentation, tutorial, programming solution, or Stack Overflow post that should help answer it.

The group measures practical developer retrieval behavior. A good retriever should find API documentation for library usage, tutorials for procedural tasks, posts for error-oriented or Q&A-style problems, and compact code solutions for implementation prompts.

Subtask Coverage

  • NanoCodeRAGLibraryDocumentationSolutions: API names or short API descriptions retrieve Python library documentation entries.
  • NanoCodeRAGOnlineTutorials: short tutorial or programming-problem titles retrieve long tutorial articles.
  • NanoCodeRAGProgrammingSolutions: natural-language Python prompts retrieve compact solution snippets.
  • NanoCodeRAGStackoverflowPosts: programming questions retrieve Stack Overflow-style posts containing answers, snippets, and discussion.

All four subtasks are single-positive in the current Nano qrels.

Observed Group Profile

The task pages report 800 queries, 800 positive qrels, and 29,664 split-local candidate documents. Queries average 184.36 characters when weighted by query count. NanoCodeRAGLibraryDocumentationSolutions has the longest average query length because some queries include detailed API descriptions, while NanoCodeRAGOnlineTutorials has short title-like queries.

Documents are much longer than in many code retrieval benchmarks: the split-local document-weighted average is 4,129.84 characters. Online tutorials and Stack Overflow posts dominate this length, while ProgrammingSolutions uses short snippets averaging 189.13 characters. This contrast is central to the group: retrieval over long prose-plus-code resources behaves differently from retrieval over compact solution code.

BM25 Difficulty

Using the dataset-provided BM25 candidate columns, NanoCodeRAG has query-weighted BM25 nDCG@10 = 0.4198 and hit@10 = 0.5100. The strongest lexical task is NanoCodeRAGOnlineTutorials (nDCG@10 = 0.7472, hit@10 = 0.8400), followed by NanoCodeRAGStackoverflowPosts (0.6902, 0.7950). Long documents often repeat query terms, API names, and error or topic words.

The weakest task is NanoCodeRAGProgrammingSolutions (nDCG@10 = 0.0138, hit@10 = 0.0250). Short solution snippets may contain little of the natural language prompt, so BM25 rarely finds the correct implementation. Library documentation sits between these extremes: API names help, but documentation entries can be long, nested, or phrased differently from the query.

Training Data That May Help

Useful training data includes non-overlapping CodeRAG-Bench retrieval pairs, API-documentation search pairs, tutorial title-to-article pairs, Stack Overflow question-answer retrieval pairs, and natural-language prompt-to-code solution pairs. Training should preserve source genre, because a single pooled code retrieval objective can overfit to long prose documents and underperform on short implementation snippets.

Training should exclude NanoCodeRAG evaluation queries, qrels, and positive documents. Public Stack Overflow, tutorial, or documentation data should be deduplicated against the evaluation positives when used for supervised training.

Synthetic Data Guidance

Synthetic data should generate both developer requests and source documents in the correct genre. For documentation retrieval, use API signatures, parameter descriptions, examples, and version constraints. For tutorials, generate longer step-by-step articles with code examples. For Stack Overflow-style data, include titles, errors, failed attempts, answers, and accepted-solution cues. For programming-solution retrieval, generate concise prompts paired with correct short implementations.

Do not seed generation with NanoCodeRAG evaluation queries or positive documents. Negatives should share language, APIs, or task type while failing to answer the request or solve the implementation.

Task Summary

Task Retrieval focus Queries Docs Positive qrels BM25 nDCG@10 BM25 hit@10 Query avg chars Doc avg chars
NanoCodeRAGLibraryDocumentationSolutions API or library query to documentation 200 8,683 200 0.2279 0.3800 397.43 2,045.70
NanoCodeRAGOnlineTutorials tutorial title to tutorial article 200 9,997 200 0.7472 0.8400 51.91 5,722.55
NanoCodeRAGProgrammingSolutions programming prompt to solution snippet 200 984 200 0.0138 0.0250 78.28 189.13
NanoCodeRAGStackoverflowPosts programming question to Stack Overflow post 200 10,000 200 0.6902 0.7950 209.83 4,735.02

Dataset Information

Field Value
Nano set NanoCodeRAG
Backing dataset NanoCodeRAG
Hugging Face dataset hakari-bench/NanoCodeRAG
Language en
Category code
Subtasks 4
Total queries 800
Split-local documents 29,664
Positive qrels 800
Positives per query exactly 1.00 for every subtask
Query-weighted BM25 nDCG@10 0.4198
Query-weighted BM25 hit@10 0.5100
Mean query length 184.36 chars, weighted by query count
Mean document length 4,129.84 chars, weighted by split-local document count

Public Sources

Hugging Face Links

Source Reference Table

Title Year Type URL
CodeRAG-Bench: Can Retrieval Augment Code Generation? 2025 benchmark paper https://aclanthology.org/2025.findings-naacl.176/

Machine-Readable Metadata

benchmark_task_group_metadata:
  schema_version: 1
  document_status: reviewed_manual
  nano_set: NanoCodeRAG
  backing_dataset: NanoCodeRAG
  dataset_id: hakari-bench/NanoCodeRAG
  language: en
  category: code
  document_path: docs/benchmark_tasks/NanoCodeRAG/index.md
  source_research:
    primary_source_type: benchmark_paper
    paper_pdf_or_html_checked: true
    no_paper_note: null
  counts:
    tasks: 4
    queries: 800
    split_local_documents: 29664
    positive_qrels: 800
  positives_per_query:
    average: 1.0
    min: 1
    median: 1.0
    max: 1
    multi_positive_tasks: 0
    multi_positive_queries: 0
  text_stats_chars:
    query_mean_weighted_by_queries: 184.3625
    document_mean_weighted_by_documents: 4129.841626299554
  bm25:
    ndcg_at_10_query_weighted: 0.419752935175
    hit_at_10_query_weighted: 0.51
    source: dataset_bm25_column
    strongest_task_by_ndcg_at_10: NanoCodeRAGOnlineTutorials
    weakest_task_by_ndcg_at_10: NanoCodeRAGProgrammingSolutions
  tasks:
    - name: NanoCodeRAGLibraryDocumentationSolutions
      path: docs/benchmark_tasks/NanoCodeRAG/NanoCodeRAGLibraryDocumentationSolutions.md
      retrieval_focus: api_or_library_query_to_documentation
      queries: 200
      documents: 8683
      positive_qrels: 200
      bm25_ndcg_at_10: 0.2279
      bm25_hit_at_10: 0.38
    - name: NanoCodeRAGOnlineTutorials
      path: docs/benchmark_tasks/NanoCodeRAG/NanoCodeRAGOnlineTutorials.md
      retrieval_focus: tutorial_title_to_tutorial_article
      queries: 200
      documents: 9997
      positive_qrels: 200
      bm25_ndcg_at_10: 0.7472
      bm25_hit_at_10: 0.84
    - name: NanoCodeRAGProgrammingSolutions
      path: docs/benchmark_tasks/NanoCodeRAG/NanoCodeRAGProgrammingSolutions.md
      retrieval_focus: programming_prompt_to_solution_snippet
      queries: 200
      documents: 984
      positive_qrels: 200
      bm25_ndcg_at_10: 0.0138
      bm25_hit_at_10: 0.025
    - name: NanoCodeRAGStackoverflowPosts
      path: docs/benchmark_tasks/NanoCodeRAG/NanoCodeRAGStackoverflowPosts.md
      retrieval_focus: programming_question_to_stackoverflow_post
      queries: 200
      documents: 10000
      positive_qrels: 200
      bm25_ndcg_at_10: 0.6902
      bm25_hit_at_10: 0.795
  learning:
    leakage_note: exclude NanoCodeRAG evaluation queries, qrels, and positive documents; deduplicate public documentation, tutorial, and Stack Overflow data before training
    useful_training_data:
      - CodeRAG-Bench retrieval pairs
      - API documentation search pairs
      - tutorial title-to-article pairs
      - Stack Overflow question-answer retrieval pairs
      - natural-language prompt-to-code solution pairs
    synthetic_data:
      document_generation: documentation pages, tutorials, Stack Overflow posts, and compact solution snippets with realistic APIs and code
      question_generation: developer requests, API queries, tutorial titles, errors, and implementation prompts grounded in the source document
      answerability: positives must help solve the programming request or supply the needed code context
    multi_positive_training: single_positive_question_document_focus
  links:
    nano_dataset: https://huggingface.co/datasets/hakari-bench/NanoCodeRAG
    source_urls:
      - label: CodeRAG-Bench ACL Anthology
        url: https://aclanthology.org/2025.findings-naacl.176/
  references:
    - title: "CodeRAG-Bench: Can Retrieval Augment Code Generation?"
      url: https://aclanthology.org/2025.findings-naacl.176/
      year: 2025
      doi: 10.18653/v1/2025.findings-naacl.176
      is_paper: true
      source_confidence: definitive_paper_link