I ran ripgrep, Serena, claude-context and my own tool on the same repo
Description and use
Comparison of ripgrep, Serena, claude‑context, and Semlith on Flask 3.1.3: ripgrep fastest for exact matches, Serena excels at symbol‑level edits, claude‑context needs long setup and may index incompletely, Semlith balances speed and semantic relevance.
Problem
Compare how different code‑search tools perform on the same repository when answering the same query.
Outcome
ripgrep was fastest for exact identifier queries; Serena excelled at symbol‑level edits; claude‑context required the longest setup and had incomplete indexing; Semlith balanced speed and semantic relevance, returning relevant code and documentation.
Workflow
- Clone Flask 3.1.3 repo
- Run ripgrep search with and without identifier
- Set up Serena environment and index repository
- Query Serena with identifier and regex
- Set up claude‑context with local Milvus and Ollama
- Run claude‑context indexing and search
- Run Semlith index and search
- Compare results for specific queries
- Measure setup times and search accuracy
Evidence
ripgrep 15.2.0, Serena 2.1.0, claude-context 0.1.15 (with Milvus 3.0.3 and Ollama running nomic-embed-text) and semlith 0.50.0.
Setup on Flask 3.1.3 on an M1 MacBook Air with 8 GB.
Serena gives the agent symbol tools backed by real language servers, over 40 languages.
claude-context is Zilliz's MCP server. It chunks code, embeds it and stores the vectors in Milvus, with hybrid search on top.
Semlith index .
indexed 211 files (2778 chunks, 5 images) in 84.3s
- Record date: 2026-11-01T21:44:14.506Z