vexor 0.21.1__tar.gz → 0.23.0rc1__tar.gz
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.
- {vexor-0.21.1 → vexor-0.23.0rc1}/PKG-INFO +41 -5
- {vexor-0.21.1 → vexor-0.23.0rc1}/README.md +39 -3
- {vexor-0.21.1 → vexor-0.23.0rc1}/plugins/vexor/.claude-plugin/plugin.json +1 -1
- {vexor-0.21.1 → vexor-0.23.0rc1}/pyproject.toml +1 -1
- {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/__init__.py +17 -2
- vexor-0.23.0rc1/vexor/api.py +1131 -0
- {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/cache.py +140 -16
- {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/cli.py +59 -2
- {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/config.py +197 -9
- {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/providers/openai.py +14 -4
- {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/search.py +16 -1
- {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/services/config_service.py +30 -2
- {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/services/content_extract_service.py +6 -0
- {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/services/index_service.py +56 -4
- {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/services/init_service.py +12 -2
- {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/services/search_service.py +105 -30
- {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/text.py +17 -3
- vexor-0.21.1/vexor/api.py +0 -366
- {vexor-0.21.1 → vexor-0.23.0rc1}/.gitignore +0 -0
- {vexor-0.21.1 → vexor-0.23.0rc1}/LICENSE +0 -0
- {vexor-0.21.1 → vexor-0.23.0rc1}/gui/README.md +0 -0
- {vexor-0.21.1 → vexor-0.23.0rc1}/plugins/vexor/README.md +0 -0
- {vexor-0.21.1 → vexor-0.23.0rc1}/plugins/vexor/skills/vexor-cli/SKILL.md +0 -0
- {vexor-0.21.1 → vexor-0.23.0rc1}/plugins/vexor/skills/vexor-cli/references/install-vexor.md +0 -0
- {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/__main__.py +0 -0
- {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/modes.py +0 -0
- {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/output.py +0 -0
- {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/providers/__init__.py +0 -0
- {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/providers/gemini.py +0 -0
- {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/providers/local.py +0 -0
- {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/services/__init__.py +0 -0
- {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/services/cache_service.py +0 -0
- {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/services/js_parser.py +0 -0
- {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/services/keyword_service.py +0 -0
- {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/services/skill_service.py +0 -0
- {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/services/system_service.py +0 -0
- {vexor-0.21.1 → vexor-0.23.0rc1}/vexor/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: vexor
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.23.0rc1
|
|
4
4
|
Summary: A vector-powered CLI for semantic search over files.
|
|
5
5
|
Project-URL: Repository, https://github.com/scarletkc/vexor
|
|
6
6
|
Author: scarletkc
|
|
@@ -22,7 +22,7 @@ Classifier: Topic :: Text Processing :: Indexing
|
|
|
22
22
|
Classifier: Topic :: Utilities
|
|
23
23
|
Requires-Python: >=3.9
|
|
24
24
|
Requires-Dist: charset-normalizer>=3.3.0
|
|
25
|
-
Requires-Dist: google-genai>=
|
|
25
|
+
Requires-Dist: google-genai>=1.57.0
|
|
26
26
|
Requires-Dist: numpy>=1.23.0
|
|
27
27
|
Requires-Dist: openai>=1.0.0
|
|
28
28
|
Requires-Dist: pathspec>=0.12.1
|
|
@@ -64,6 +64,7 @@ Description-Content-Type: text/markdown
|
|
|
64
64
|
[](https://github.com/scarletkc/vexor/actions/workflows/publish.yml)
|
|
65
65
|
[](https://codecov.io/github/scarletkc/vexor)
|
|
66
66
|
[](https://github.com/scarletkc/vexor/blob/main/LICENSE)
|
|
67
|
+
[](https://deepwiki.com/scarletkc/vexor)
|
|
67
68
|
|
|
68
69
|
</div>
|
|
69
70
|
|
|
@@ -76,6 +77,13 @@ It supports configurable embedding and reranking providers, and exposes the same
|
|
|
76
77
|
Vexor Demo Video
|
|
77
78
|
</video>
|
|
78
79
|
|
|
80
|
+
## Featured In
|
|
81
|
+
|
|
82
|
+
Vexor has been recognized and featured by the community:
|
|
83
|
+
|
|
84
|
+
- **[Ruan Yifeng's Weekly (Issue #379)](https://github.com/ruanyf/weekly/blob/master/docs/issue-379.md#ai-%E7%9B%B8%E5%85%B3)** - A leading tech newsletter in the Chinese developer community.
|
|
85
|
+
- **[Awesome Claude Skills](https://github.com/VoltAgent/awesome-claude-skills?tab=readme-ov-file#development-and-testing)** - Curated list of best-in-class skills for AI agents.
|
|
86
|
+
|
|
79
87
|
## Why Vexor?
|
|
80
88
|
|
|
81
89
|
When you remember what a file *does* but forget its name or location, Vexor finds it instantly—no grep patterns or directory traversal needed.
|
|
@@ -164,12 +172,15 @@ Skill source: [`plugins/vexor/skills/vexor-cli`](https://github.com/scarletkc/ve
|
|
|
164
172
|
## Configuration
|
|
165
173
|
|
|
166
174
|
```bash
|
|
167
|
-
vexor config --set-provider openai # default; also supports gemini/custom/local
|
|
175
|
+
vexor config --set-provider openai # default; also supports gemini/voyageai/custom/local
|
|
168
176
|
vexor config --set-model text-embedding-3-small
|
|
177
|
+
vexor config --set-provider voyageai # uses voyage defaults when model/base_url are unset
|
|
169
178
|
vexor config --set-batch-size 0 # 0 = single request
|
|
170
179
|
vexor config --set-embed-concurrency 4 # parallel embedding requests
|
|
171
180
|
vexor config --set-extract-concurrency 4 # parallel file extraction workers
|
|
172
181
|
vexor config --set-extract-backend auto # auto|thread|process (default: auto)
|
|
182
|
+
vexor config --set-embedding-dimensions 1024 # optional, model/provider dependent
|
|
183
|
+
vexor config --clear-embedding-dimensions # reset to model default dimension
|
|
173
184
|
vexor config --set-auto-index true # auto-index before search (default)
|
|
174
185
|
vexor config --rerank bm25 # optional BM25 rerank for top-k results
|
|
175
186
|
vexor config --rerank flashrank # FlashRank rerank (requires optional extra)
|
|
@@ -195,7 +206,7 @@ Config stored in `~/.vexor/config.json`.
|
|
|
195
206
|
```bash
|
|
196
207
|
vexor config --set-api-key "YOUR_KEY"
|
|
197
208
|
```
|
|
198
|
-
Or via environment: `VEXOR_API_KEY`, `OPENAI_API_KEY`, or `
|
|
209
|
+
Or via environment: `VEXOR_API_KEY`, `OPENAI_API_KEY`, `GOOGLE_GENAI_API_KEY`, or `VOYAGE_API_KEY`.
|
|
199
210
|
|
|
200
211
|
### Rerank
|
|
201
212
|
|
|
@@ -215,11 +226,30 @@ Recommended defaults:
|
|
|
215
226
|
|
|
216
227
|
### Providers: Remote vs Local
|
|
217
228
|
|
|
218
|
-
Vexor supports both remote API providers (`openai`, `gemini`, `custom`) and a local provider (`local`):
|
|
229
|
+
Vexor supports both remote API providers (`openai`, `gemini`, `voyageai`, `custom`) and a local provider (`local`):
|
|
219
230
|
- Remote providers use `api_key` and optional `base_url`.
|
|
231
|
+
- `voyageai` defaults to `https://api.voyageai.com/v1` when `base_url` is not set.
|
|
220
232
|
- `custom` is OpenAI-compatible and requires both `model` and `base_url`.
|
|
221
233
|
- Local provider ignores `api_key/base_url` and only uses `model` plus `local_cuda` (CPU/GPU switch).
|
|
222
234
|
|
|
235
|
+
### Embedding Dimensions
|
|
236
|
+
|
|
237
|
+
Embedding dimensions are optional. If unset, the provider/model default is used.
|
|
238
|
+
Custom dimensions are validated for:
|
|
239
|
+
- OpenAI `text-embedding-3-*`
|
|
240
|
+
- Voyage `voyage-3*` and `voyage-code-3*`
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
vexor config --set-embedding-dimensions 1024
|
|
244
|
+
vexor config --clear-embedding-dimensions
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
If you change dimensions after an index is built, rebuild the index:
|
|
248
|
+
|
|
249
|
+
```bash
|
|
250
|
+
vexor index --path .
|
|
251
|
+
```
|
|
252
|
+
|
|
223
253
|
### Local Model (Offline)
|
|
224
254
|
|
|
225
255
|
Install the lightweight local backend:
|
|
@@ -315,8 +345,14 @@ Porcelain output fields: `rank`, `similarity`, `path`, `chunk_index`, `start_lin
|
|
|
315
345
|
|
|
316
346
|
See [docs](https://github.com/scarletkc/vexor/tree/main/docs) for more details.
|
|
317
347
|
|
|
348
|
+
## Contributing
|
|
349
|
+
|
|
318
350
|
Contributions, issues, and PRs welcome! Star if you find it helpful.
|
|
319
351
|
|
|
352
|
+
## Star History
|
|
353
|
+
|
|
354
|
+
[](https://www.star-history.com/#scarletkc/vexor&type=date&legend=top-left)
|
|
355
|
+
|
|
320
356
|
## License
|
|
321
357
|
|
|
322
358
|
[MIT](http://github.com/scarletkc/vexor/blob/main/LICENSE)
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
[](https://github.com/scarletkc/vexor/actions/workflows/publish.yml)
|
|
10
10
|
[](https://codecov.io/github/scarletkc/vexor)
|
|
11
11
|
[](https://github.com/scarletkc/vexor/blob/main/LICENSE)
|
|
12
|
+
[](https://deepwiki.com/scarletkc/vexor)
|
|
12
13
|
|
|
13
14
|
</div>
|
|
14
15
|
|
|
@@ -21,6 +22,13 @@ It supports configurable embedding and reranking providers, and exposes the same
|
|
|
21
22
|
Vexor Demo Video
|
|
22
23
|
</video>
|
|
23
24
|
|
|
25
|
+
## Featured In
|
|
26
|
+
|
|
27
|
+
Vexor has been recognized and featured by the community:
|
|
28
|
+
|
|
29
|
+
- **[Ruan Yifeng's Weekly (Issue #379)](https://github.com/ruanyf/weekly/blob/master/docs/issue-379.md#ai-%E7%9B%B8%E5%85%B3)** - A leading tech newsletter in the Chinese developer community.
|
|
30
|
+
- **[Awesome Claude Skills](https://github.com/VoltAgent/awesome-claude-skills?tab=readme-ov-file#development-and-testing)** - Curated list of best-in-class skills for AI agents.
|
|
31
|
+
|
|
24
32
|
## Why Vexor?
|
|
25
33
|
|
|
26
34
|
When you remember what a file *does* but forget its name or location, Vexor finds it instantly—no grep patterns or directory traversal needed.
|
|
@@ -109,12 +117,15 @@ Skill source: [`plugins/vexor/skills/vexor-cli`](https://github.com/scarletkc/ve
|
|
|
109
117
|
## Configuration
|
|
110
118
|
|
|
111
119
|
```bash
|
|
112
|
-
vexor config --set-provider openai # default; also supports gemini/custom/local
|
|
120
|
+
vexor config --set-provider openai # default; also supports gemini/voyageai/custom/local
|
|
113
121
|
vexor config --set-model text-embedding-3-small
|
|
122
|
+
vexor config --set-provider voyageai # uses voyage defaults when model/base_url are unset
|
|
114
123
|
vexor config --set-batch-size 0 # 0 = single request
|
|
115
124
|
vexor config --set-embed-concurrency 4 # parallel embedding requests
|
|
116
125
|
vexor config --set-extract-concurrency 4 # parallel file extraction workers
|
|
117
126
|
vexor config --set-extract-backend auto # auto|thread|process (default: auto)
|
|
127
|
+
vexor config --set-embedding-dimensions 1024 # optional, model/provider dependent
|
|
128
|
+
vexor config --clear-embedding-dimensions # reset to model default dimension
|
|
118
129
|
vexor config --set-auto-index true # auto-index before search (default)
|
|
119
130
|
vexor config --rerank bm25 # optional BM25 rerank for top-k results
|
|
120
131
|
vexor config --rerank flashrank # FlashRank rerank (requires optional extra)
|
|
@@ -140,7 +151,7 @@ Config stored in `~/.vexor/config.json`.
|
|
|
140
151
|
```bash
|
|
141
152
|
vexor config --set-api-key "YOUR_KEY"
|
|
142
153
|
```
|
|
143
|
-
Or via environment: `VEXOR_API_KEY`, `OPENAI_API_KEY`, or `
|
|
154
|
+
Or via environment: `VEXOR_API_KEY`, `OPENAI_API_KEY`, `GOOGLE_GENAI_API_KEY`, or `VOYAGE_API_KEY`.
|
|
144
155
|
|
|
145
156
|
### Rerank
|
|
146
157
|
|
|
@@ -160,11 +171,30 @@ Recommended defaults:
|
|
|
160
171
|
|
|
161
172
|
### Providers: Remote vs Local
|
|
162
173
|
|
|
163
|
-
Vexor supports both remote API providers (`openai`, `gemini`, `custom`) and a local provider (`local`):
|
|
174
|
+
Vexor supports both remote API providers (`openai`, `gemini`, `voyageai`, `custom`) and a local provider (`local`):
|
|
164
175
|
- Remote providers use `api_key` and optional `base_url`.
|
|
176
|
+
- `voyageai` defaults to `https://api.voyageai.com/v1` when `base_url` is not set.
|
|
165
177
|
- `custom` is OpenAI-compatible and requires both `model` and `base_url`.
|
|
166
178
|
- Local provider ignores `api_key/base_url` and only uses `model` plus `local_cuda` (CPU/GPU switch).
|
|
167
179
|
|
|
180
|
+
### Embedding Dimensions
|
|
181
|
+
|
|
182
|
+
Embedding dimensions are optional. If unset, the provider/model default is used.
|
|
183
|
+
Custom dimensions are validated for:
|
|
184
|
+
- OpenAI `text-embedding-3-*`
|
|
185
|
+
- Voyage `voyage-3*` and `voyage-code-3*`
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
vexor config --set-embedding-dimensions 1024
|
|
189
|
+
vexor config --clear-embedding-dimensions
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
If you change dimensions after an index is built, rebuild the index:
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
vexor index --path .
|
|
196
|
+
```
|
|
197
|
+
|
|
168
198
|
### Local Model (Offline)
|
|
169
199
|
|
|
170
200
|
Install the lightweight local backend:
|
|
@@ -260,8 +290,14 @@ Porcelain output fields: `rank`, `similarity`, `path`, `chunk_index`, `start_lin
|
|
|
260
290
|
|
|
261
291
|
See [docs](https://github.com/scarletkc/vexor/tree/main/docs) for more details.
|
|
262
292
|
|
|
293
|
+
## Contributing
|
|
294
|
+
|
|
263
295
|
Contributions, issues, and PRs welcome! Star if you find it helpful.
|
|
264
296
|
|
|
297
|
+
## Star History
|
|
298
|
+
|
|
299
|
+
[](https://www.star-history.com/#scarletkc/vexor&type=date&legend=top-left)
|
|
300
|
+
|
|
265
301
|
## License
|
|
266
302
|
|
|
267
303
|
[MIT](http://github.com/scarletkc/vexor/blob/main/LICENSE)
|
|
@@ -2,20 +2,35 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from .api import
|
|
5
|
+
from .api import (
|
|
6
|
+
InMemoryIndex,
|
|
7
|
+
VexorClient,
|
|
8
|
+
VexorError,
|
|
9
|
+
clear_index,
|
|
10
|
+
config_context,
|
|
11
|
+
index,
|
|
12
|
+
index_in_memory,
|
|
13
|
+
search,
|
|
14
|
+
set_config_json,
|
|
15
|
+
set_data_dir,
|
|
16
|
+
)
|
|
6
17
|
|
|
7
18
|
__all__ = [
|
|
8
19
|
"__version__",
|
|
20
|
+
"InMemoryIndex",
|
|
21
|
+
"VexorClient",
|
|
9
22
|
"VexorError",
|
|
10
23
|
"clear_index",
|
|
24
|
+
"config_context",
|
|
11
25
|
"get_version",
|
|
12
26
|
"index",
|
|
27
|
+
"index_in_memory",
|
|
13
28
|
"search",
|
|
14
29
|
"set_config_json",
|
|
15
30
|
"set_data_dir",
|
|
16
31
|
]
|
|
17
32
|
|
|
18
|
-
__version__ = "0.
|
|
33
|
+
__version__ = "0.23.0rc1"
|
|
19
34
|
|
|
20
35
|
|
|
21
36
|
def get_version() -> str:
|