Today we're releasing Torque 0.6.0, our high-performance search engine built in Rust. It's our biggest release yet: conversational and natural-language search backed by any LLM, a Model Context Protocol server so AI agents can query your data directly, curation and analytics, crash-safe persistence, and a new pure-Rust bitmap engine that makes it the fastest Torque so far. You can try it right now on a live dataset of 3.4 million legal entities at truespar.com/torque.
It's also the first Torque release with a breaking change to the on-disk format - existing collections need a one-time re-import. The details are at the end.
Search that understands plain language
Two features let you put a language model in front of your index without writing any glue code, both wire-compatible with Typesense:
- Conversational search runs retrieval-augmented generation over your top hits. Follow-up questions are rewritten into a standalone query and retrieval re-runs, history is stored durably per conversation, and answers can stream token by token over server-sent events.
- Natural-language search translates a free-form question into structured search parameters - query, filters, and sort - before the search runs. Torque samples real facet values from your collection into the prompt, so the model filters on values that actually exist instead of inventing them.
Both work against any OpenAI-compatible endpoint, local or hosted.
Curation and analytics
Curation sets let you shape results without redeploying: a rule matches on the query, a filter, a tag, or a time window, and can pin or hide documents, inject a filter, override the sort, or rewrite the query. Analytics rules capture popular and no-result queries, accumulate weighted counters on documents, and keep a queryable event log, then flush aggregates back into a collection you can search. Both are bound per collection, the same way synonyms are.
An MCP server, built in
Torque now implements the Model Context Protocol. Point Claude Desktop, Claude Code, or any MCP-capable client at POST /api/mcp and it can work with your search data through nine tools - search, multi_search, collections, schema, get_document, create_collection, upsert_document, delete_document, and delete_collection. It authenticates with the same API keys as the HTTP API, honors the server's drop-collection setting, and is enabled in every shipped 0.6.0 binary.
Crash-safe persistence
Collections now persist as generation-scoped segment sets. Each save writes into a fresh generation directory, publishes the manifest last with an atomic replace, and only then prunes the old generation - so a crash in the middle of a save can never leave a mix of old and new files that double-counts documents on restart.
A pure-Rust bitmap engine
Torque still stores its inverted-index posting lists as Roaring bitmaps - the change is the library behind them. We moved from CRoaring, the C implementation reached through Rust bindings, to roaring-rs, a pure-Rust one. CRoaring aborts the process on an allocation failure and carries a hundred-plus live assertions - fine on a normal server, but enough to halt the whole machine on Silicon, our unikernel build. roaring-rs fails with catchable errors and runs with no operating system underneath it.
Swapping the bitmap engine is what makes 0.6.0's on-disk format incompatible with older collections. It also gave us room to make queries faster: k-way bitmap unions in numeric range filters, group counting that never materializes the result set, and a stem-prefix pre-filter in highlighting all landed with the migration, and every query pattern now beats its pre-migration number.
Faster than ever
On a real-world 309K-document dataset - 67 fields with nested objects, geo, and facets - measured over HTTP on the same hardware, 0.6.0 is the fastest Torque yet:
- 9.5x faster than Typesense on the geometric mean of 15 query patterns at a single client, up from 8.1x in 0.5.0, and ahead on every pattern.
- 7.4x faster than Quickwit across the patterns it supports.
- 69,000 documents per second ingested over the binary TCP protocol.
Try it on real data
We put 0.6.0 in front of the GLEIF Legal Entity Identifier golden copy - every registered legal entity in the world, about 3.4 million of them. The whole file is redownloaded and reingested every day by streaming it straight into a fresh collection over the binary protocol and hot-swapping the live alias with zero downtime, start to finish in a few minutes.
Search it yourself at truespar.com/torque: type a company name, an LEI, or a city for instant autocomplete, or run the sample queries to see the raw JSON next to a rendered result. Everything on the page is live from Torque.
Upgrade
0.6.0 changes the on-disk index format, so this is not an in-place upgrade: collections written by 0.5.0 or earlier cannot be loaded and must be rebuilt with a fresh import. Plan a re-import window before you deploy. The API and all five client SDKs - Python, Node.js, Go, Java, and .NET - are unchanged; only the persisted files differ.
Download the latest release from the Torque product page, or reach out for a demo.