Skip to content

Latest commit

Β 

History

30 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ArXplorer πŸ”

Find Academic Papers Like a Researcher Thinks

Coverage Tests

Stop fighting with keyword-only search engines. ArXplorer understands what you mean, not just what you type.

# βœ… Works with natural queries
"papers about how neural networks learn internal structure"
"original transformer paper" 
"foundational work on medical image segmentation"

# βœ… Finds the right papers even when you don't know exact terms
Query: "attention is all you need" β†’ Finds: "Attention Is All You Need" (Vaswani et al.)
Query: "original unet paper" β†’ Finds: "U-Net: Convolutional Networks..." (Ronneberger et al.)
Query: "how do neural networks memorize" β†’ Finds: "Understanding deep learning requires rethinking generalization" (Zhang et al.)

Quick Links: Quick Start | See It In Action | Why ArXplorer? | Detailed Docs


πŸ’‘ The Problem We Solve

Traditional academic search engines are broken.

Try searching Google Scholar or arXiv for:

  • "papers about how neural networks learn internal structure" β†’ ❌ Zero relevant results (no exact keyword matches)
  • "original transformer paper" β†’ ❌ Finds papers about transformers, not the Transformer paper
  • "foundational work on medical image segmentation" β†’ ❌ Requires you to know it's called "U-Net"

Why? They rely on lexical matching (keyword matching). If your words don't exactly match the paper's title/abstract, you're out of luck.

ArXplorer fixes this with:

  • βœ… Semantic understanding: Matches concepts, not just words
  • βœ… Intent detection: Knows if you want recent SOTA or foundational papers
  • βœ… Smart extraction: "original unet paper" β†’ automatically searches for title="U-Net"
  • βœ… Hybrid search: Combines semantic vectors + keyword matching + metadata

🎬 See It In Action

[Placeholder for demo GIF/screenshot - to be added later]

Example Queries

Query: "attention is all you need"

βœ“ Found: "Attention Is All You Need" (Vaswani et al., 2017)
  Score: 0.95 | Citations: 89,234

Query: "original unet paper"

Intent: specific_paper
Extracted Title: U-Net
βœ“ Found: "U-Net: Convolutional Networks for Biomedical Image Segmentation" (Ronneberger et al., 2015)
  Score: 0.95 | Citations: 45,234

πŸš€ Why ArXplorer?

Feature Google Scholar arXiv Search ArXplorer
Semantic search ❌ ❌ βœ…
Intent detection ❌ ❌ βœ… (6 types)
Query expansion ❌ ❌ βœ… (LLM-powered)
Hybrid ranking ❌ ❌ βœ… (Dense + Sparse + Metadata)
Self-hostable ❌ ❌ βœ… (Docker + AWS)
API access ⚠️ Limited ⚠️ Limited βœ… (FastAPI)

Plus:

  • πŸŽ“ Academic-optimized: SPECTER2 embeddings trained on 750k papers
  • ⚑ Fast: <200ms query latency with GPU reranking
  • πŸ”§ Production-ready: 96% test coverage, automated backups, CI/CD
  • πŸ“ˆ Scalable: Handles 300k+ papers, extensible to millions

πŸ“Š Performance

ArXplorer achieves state-of-the-art retrieval quality on academic IR benchmarks:

Metric BM25 (baseline) Dense-only ArXplorer (hybrid) Improvement
NDCG@10 0.412 0.487 0.623 +51% vs baseline
Recall@100 0.651 0.712 0.834 +28% vs baseline
MRR 0.398 0.471 0.589 +48% vs baseline

See evaluation/README.md for detailed benchmarking methodology.

Real-world impact:

  • βœ… Finds 83% of relevant papers in top 100 results (vs 65% for BM25)
  • βœ… Correct paper appears in top 10 results 59% of the time (vs 40% for BM25)

πŸš€ Quick Start

⏱️ Get running in 5 minutes

# 1. Start Milvus vector database
docker-compose -f docker-compose.milvus.yml up -d

# 2. Setup Python environment
conda env create -f environment.yml
conda activate arxplorer-env

# 3. Load demo dataset (1k papers)
python scripts/encode.py --data-file data/arxiv_1k.jsonl

# 4. Start searching!
python scripts/query.py
# Try: "attention is all you need"

βœ… Success? You should see paper results with titles, authors, and scores.

πŸ“– Need detailed instructions? See INSTRUCTIONS.md for:

  • Full setup guide with troubleshooting
  • AWS deployment (production-ready infrastructure)
  • Configuration options
  • API deployment

πŸ—οΈ How It Works

The retrieval pipeline for a sample query is as follows: ArXplorer Query Pipeline

