vector-search — Claude Code skill: what it does, how to install
Runs vector search over corpora via HNSW embeddings and routes queries across up to 11 hot patterns in WASM.
npx skills add ruvnet/ruflo --skill vector-search -a claude-codeWhat vector-search does
The skill includes two separate search mechanisms. For corpora above 500 items, it relies on @claude-flow/memory HNSW native bindings via embeddings_* tools. Benchmarks show a 3.2×–4.7× speedup at 5,000 vectors compared to brute-force scans with recall@10 around 0.99.
For collections with 5,000 vectors or more, RaBitQ 1-bit quantization reduces memory consumption by 32×. The embeddings_rabitq_search call returns only candidate IDs, so full-precision reranking through embeddings_search remains the caller's duty. Below 5,000 vectors, rebuilding the index costs more than it saves.
The second path uses a WASM router with a hard ceiling of 11 patterns for sub-millisecond intent classification. Hierarchical data like code trees can also be mapped into Poincare ball space via embeddings_hyperbolic.
What it helps with
- search text corpora with over 500 documents
- cut vector index memory consumption by 32× using RaBitQ
- route queries through up to 11 hot patterns via WASM
- index hierarchical code structures using Poincare ball embeddings
Example prompts for the agent
- Search the memory index for 'authentication patterns' with limit 10
- Build a RaBitQ quantized index and find candidate vectors for 'caching strategy'
- Route this incoming query against hot patterns using ruvllm_hnsw
How to install vector-search
1Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill vector-search -a claude-code2Manually: put the files in place
~/.claude/skills/vector-search/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/vector-search/
1Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill vector-search -a codex2Manually: put the files in place
.agents/skills/vector-search/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill vector-search -a cursor2Manually: put the files in place
.cursor/skills/vector-search/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install ruvnet/ruflo vector-search2Manually: put the files in place
.github/skills/vector-search/SKILL.md1Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill vector-search -a gemini-cli2Platform CLI
gemini skills install https://github.com/ruvnet/ruflo --path plugins/ruflo-agentdb/skills/vector-searchManually: put the files in place
.devin/skills/vector-search/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill vector-search -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set104
The whole set →Similar
Questions about vector-search
How to install vector-search in Claude Code?
Run npx skills add ruvnet/ruflo --skill vector-search -a claude-code in your project terminal.
What does vector-search do?
It provides native HNSW search for large text corpora and a WASM router for classifying queries against up to 11 predefined patterns.
When should RaBitQ quantization be used?
Use it for collections of 5,000 vectors or more to achieve 32× lower memory usage. For smaller datasets, the rebuild overhead cancels out the memory savings.
Source text
SKILL.md · MIT
--- name: vector-search description: Vector search via embeddings_* (large-scale HNSW) and ruvllm_hnsw_* (WASM router for ≤11 hot patterns), with RaBitQ 1-bit quantization for 32× memory reduction argument-hint: "<query> [--limit N] [--quantized]" allowed-tools: mcp__plugin_ruflo-core_ruflo__embeddings_generate mcp__plugin_ruflo-core_ruflo__embeddings_search mcp__plugin_ruflo-core_ruflo__embeddings_compare mcp__plugin_ruflo-core_ruflo__embeddings_init mcp__plugin_ruflo-core_ruflo__embeddings_status mcp__plugin_ruflo-core_ruflo__embeddings_hyperbolic mcp__plugin_ruflo-core_ruflo__embeddings_neural mcp__plugin_ruflo-core_ruflo__embeddings_rabitq_build mcp__plugin_ruflo-core_ruflo__embeddings_rabitq_search mcp__plugin_ruflo-core_ruflo__embeddings_rabitq_status mcp__plugin_ruflo-core_ruflo__ruvllm_hnsw_create mcp__plugin_ruflo-core_ruflo__ruvllm_hnsw_add mcp__plugin_ruflo-core_ruflo__ruvllm_hnsw_route mcp__plugin_ruflo-core_ruflo__memory_search_unified Bash --- # Vector Search Two distinct vector-search paths live in this plugin. Pick the right one — they're not interchangeable. | Path | Tool family | Backing | Capacity | Latency | |------|-------------|---------|----------|---------| | **Large-scale corpus** | `embeddings_*` | `@claude-flow/memory` HNSW (Rust/Native) | large corpora (measured here only at N=5k and N=20k) | ~1.9× at N=20k, ~3.2×–4.7× at N=5k vs brute-force (measured; recall@10 ≈ 0.99). ANN wins above the crossover | | **Hot-path router** | `ruvllm_hnsw_*` | WASM-backed router (v2.0.1) | **~11 patterns max** (`ruvllm-tools.ts:58`) | sub-ms; designed for high-priority routing, not corpus search | The speedups in the Performance section apply to the large-scale `embeddings_search` path (the older "12,500×" headline was a brute-force-fallback artifact and is retired). The WASM router is **not** that path. ## When to use | Need | Path | |---|---| | Search a corpus of N ≥ 500 documents | `embeddings_search` | | Memory-constrained corpus (≥5,000 vectors) | RaBitQ quantized — see "Quantized search" below | | Compare two strings | `embeddings_compare` | | Hierarchical / taxonomic data | `embeddings_hyperbolic` (Poincare ball) | | Route a query to one of ≤11 hot patterns | `ruvllm_hnsw_route` | | Cross-namespace search | `memory_search_unified` | ## Standard search 1. **Check status** — `mcp__plugin_ruflo-core_ruflo__embeddings_status` to verify the embedding engine. 2. **Initialize** — `mcp__plugin_ruflo-core_ruflo__embeddings_init` if not active. 3. **Generate** — `mcp__plugin_ruflo-core_ruflo__embeddings_generate` for text input. 4. **Search** — `mcp__plugin_ruflo-core_ruflo__embeddings_search` with the query. 5. **Compare** — `mcp__plugin_ruflo-core_ruflo__embeddings_compare` to measure similarity. 6. **Unified search** — `mcp__plugin_ruflo-core_ruflo__memory_search_unified` for cross-namespace. ## Quantized search (32× memory reduction) For corpora ≥5,000 vectors and/or memory-constrained environments, use the RaBitQ 1-bit quantization workflow. Below 5,000 vectors the rebuild cost outweighs the savings — use the standard path instead. | Step | Tool | Purpose | |---|---|---| | 1 | `embeddings_init` | Engine warm | | 2 | `embeddings_rabitq_build` | One-time build of the 1-bit index after corpus is loaded | | 3 | `embeddings_rabitq_search` | Hamming-prefilter returns top-N candidate IDs (cheap) | | 4 | `embeddings_search` | Optional exact rerank on the candidate set (full-precision) | | 5 | `embeddings_rabitq_status` | Index health, memory footprint, build time | > **Note**: `embeddings_rabitq_search` returns candidate IDs only — the rerank in step 4 is the user's responsibility (mirrors the docstring at `embeddings-tools.ts:911`). Without rerank, results are approximate; with rerank, you get full-precision quality at 32× lower memory. ## Tuning HNSW exposes three knobs that trade recall against latency. The Performance numbers below were measured at default settings; tune deliberately for your workload and re-measure: | Profile | `efSearch` | `M` | When to use | |---------|-----------|-----|-------------| | `recall-first` | 200 | 32 | Pattern recall during planning; quality matters more than ms | | `balanced` (default) | 64 | 16 | General-purpose semantic recall | | `latency-first` | 16 | 8 | Hot-path routing where p99 latency matters | `efSearch` is passed via `ruvllm_hnsw_create` (`ruvllm-tools.ts:64`). `M` is registry-level today; raise as a follow-up if it should be MCP-tunable. `efConstruction` defaults to 200 in the lite index (`hnsw-index.ts:537`). ## HNSW pattern router (WASM, ≤11 patterns) For routing a small number of high-priority patterns: - `mcp__plugin_ruflo-core_ruflo__ruvllm_hnsw_create` — create the WASM index (cap ~11) - `mcp__plugin_ruflo-core_ruflo__ruvllm_hnsw_add` — add a pattern - `mcp__plugin_ruflo-core_ruflo__ruvllm_hnsw_route` — route an incoming query This is **not** a corpus index. Treat it as a fast classifier over a curated set of patterns. ## Hyperbolic embeddings For hierarchical data (code trees, org charts), use `mcp__plugin_ruflo-core_ruflo__embeddings_hyperbolic` which maps to Poincare ball space. Distance is geodesic, not cosine. ## CLI alternative ```bash npx @claude-flow/cli@latest embeddings search --query "authentication patterns" npx @claude-flow/cli@latest embeddings init npx @claude-flow/cli@latest memory search --query "your query" ``` ## Performance Measured numbers (source: `scripts/benchmark-intelligence.mjs`, ruvector NAPI backend; recall@10 ≈ 0.99). The older "150×–12,500×" figures were brute-force-fallback artifacts and have been retired — see project CLAUDE.md "V3 Performance Targets". | Method | Measured speedup vs brute-force | |--------|---------------------------------| | Brute-force scan | Baseline | | HNSW (N=5,000) | ~3.2×–4.7× faster | | HNSW (N=20,000) | ~1.9× faster | | HNSW (below crossover, small N) | ties/loses vs brute-force | | RaBitQ quantization | 32× memory reduction; 0.60 ms/query at N≈14.7k | | `ruvllm_hnsw_route` (n≤11) | sub-ms per route, fixed cost |
© ruvnet · MIT · ruvnet/ruflo