快速启动
立即在任何文件夹上运行doc -search:
npx docmd-search ./docs
就是这样。
- 文件被自动发现并分块
- 嵌入在本地生成(没有云API)
- 搜索可立即在终端
正常使用安装
npm install -g docmd-search
# Install ML dependencies (one-time)
npm install -g @huggingface/transformers onnxruntime-node
docmd-search ./docs # index + interactive search
docmd-search ./docs --ui # index + web UI
docmd-search --settings # configure model
特性
设计为离线工作,不向浏览器发送任何东西,并且不妨碍您的方式。
默认为离线
- 所有嵌入都是用ONNX Runtime在本地生成的
- 没有数据离开您的机器
- 不需要云API密钥
即时搜索
- 渐进式索引:从第一批开始搜索
- 增量:仅重新索引更改的文件
- resume:中断的索引从上一个检查点恢复
小客户
- 浏览器运行时为 < 3 kb gzip
- 浏览器中没有模型权重
- 混合评分:关键词匹配+向量相似度
内置功能
- 多批索引格式与自动压缩
- 为web ui生成导航树
- 带有模型选择的首次运行安装向导
- 具有实时结果的交互式终端搜索
它是如何工作的
Build time (Node.js) Search time (Browser, <3KB)
─────────────────── ──────────────────────────
Crawl files Load manifest.json
→ Chunk by heading → Load batch 000 (instant)
→ Embed via ONNX → Background-load rest
→ Quantize Float32 → Int8 → Keyword + cosine
→ Compress (ternary/PQ) → Ranked results
→ Save multi-batch index
模型
第一次运行提示您选择嵌入模型:
| 模型 | 维 | 大小 | 最适合 |
|---|---|---|---|
| mini ilm L6 v2 ★ | 384 | ~ 30 MB | 快速、通用 |
| BGE小型(英文) | 384 | ~ 45 MB | English-optimised |
| BGE基地(英文) | 768 | ~ 110 MB | 更高质量的 |
| MPNet Base v2 | 768 | ~ 110 MB | 多语言 |
稍后更改模型: docmd-search --settings
配置(可选)
开始时不需要任何配置。
全球 (~/.docmd-search/config.json):
{
"model": "Xenova/all-MiniLM-L6-v2",
"wizardCompleted": true
}
基于 (_docmd-search/config.json):
{
"model": "Xenova/bge-small-en-v1.5",
"chunkSize": 512,
"include": ["**/*.md"],
"exclude": ["**/drafts/**"]
}
配置解析:default→global→project→CLI flags。
编程式的使用
在脚本或CI管道中使用:
import { indexDirectory, loadAllBatches } from 'docmd-search';
const index = await indexDirectory({
rootDir: './docs',
outDir: '_docmd-search',
});
浏览器客户端:
import { load, search } from 'docmd-search/client';
await load('/path/to/_docmd-search');
const results = search('deploy kubernetes', 10);
项目结构
保持代码库扁平化和模块化。
src/
├── bin/docmd-search.ts # CLI entry point
├── client/index.ts # Browser runtime (<3KB)
├── config.ts # Config + model profiles
├── index-io.ts # Multi-batch format + compression
├── index.ts # Barrel exports
├── indexer/
│ ├── chunk.ts # Heading-aware chunking
│ ├── crawl.ts # File discovery
│ └── index.ts # Progressive pipeline
├── model.ts # ONNX embedding manager
├── tui.ts # Terminal UI
├── types.ts # Core types
└── ui/
└── launcher.ts # Web UI via docmd
文档生态系统的一部分
文档搜索与任何文档项目独立工作。它还集成了 docmd 作为一个语义搜索插件。
| 工具 | 它是做什么的 |
|---|---|
| docmd | 零配置文档生成器 |
| docmd-search | 离线语义搜索引擎 |
社区与支持
- 欢迎踊跃投稿
- 如果你觉得有用,考虑一下 赞助 或者主演回购⭐
许可证
麻省理工学院的许可。看到 LICENSE 获取详细信息。