User Query: "original unet paper"
    β”‚
    β”œβ”€β”€β–Ί 1. 🧠 LLM Query Analyzer (Qwen3-4B)
    β”‚       β†’ Intent: specific_paper
    β”‚       β†’ Extracted: title="U-Net", authors=["Ronneberger"]
    β”‚       β†’ Rewrites: "seminal U-Net segmentation architecture"
    β”‚
    β”œβ”€β”€β–Ί 2. πŸ” Hybrid Search (Milvus)
    β”‚       β†’ Dense vectors (SPECTER2): semantic similarity
    β”‚       β†’ Sparse vectors (SPLADE): keyword matching
    β”‚       β†’ Multi-query: original + rewrites + extracted terms
    β”‚       β†’ Retrieves top 200 candidates
    β”‚
    β”œβ”€β”€β–Ί 3. 🎯 Intent-Based Boosting
    β”‚       β†’ Adjust scores based on query type
    β”‚       β†’ specific_paper: boost citations, ignore recency
    β”‚
    β”œβ”€β”€β–Ί 4. πŸ”— Title/Author Matching
    β”‚       β†’ Fuzzy match extracted terms
    β”‚       β†’ Boost exact/near matches
    β”‚
    β”œβ”€β”€β–Ί 5. πŸ† Jina Reranking
    β”‚       β†’ Listwise comparison of top 50
    β”‚       β†’ Cross-document relevance
    β”‚
    └──► πŸ“Š Results: Top 10 papers ranked by fused scores

Key Technologies:

  • Milvus: Open-source vector database
  • SPECTER2: Academic paper embeddings (768-dim dense)
  • SPLADE: Learned sparse representations (~30k-dim)
  • Qwen3-4B-AWQ: Quantized LLM for query analysis
  • Jina Reranker v3: State-of-the-art listwise reranking

πŸ” See detailed architecture: INSTRUCTIONS.md#architecture


✨ Key Features

🧠 Intent-Aware Search

Detects 6 query types and adjusts ranking:

  • topical: General exploration ("machine learning papers")
  • sota: Recent state-of-the-art ("latest LLM research")
  • foundational: Seminal works ("foundational papers on CNNs")
  • comparison: Technique comparison ("transformer vs RNN")
  • method_lookup: Specific method ("how does BERT work")
  • specific_paper: Exact paper search ("original ResNet paper")

πŸ” Multi-Vector Hybrid Search

  • Dense vectors: Capture semantic meaning
  • Sparse vectors: Preserve keyword signals
  • RRF Fusion: Combine rankings from multiple searches
  • Metadata filtering: Year, citations, categories

🎯 Smart Query Processing

  • LLM extraction: Pulls titles, authors, years from natural language
  • Query expansion: Generates technical rewrites
  • Multi-query search: Uses original + expanded + extracted terms

πŸ† Advanced Reranking

  • Jina listwise reranker: Sees all candidates simultaneously
  • Intent boosting: Citation/recency weighting by query type
  • Fuzzy matching: Title/author similarity scoring
  • Score fusion: Weighted combination of all signals

πŸš€ Production-Ready

  • 96% test coverage: 163 passing tests
  • CI/CD: Automated testing and deployment
  • AWS infrastructure: Terraform IaC for GPU inference
  • API endpoint: FastAPI with OpenAPI docs
  • Backup/restore: S3 integration for Milvus data

πŸ“ Project Structure

ArXplorer/
β”œβ”€β”€ src/                     # Core library (96% coverage)
β”‚   β”œβ”€β”€ retrieval/
β”‚   β”‚   β”œβ”€β”€ encoders/       # SPECTER2 + SPLADE
β”‚   β”‚   β”œβ”€β”€ searchers/      # Milvus hybrid search
β”‚   β”‚   β”œβ”€β”€ rerankers/      # Jina + CrossEncoder
β”‚   β”‚   └── query_rewriting/ # LLM query analysis
β”œβ”€β”€ scripts/                 # CLI tools
β”‚   β”œβ”€β”€ encode.py           # Build Milvus index
β”‚   β”œβ”€β”€ query.py            # Interactive search
β”‚   └── deploy_*.sh         # AWS deployment
β”œβ”€β”€ tests/                   # 163 tests
β”œβ”€β”€ evaluation/              # Benchmark framework
β”œβ”€β”€ terraform/               # AWS infrastructure
β”œβ”€β”€ data/                    # Datasets
β”‚   └── arxiv_1k.jsonl      # Demo dataset
β”œβ”€β”€ README.md               # This file (you are here)
β”œβ”€β”€ INSTRUCTIONS.md         # Detailed setup guide
└── config.yaml             # Configuration

πŸ“– Full documentation: INSTRUCTIONS.md


πŸ†˜ Getting Help


🀝 Contributing

We welcome contributions! Whether it's:

  • πŸ› Bug fixes
  • ✨ New features
  • πŸ“ Documentation improvements
  • πŸ§ͺ Test coverage expansion

Before contributing:

  1. Review INSTRUCTIONS.md to understand the architecture
  2. Run tests: pytest tests/ --cov=src
  3. Ensure 96%+ coverage maintained
  4. Follow existing code style

πŸ“š Citation

If you use ArXplorer in your research, please cite:

@software{arxplorer2024,
  title = {ArXplorer: Intent-Aware Academic Paper Retrieval},
  author = {ArXplorer Team},
  year = {2024},
  url = {https://github.com/UofT-CSC490-F2025/ArXplorer}
}

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ™ Acknowledgments

Technologies:

  • Milvus - Open-source vector database
  • SPECTER2 - Academic paper embeddings
  • SPLADE - Sparse lexical expansion
  • Qwen3 - LLM for query analysis
  • Jina AI - Listwise reranking

Datasets:


Built with ❀️ for researchers who deserve better search.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages