voyageai-cli 1.16.0 → 1.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +188 -235
- package/package.json +1 -1
- package/src/cli.js +6 -0
- package/src/commands/completions.js +76 -1
- package/src/commands/eval.js +300 -0
- package/src/commands/models.js +4 -4
- package/src/commands/pipeline.js +311 -0
- package/src/commands/query.js +266 -0
- package/src/lib/catalog.js +1 -1
- package/src/lib/explanations.js +6 -6
- package/src/lib/metrics.js +174 -0
- package/src/playground/index.html +557 -34
package/README.md
CHANGED
|
@@ -6,15 +6,11 @@
|
|
|
6
6
|
|
|
7
7
|
[](https://github.com/mrlynn/voyageai-cli/actions/workflows/ci.yml) [](https://www.npmjs.com/package/voyageai-cli) [](https://opensource.org/licenses/MIT) [](https://nodejs.org)
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
The fastest path from documents to semantic search. Chunk files, generate [Voyage AI](https://www.mongodb.com/docs/voyageai/) embeddings, store in [MongoDB Atlas](https://www.mongodb.com/docs/atlas/atlas-vector-search/), and query with two-stage retrieval — all from the terminal.
|
|
10
10
|
|
|
11
|
-
**
|
|
11
|
+
**21 commands · 312 tests · 5 chunking strategies · End-to-end RAG pipeline**
|
|
12
12
|
|
|
13
|
-
> **⚠️ Disclaimer:** This is an independent, community-built tool
|
|
14
|
-
> - **MongoDB:** [mongodb.com](https://www.mongodb.com) | [MongoDB Atlas](https://www.mongodb.com/atlas) | [Support](https://support.mongodb.com)
|
|
15
|
-
> - **Voyage AI:** [MongoDB Voyage AI Docs](https://www.mongodb.com/docs/voyageai/)
|
|
16
|
-
>
|
|
17
|
-
> Use at your own risk. No warranty is provided. See [LICENSE](LICENSE) for details.
|
|
13
|
+
> **⚠️ Disclaimer:** This is an independent, community-built tool — **not** an official product of MongoDB, Inc. or Voyage AI. See [Disclaimer](#disclaimer) for details.
|
|
18
14
|
|
|
19
15
|
## Install
|
|
20
16
|
|
|
@@ -22,328 +18,285 @@ CLI for [Voyage AI](https://www.mongodb.com/docs/voyageai/) embeddings, rerankin
|
|
|
22
18
|
npm install -g voyageai-cli
|
|
23
19
|
```
|
|
24
20
|
|
|
25
|
-
##
|
|
21
|
+
## 5-Minute RAG Pipeline
|
|
22
|
+
|
|
23
|
+
Go from a folder of documents to a searchable vector database:
|
|
26
24
|
|
|
27
25
|
```bash
|
|
28
|
-
# Set
|
|
26
|
+
# Set credentials
|
|
29
27
|
export VOYAGE_API_KEY="your-key"
|
|
28
|
+
export MONGODB_URI="mongodb+srv://user:pass@cluster.mongodb.net/"
|
|
30
29
|
|
|
31
|
-
#
|
|
32
|
-
vai
|
|
33
|
-
|
|
34
|
-
# List available models
|
|
35
|
-
vai models
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
## Commands
|
|
30
|
+
# Initialize project
|
|
31
|
+
vai init --yes
|
|
39
32
|
|
|
40
|
-
|
|
33
|
+
# Chunk → embed → store (one command)
|
|
34
|
+
vai pipeline ./docs/ --db myapp --collection knowledge --create-index
|
|
41
35
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
36
|
+
# Search with two-stage retrieval
|
|
37
|
+
vai query "How do I configure replica sets?" --db myapp --collection knowledge
|
|
38
|
+
```
|
|
45
39
|
|
|
46
|
-
|
|
47
|
-
vai embed "search query" --model voyage-4-large --input-type query --dimensions 512
|
|
40
|
+
That's it. Documents chunked, embedded with `voyage-4-large`, stored in Atlas with metadata, vector index created, and searchable with reranking.
|
|
48
41
|
|
|
49
|
-
|
|
50
|
-
vai embed --file document.txt --input-type document
|
|
42
|
+
## Project Config
|
|
51
43
|
|
|
52
|
-
|
|
53
|
-
cat texts.txt | vai embed
|
|
44
|
+
Stop typing `--db myapp --collection docs` on every command:
|
|
54
45
|
|
|
55
|
-
|
|
56
|
-
vai
|
|
46
|
+
```bash
|
|
47
|
+
vai init
|
|
57
48
|
```
|
|
58
49
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
50
|
+
Creates `.vai.json` with your defaults — model, database, collection, chunking strategy. Every command reads it automatically. CLI flags override when needed.
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"model": "voyage-4-large",
|
|
55
|
+
"db": "myapp",
|
|
56
|
+
"collection": "knowledge",
|
|
57
|
+
"field": "embedding",
|
|
58
|
+
"dimensions": 1024,
|
|
59
|
+
"chunk": {
|
|
60
|
+
"strategy": "recursive",
|
|
61
|
+
"size": 512,
|
|
62
|
+
"overlap": 50
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
```
|
|
65
66
|
|
|
66
|
-
|
|
67
|
-
vai rerank --query "best database" --documents-file candidates.json --top-k 3
|
|
67
|
+
## Core Workflow
|
|
68
68
|
|
|
69
|
-
|
|
70
|
-
vai rerank --query "query" --documents "doc1" "doc2" --model rerank-2.5-lite
|
|
71
|
-
```
|
|
69
|
+
### `vai pipeline` — Chunk → embed → store
|
|
72
70
|
|
|
73
|
-
|
|
71
|
+
The end-to-end command. Takes files or directories, chunks them, embeds in batches, stores in MongoDB Atlas.
|
|
74
72
|
|
|
75
73
|
```bash
|
|
76
|
-
#
|
|
77
|
-
vai
|
|
74
|
+
# Directory of docs
|
|
75
|
+
vai pipeline ./docs/ --db myapp --collection knowledge --create-index
|
|
76
|
+
|
|
77
|
+
# Single file
|
|
78
|
+
vai pipeline whitepaper.pdf --db myapp --collection papers
|
|
78
79
|
|
|
79
|
-
#
|
|
80
|
-
vai
|
|
80
|
+
# Preview without API calls
|
|
81
|
+
vai pipeline ./docs/ --dry-run
|
|
81
82
|
|
|
82
|
-
#
|
|
83
|
-
vai
|
|
83
|
+
# Custom chunking
|
|
84
|
+
vai pipeline ./docs/ --strategy markdown --chunk-size 1024 --overlap 100
|
|
84
85
|
```
|
|
85
86
|
|
|
86
|
-
|
|
87
|
+
Supports: `.txt`, `.md`, `.html`, `.json`, `.jsonl`, `.pdf` (optional `pdf-parse` dependency). Auto-detects markdown files for heading-aware chunking.
|
|
87
88
|
|
|
88
|
-
|
|
89
|
+
### `vai query` — Search + rerank
|
|
90
|
+
|
|
91
|
+
Two-stage retrieval in one command: embed query → vector search → rerank → results.
|
|
89
92
|
|
|
90
93
|
```bash
|
|
91
|
-
#
|
|
92
|
-
vai
|
|
93
|
-
--text "MongoDB Atlas is a cloud database" \
|
|
94
|
-
--metadata '{"source": "docs", "category": "product"}'
|
|
94
|
+
# Search with reranking (default)
|
|
95
|
+
vai query "How does authentication work?" --db myapp --collection knowledge
|
|
95
96
|
|
|
96
|
-
#
|
|
97
|
-
vai
|
|
98
|
-
--file article.txt
|
|
97
|
+
# Vector search only (skip rerank)
|
|
98
|
+
vai query "auth setup" --no-rerank
|
|
99
99
|
|
|
100
|
-
#
|
|
101
|
-
vai
|
|
102
|
-
--file documents.jsonl
|
|
100
|
+
# With pre-filter
|
|
101
|
+
vai query "performance tuning" --filter '{"category": "guides"}' --top-k 10
|
|
103
102
|
```
|
|
104
103
|
|
|
105
|
-
### `vai
|
|
104
|
+
### `vai chunk` — Document chunking
|
|
106
105
|
|
|
107
|
-
|
|
108
|
-
# JSONL (one JSON object per line with a "text" field)
|
|
109
|
-
vai ingest --file corpus.jsonl --db myapp --collection docs --field embedding
|
|
110
|
-
|
|
111
|
-
# JSON array
|
|
112
|
-
vai ingest --file documents.json --db myapp --collection docs --field embedding
|
|
106
|
+
Standalone chunking for when you need control over the pipeline.
|
|
113
107
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
# Plain text (one document per line)
|
|
118
|
-
vai ingest --file lines.txt --db myapp --collection docs --field embedding
|
|
108
|
+
```bash
|
|
109
|
+
# Chunk a directory, output JSONL
|
|
110
|
+
vai chunk ./docs/ --output chunks.jsonl --stats
|
|
119
111
|
|
|
120
|
-
#
|
|
121
|
-
vai
|
|
122
|
-
--model voyage-4 --batch-size 100 --input-type document
|
|
112
|
+
# Specific strategy
|
|
113
|
+
vai chunk paper.md --strategy markdown --chunk-size 1024
|
|
123
114
|
|
|
124
|
-
# Preview
|
|
125
|
-
vai
|
|
115
|
+
# Preview
|
|
116
|
+
vai chunk ./docs/ --dry-run
|
|
126
117
|
```
|
|
127
118
|
|
|
128
|
-
|
|
119
|
+
Five strategies: `fixed`, `sentence`, `paragraph`, `recursive` (default), `markdown`.
|
|
129
120
|
|
|
130
|
-
|
|
121
|
+
### `vai estimate` — Cost estimator
|
|
122
|
+
|
|
123
|
+
Compare symmetric vs. asymmetric embedding strategies before committing.
|
|
131
124
|
|
|
132
125
|
```bash
|
|
133
|
-
|
|
134
|
-
vai search --query "cloud database" \
|
|
135
|
-
--db myapp --collection docs \
|
|
136
|
-
--index vector_index --field embedding
|
|
137
|
-
|
|
138
|
-
# With pre-filter and limit
|
|
139
|
-
vai search --query "performance tuning" \
|
|
140
|
-
--db myapp --collection docs \
|
|
141
|
-
--index vector_index --field embedding \
|
|
142
|
-
--filter '{"category": "guides"}' --limit 5
|
|
126
|
+
vai estimate --docs 10M --queries 100M --months 12
|
|
143
127
|
```
|
|
144
128
|
|
|
145
|
-
|
|
129
|
+
Shows cost breakdown for every Voyage 4 model combination, including asymmetric retrieval (embed docs with `voyage-4-large`, query with `voyage-4-lite` — same quality, fraction of the cost).
|
|
130
|
+
|
|
131
|
+
## Individual Commands
|
|
146
132
|
|
|
147
|
-
|
|
133
|
+
For when you need fine-grained control:
|
|
148
134
|
|
|
149
135
|
```bash
|
|
150
|
-
#
|
|
151
|
-
vai
|
|
152
|
-
--dimensions 1024 --similarity cosine --index-name my_index
|
|
136
|
+
# Embed text
|
|
137
|
+
vai embed "What is MongoDB?" --model voyage-4-large --dimensions 512
|
|
153
138
|
|
|
154
|
-
#
|
|
155
|
-
vai
|
|
139
|
+
# Rerank documents
|
|
140
|
+
vai rerank --query "database performance" \
|
|
141
|
+
--documents "MongoDB is fast" "PostgreSQL is relational" "Redis is cached"
|
|
156
142
|
|
|
157
|
-
#
|
|
158
|
-
vai
|
|
159
|
-
```
|
|
143
|
+
# Compare similarity
|
|
144
|
+
vai similarity "MongoDB is a database" "Atlas is a cloud database"
|
|
160
145
|
|
|
161
|
-
|
|
146
|
+
# Store a single document
|
|
147
|
+
vai store --db myapp --collection docs --field embedding \
|
|
148
|
+
--text "MongoDB Atlas provides managed cloud databases"
|
|
162
149
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
vai ping
|
|
150
|
+
# Bulk import from file
|
|
151
|
+
vai ingest --file corpus.jsonl --db myapp --collection docs --field embedding
|
|
166
152
|
|
|
167
|
-
#
|
|
168
|
-
|
|
169
|
-
vai ping
|
|
153
|
+
# Vector search (raw)
|
|
154
|
+
vai search --query "cloud database" --db myapp --collection docs
|
|
170
155
|
|
|
171
|
-
#
|
|
172
|
-
vai
|
|
156
|
+
# Manage indexes
|
|
157
|
+
vai index create --db myapp --collection docs --field embedding
|
|
158
|
+
vai index list --db myapp --collection docs
|
|
173
159
|
```
|
|
174
160
|
|
|
175
|
-
|
|
161
|
+
## Models & Benchmarks
|
|
176
162
|
|
|
177
163
|
```bash
|
|
178
|
-
#
|
|
179
|
-
vai models
|
|
164
|
+
# List models with architecture and shared space info
|
|
165
|
+
vai models --wide
|
|
180
166
|
|
|
181
|
-
#
|
|
182
|
-
vai models --
|
|
183
|
-
vai models --type reranking
|
|
167
|
+
# Show RTEB benchmark scores
|
|
168
|
+
vai models --benchmarks
|
|
184
169
|
```
|
|
185
170
|
|
|
186
|
-
|
|
171
|
+
### Voyage 4 Family
|
|
187
172
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
173
|
+
| Model | Architecture | Price/1M tokens | RTEB Score | Best For |
|
|
174
|
+
|-------|-------------|----------------|------------|----------|
|
|
175
|
+
| voyage-4-large | **MoE** | $0.12 | **71.41** | Best quality — first production MoE embedding model |
|
|
176
|
+
| voyage-4 | Dense | $0.06 | 70.07 | Balanced quality/cost |
|
|
177
|
+
| voyage-4-lite | Dense | $0.02 | 68.10 | High-volume, budget |
|
|
178
|
+
| voyage-4-nano | Dense | Free (open-weight) | — | Local dev, edge, [HuggingFace](https://huggingface.co/voyageai/voyage-4-nano) |
|
|
191
179
|
|
|
192
|
-
|
|
193
|
-
vai store --db myapp --collection articles --field embedding \
|
|
194
|
-
--text "MongoDB Atlas provides a fully managed cloud database" \
|
|
195
|
-
--metadata '{"title": "Atlas Overview"}'
|
|
180
|
+
**Shared embedding space:** All Voyage 4 models produce compatible embeddings. Embed docs with `voyage-4-large`, query with `voyage-4-lite` — no re-vectorization needed.
|
|
196
181
|
|
|
197
|
-
|
|
198
|
-
--text "Vector search enables semantic similarity matching" \
|
|
199
|
-
--metadata '{"title": "Vector Search Guide"}'
|
|
182
|
+
### Competitive Landscape (RTEB NDCG@10)
|
|
200
183
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
184
|
+
| Model | Score |
|
|
185
|
+
|-------|-------|
|
|
186
|
+
| **voyage-4-large** | **71.41** |
|
|
187
|
+
| voyage-4 | 70.07 |
|
|
188
|
+
| Gemini Embedding 001 | 68.66 |
|
|
189
|
+
| voyage-4-lite | 68.10 |
|
|
190
|
+
| Cohere Embed v4 | 65.75 |
|
|
191
|
+
| OpenAI v3 Large | 62.57 |
|
|
204
192
|
|
|
205
|
-
|
|
206
|
-
vai search --query "how does cloud database work" \
|
|
207
|
-
--db myapp --collection articles --index article_search --field embedding
|
|
193
|
+
Also available: `voyage-code-3` (code), `voyage-finance-2` (finance), `voyage-law-2` (legal), `rerank-2.5` / `rerank-2.5-lite`.
|
|
208
194
|
|
|
209
|
-
|
|
210
|
-
vai rerank --query "how does cloud database work" \
|
|
211
|
-
--documents "MongoDB Atlas provides a fully managed cloud database" \
|
|
212
|
-
"Vector search enables semantic similarity matching"
|
|
213
|
-
```
|
|
195
|
+
## Benchmarking Your Data
|
|
214
196
|
|
|
215
|
-
|
|
197
|
+
Published benchmarks measure average quality across standardized datasets. `vai benchmark` measures what matters for **your** use case:
|
|
216
198
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
| `MONGODB_URI` | store, search, index, ping (optional) | MongoDB Atlas connection string |
|
|
199
|
+
```bash
|
|
200
|
+
# Compare model latency and cost
|
|
201
|
+
vai benchmark embed --models voyage-4-large,voyage-4,voyage-4-lite --rounds 5
|
|
221
202
|
|
|
222
|
-
|
|
203
|
+
# Test asymmetric retrieval on your data
|
|
204
|
+
vai benchmark asymmetric --file your-corpus.txt --query "your actual query"
|
|
223
205
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
3. **Config file** (`~/.vai/config.json` via `vai config set`)
|
|
206
|
+
# Validate shared embedding space
|
|
207
|
+
vai benchmark space
|
|
227
208
|
|
|
228
|
-
|
|
209
|
+
# Compare quantization tradeoffs
|
|
210
|
+
vai benchmark quantization --model voyage-4-large --dtypes float,int8,ubinary
|
|
229
211
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
MONGODB_URI=mongodb+srv://user:pass@cluster.mongodb.net/
|
|
212
|
+
# Project costs at scale
|
|
213
|
+
vai benchmark cost --tokens 500 --volumes 100,1000,10000,100000
|
|
233
214
|
```
|
|
234
215
|
|
|
235
|
-
|
|
216
|
+
## Learn
|
|
236
217
|
|
|
237
|
-
|
|
218
|
+
Interactive explanations of key concepts:
|
|
238
219
|
|
|
239
220
|
```bash
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
vai
|
|
243
|
-
|
|
244
|
-
#
|
|
245
|
-
vai
|
|
221
|
+
vai explain embeddings # What are vector embeddings?
|
|
222
|
+
vai explain moe # Mixture-of-experts architecture
|
|
223
|
+
vai explain shared-space # Shared embedding space & asymmetric retrieval
|
|
224
|
+
vai explain rteb # RTEB benchmark scores
|
|
225
|
+
vai explain quantization # Matryoshka dimensions & quantization
|
|
226
|
+
vai explain two-stage # The embed → search → rerank pattern
|
|
227
|
+
vai explain nano # voyage-4-nano open-weight model
|
|
228
|
+
vai explain models # How to choose the right model
|
|
246
229
|
```
|
|
247
230
|
|
|
248
|
-
|
|
231
|
+
17 topics covering embeddings, reranking, vector search, RAG, and more.
|
|
249
232
|
|
|
250
|
-
|
|
251
|
-
- Secrets are always masked in `vai config get` output
|
|
252
|
-
- Use `echo "key" | vai config set api-key --stdin` or `vai config set api-key --stdin < keyfile` to avoid shell history exposure
|
|
253
|
-
- The config file stores credentials in plaintext (similar to `~/.aws/credentials` and `~/.npmrc`) — protect your home directory accordingly
|
|
254
|
-
|
|
255
|
-
## Shell Completions
|
|
233
|
+
## Environment & Auth
|
|
256
234
|
|
|
257
|
-
|
|
235
|
+
| Variable | Required For | Description |
|
|
236
|
+
|----------|-------------|-------------|
|
|
237
|
+
| `VOYAGE_API_KEY` | All embedding/reranking | [Model API key](https://www.mongodb.com/docs/voyageai/management/api-keys/) from MongoDB Atlas |
|
|
238
|
+
| `MONGODB_URI` | store, search, query, pipeline, index | MongoDB Atlas connection string |
|
|
258
239
|
|
|
259
|
-
|
|
240
|
+
Credentials resolve in order: environment variables → `.env` file → `~/.vai/config.json`.
|
|
260
241
|
|
|
261
242
|
```bash
|
|
262
|
-
#
|
|
263
|
-
vai
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
# Or install system-wide (Linux)
|
|
267
|
-
vai completions bash > /etc/bash_completion.d/vai
|
|
268
|
-
|
|
269
|
-
# Or with Homebrew (macOS)
|
|
270
|
-
vai completions bash > $(brew --prefix)/etc/bash_completion.d/vai
|
|
243
|
+
# Or use the built-in config store
|
|
244
|
+
echo "your-key" | vai config set api-key --stdin
|
|
245
|
+
vai config set mongodb-uri "mongodb+srv://..."
|
|
271
246
|
```
|
|
272
247
|
|
|
273
|
-
|
|
248
|
+
## Shell Completions
|
|
274
249
|
|
|
275
250
|
```bash
|
|
276
|
-
#
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
# Add to fpath in ~/.zshrc (if not already there)
|
|
280
|
-
echo 'fpath=(~/.zsh/completions $fpath)' >> ~/.zshrc
|
|
281
|
-
echo 'autoload -Uz compinit && compinit' >> ~/.zshrc
|
|
251
|
+
# Bash
|
|
252
|
+
vai completions bash >> ~/.bashrc
|
|
282
253
|
|
|
283
|
-
#
|
|
254
|
+
# Zsh
|
|
255
|
+
mkdir -p ~/.zsh/completions
|
|
284
256
|
vai completions zsh > ~/.zsh/completions/_vai
|
|
285
|
-
source ~/.zshrc
|
|
286
|
-
```
|
|
287
|
-
|
|
288
|
-
Completions cover all 14 commands, subcommands, flags, model names, and explain topics.
|
|
289
|
-
|
|
290
|
-
## Global Flags
|
|
291
|
-
|
|
292
|
-
All commands support:
|
|
293
|
-
|
|
294
|
-
| Flag | Description |
|
|
295
|
-
|------|-------------|
|
|
296
|
-
| `--json` | Machine-readable JSON output |
|
|
297
|
-
| `--quiet` | Suppress non-essential output |
|
|
298
|
-
|
|
299
|
-
## Models
|
|
300
|
-
|
|
301
|
-
| Model | Type | Dimensions | Price/1M tokens | Best For |
|
|
302
|
-
|-------|------|-----------|----------------|----------|
|
|
303
|
-
| voyage-4-large | embedding | 1024 (default), 256-2048 | $0.12 | Best quality |
|
|
304
|
-
| voyage-4 | embedding | 1024 (default), 256-2048 | $0.06 | Balanced |
|
|
305
|
-
| voyage-4-lite | embedding | 1024 (default), 256-2048 | $0.02 | Lowest cost |
|
|
306
|
-
| voyage-code-3 | embedding | 1024 (default), 256-2048 | $0.18 | Code |
|
|
307
|
-
| voyage-finance-2 | embedding | 1024 | $0.12 | Finance |
|
|
308
|
-
| voyage-law-2 | embedding | 1024 | $0.12 | Legal |
|
|
309
|
-
| voyage-multimodal-3.5 | embedding | 1024 (default), 256-2048 | $0.12 + pixels | Text + images |
|
|
310
|
-
| rerank-2.5 | reranking | — | $0.05 | Best reranking |
|
|
311
|
-
| rerank-2.5-lite | reranking | — | $0.02 | Fast reranking |
|
|
312
|
-
|
|
313
|
-
Free tier: 200M tokens for most models. All Voyage 4 series models share the same embedding space.
|
|
314
|
-
|
|
315
|
-
## Benchmarks: vai vs. Voyage AI's Published Results
|
|
316
|
-
|
|
317
|
-
Voyage AI publishes [retrieval quality benchmarks](https://blog.voyageai.com/2026/01/15/voyage-4/) — NDCG@10 scores across 29 RTEB datasets measuring how *accurate* each model's embeddings are. Their results show voyage-4-large outperforms Gemini Embedding 001 by 3.87%, Cohere Embed v4 by 8.20%, and OpenAI v3 Large by 14.05%.
|
|
318
|
-
|
|
319
|
-
**`vai benchmark` measures something different:** real-world latency, cost, and whether models agree on ranking *your specific data*. The two are complementary:
|
|
320
|
-
|
|
321
|
-
| | Voyage AI Benchmarks | vai benchmark |
|
|
322
|
-
|---|---|---|
|
|
323
|
-
| **Measures** | Retrieval quality (NDCG@10) | Latency, cost, ranking agreement |
|
|
324
|
-
| **Data** | 29 standardized datasets | Your actual data |
|
|
325
|
-
| **Answers** | "Which model produces the best embeddings?" | "For my data and budget, which model should I use?" |
|
|
326
|
-
|
|
327
|
-
Voyage AI's key insight — [asymmetric retrieval](https://blog.voyageai.com/2026/01/15/voyage-4/) (embed docs with voyage-4-large, query with voyage-4-lite) — is directly testable with `vai`:
|
|
328
|
-
|
|
329
|
-
```bash
|
|
330
|
-
# Does the cheap query model find the same results as the expensive one?
|
|
331
|
-
vai benchmark asymmetric --doc-model voyage-4-large \
|
|
332
|
-
--query-models voyage-4-large,voyage-4,voyage-4-lite \
|
|
333
|
-
--file your-corpus.txt --query "your actual query"
|
|
334
257
|
```
|
|
335
258
|
|
|
336
|
-
|
|
259
|
+
Covers all 21 commands, subcommands, flags, model names, and explain topics.
|
|
260
|
+
|
|
261
|
+
## All Commands
|
|
262
|
+
|
|
263
|
+
| Command | Description |
|
|
264
|
+
|---------|-------------|
|
|
265
|
+
| `vai init` | Initialize project with `.vai.json` |
|
|
266
|
+
| `vai pipeline` | Chunk → embed → store (end-to-end) |
|
|
267
|
+
| `vai query` | Search + rerank (two-stage retrieval) |
|
|
268
|
+
| `vai chunk` | Chunk documents (5 strategies) |
|
|
269
|
+
| `vai estimate` | Cost estimator (symmetric vs asymmetric) |
|
|
270
|
+
| `vai embed` | Generate embeddings |
|
|
271
|
+
| `vai rerank` | Rerank documents by relevance |
|
|
272
|
+
| `vai similarity` | Compare text similarity |
|
|
273
|
+
| `vai store` | Embed and store single documents |
|
|
274
|
+
| `vai ingest` | Bulk import with progress |
|
|
275
|
+
| `vai search` | Vector similarity search |
|
|
276
|
+
| `vai index` | Manage Atlas Vector Search indexes |
|
|
277
|
+
| `vai models` | List models, benchmarks, architecture |
|
|
278
|
+
| `vai benchmark` | 8 subcommands for model comparison |
|
|
279
|
+
| `vai explain` | 17 interactive concept explainers |
|
|
280
|
+
| `vai config` | Manage persistent configuration |
|
|
281
|
+
| `vai ping` | Test API and MongoDB connectivity |
|
|
282
|
+
| `vai playground` | Interactive web playground |
|
|
283
|
+
| `vai demo` | Guided walkthrough |
|
|
284
|
+
| `vai completions` | Shell completion scripts |
|
|
285
|
+
| `vai about` | About this tool |
|
|
337
286
|
|
|
338
287
|
## Requirements
|
|
339
288
|
|
|
340
289
|
- Node.js 18+
|
|
341
|
-
-
|
|
342
|
-
-
|
|
290
|
+
- [MongoDB Atlas](https://www.mongodb.com/atlas) account (free tier works)
|
|
291
|
+
- [Voyage AI model API key](https://www.mongodb.com/docs/voyageai/management/api-keys/) (created in Atlas)
|
|
343
292
|
|
|
344
293
|
## Disclaimer
|
|
345
294
|
|
|
346
|
-
This is a community tool and is not affiliated with, endorsed by, or supported by MongoDB, Inc. or Voyage AI. All trademarks belong to their respective owners.
|
|
295
|
+
This is a community tool and is not affiliated with, endorsed by, or supported by MongoDB, Inc. or Voyage AI. All trademarks belong to their respective owners.
|
|
296
|
+
|
|
297
|
+
For official documentation and support:
|
|
298
|
+
- **MongoDB:** [mongodb.com](https://www.mongodb.com) | [Atlas](https://www.mongodb.com/atlas) | [Support](https://support.mongodb.com)
|
|
299
|
+
- **Voyage AI:** [MongoDB Voyage AI Docs](https://www.mongodb.com/docs/voyageai/)
|
|
347
300
|
|
|
348
301
|
## License
|
|
349
302
|
|
package/package.json
CHANGED
package/src/cli.js
CHANGED
|
@@ -23,6 +23,9 @@ const { registerBenchmark } = require('./commands/benchmark');
|
|
|
23
23
|
const { registerEstimate } = require('./commands/estimate');
|
|
24
24
|
const { registerInit } = require('./commands/init');
|
|
25
25
|
const { registerChunk } = require('./commands/chunk');
|
|
26
|
+
const { registerQuery } = require('./commands/query');
|
|
27
|
+
const { registerPipeline } = require('./commands/pipeline');
|
|
28
|
+
const { registerEval } = require('./commands/eval');
|
|
26
29
|
const { registerAbout } = require('./commands/about');
|
|
27
30
|
const { showBanner, showQuickStart, getVersion } = require('./lib/banner');
|
|
28
31
|
|
|
@@ -51,6 +54,9 @@ registerBenchmark(program);
|
|
|
51
54
|
registerEstimate(program);
|
|
52
55
|
registerInit(program);
|
|
53
56
|
registerChunk(program);
|
|
57
|
+
registerQuery(program);
|
|
58
|
+
registerPipeline(program);
|
|
59
|
+
registerEval(program);
|
|
54
60
|
registerAbout(program);
|
|
55
61
|
|
|
56
62
|
// Append disclaimer to all help output
|