BM25 + vector hybrid search. One-line install. Zero config.
Your AI assistant finally understands your entire codebase.
pipx install index1
index1 tested in real-world Claude grep! Comparison of index1 + Claude grep vs Claude grep only:
Native search tools return too many results, flooding your AI's context window. index1 returns just what matters.
BM25 full-text + vector semantic search with Reciprocal Rank Fusion. Finds what keyword search misses.
Everything in one SQLite file. FTS5 + sqlite-vec. No external database, no Docker, no services to manage.
Dynamic weight tuning for Chinese/Japanese/Korean queries (BM25=0.2, Vector=0.8). Built-in jieba tokenizer.
Structure-aware splitting: headings for Markdown, AST for Python, regex patterns for Rust/JS/TS. 5 language-specific chunkers.
Two-tier query cache with 10-min TTL. Repeated queries return in < 1ms. Cache hit rate 70%+ in typical sessions.
Ollama not installed? Falls back to BM25-only search automatically. No crash, no error, still works.
From install to AI-powered search in under 2 minutes.
# 1. Install pipx install index1 # 2. Index your project index1 index ./src ./docs # 3. Search (or let your AI agent search via MCP) index1 search "how does authentication work"
{
"mcpServers": {
"index1": {
"type": "stdio",
"command": "index1",
"args": ["serve"]
}
}
}
MCP-native. Plug into any AI coding assistant that supports the Model Context Protocol.
Benchmarked on 17,725 chunks / 1,707 documents / Apple M2.
The Problem:
grep "config" returns 5,000-35,000 tokens.
index1 search "config" returns ~400 tokens of the most relevant results.
Simple, local, no external services required.
Claude Code ──▶ MCP Server (stdio) │ CLI ────────────▶ Query Engine ──▶ SQLite │ ├── FTS5 (BM25) Web UI ─────────┘ └── sqlite-vec (vector) │ Ollama Embedding (optional)
Single SQLite file at ~/.claude-index1/knowledge.db. Portable, backupable, zero maintenance.
BM25 + vector with RRF (k=60). CJK-aware weight tuning. Cosine similarity reranking.
Ollama-powered. Supports nomic-embed-text, bge-m3, all-minilm. Or runs BM25-only without it.
Ollama is optional but recommended. Pick a model that fits your needs.
| Model | Dim | Disk | RAM | Best For |
|---|---|---|---|---|
all-minilm |
384 | ~45 MB | ~250 MB | English, low-resource machines |
nomic-embed-text default |
768 | ~270 MB | ~500 MB | English + Chinese, general use |
bge-m3 |
1024 | ~1.2 GB | ~1.2 GB | Chinese-optimized, 100+ languages |
One command. Works in 2 minutes. Free and open source.