An open-source vertical search engine for developers, researchers, and AI practitioners.
We don't compete in data. We compete in depth.
--------->COMING<---------
Google is excellent for general web search.
But developers often need to search:
• GitHub Issues • Pull Requests • Documentation • Research Papers • PDFs • API References
NexaSearch brings these sources together into one search experience.
-
Hybrid Search (BM25 + Vector)
-
Research Paper Search
-
GitHub Search
-
Documentation Search
-
PDF Search
-
Live Crawling
-
Semantic Retrieval
-
Cross Encoder Reranking
-
Open Source
- Python
- CSS/JS
- Crawler
- RAG
NexaSearch/
├── .env.example
├── .gitignore
├── app_streamlit.py
├── cli.py
├── pyproject.toml
├── readme.md
├── uv.lock
├── cleaner/
│ └── distil_robert.py
├── data/
│ ├── index/
│ ├── nexasearch.db
│ └── raw/
│ ├── json/
│ ├── markdown/
│ ├── pdf/
│ └── sitemap/
├── doc/
├── evals/
│ └── evaluator.py
├── sources/
│ └── sources.py
├── src/
│ ├── Indexing/
│ │ ├── ranking.py
│ │ └── vector_index.py
│ ├── chunking/
│ │ └── chunker.py
│ ├── config/
│ │ └── settings.py
│ ├── crawler/
│ │ ├── crawler.py
│ │ ├── robots.py
│ │ └── sitemap.py
│ ├── embedding/
│ │ └── embedder.py
│ ├── pipeline/
│ │ └── orchestrator.py
│ ├── processing/
│ │ ├── cleaner.py
│ │ └── deduplication.py
│ ├── quality/
│ │ └── quality_filter.py
│ ├── search/
│ │ └── engine.py
│ ├── seeder/
│ │ └── url_seeder.py
│ └── storage/
│ └── duckdb_store.py
└── tests/
├── test_chunker.py
├── test_cleaner.py
├── test_deduplication.py
├── test_indexing.py
├── test_lsh.py
└── test_quality.py
Seed Sources
│
▼
Crawl Pipeline
│
▼
Data Processing
│
▼
Hybrid Index
│
▼
Search
│
▼
Top 50
|
AI Answer (Optional)
-> For the complete system design follow docs/architecture.md
Fork this repository to your GitHub account by clicking the Fork button.
Clone your fork to your local machine.
git clone https://github.com/<niteshver>/NexaSearch.gitcd NexaSearchLinux / macOS
python3 -m venv .venv
source .venv/bin/activateWindows
python -m venv .venv
.venv\Scripts\activateusing uv:
uv syncCreate a .env file in the project root and add the required configuration.
# Example
OPENAI_API_KEY=your_api_keyexample