diff --git a/README.md b/README.md index 371b95a..c58b184 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,11 @@ Markdown 文档向量数据库 — 将 Markdown 文件自动分块、嵌入、 - **安全**: 可选 API Key 认证、速率限制、路径遍历防护 - **多格式文档**: 支持 `.md` / `.txt` / `.pdf` / `.html` / `.epub`,按扩展名自动选择分块器,可通过 `Splitter` Protocol 扩展 - **去重**: 同一文件重复入库自动覆盖旧版本(基于路径 SHA256 哈希) +- **混合检索**: BM25 关键词 + 向量语义联合检索,加权融合排序,支持切换纯向量模式 +- **增量入库**: 基于 SHA256 哈希自动跳过未变更文件,避免重复嵌入浪费 GPU +- **结果重排序**: 可选 Cross-Encoder 精确重排(`BAAI/bge-reranker-base`),提升检索精度 +- **数据导出**: 支持 JSON/CSV 导出 collection 全量数据 +- **Docker 部署**: 提供 Dockerfile 和 docker-compose.yml,一键部署(含 GPU profile) ## 快速开始 @@ -145,17 +150,43 @@ for r in resp.json()["results"]: --- +--- + +## Docker 部署 + +```bash +# 构建并启动(CPU 模式) +docker compose up -d + +# GPU 模式(需 nvidia-container-toolkit) +docker compose --profile gpu up -d + +# 查看日志 +docker compose logs -f + +# 停止服务 +docker compose down + +# CLI 使用示例 +docker exec -it md-vector-db uv run md-vector-db stats +docker exec -it md-vector-db uv run md-vector-db ingest /app/md_docs/doc.md +``` + +--- + ## CLI 命令参考 所有命令均支持 `--config/-c`(配置文件)、`--collection/-C`(集合名,默认 `default`)。 -| 命令 | 说明 | -| --------------------------- | -------------------------------------------------------- | -| `ingest <文件路径>` | 入库单个文件(自动识别格式),支持`-C` 指定集合 | -| `ingest-dir <目录路径>` | 递归入库目录下所有支持的文档格式 | -| `search <查询> -k <数量>` | 语义检索,`-k` 默认 10、最大 100,`--json` JSON 输出 | -| `stats` | 显示 chunks 总数、源文件列表 | -| `serve -p <端口>` | 启动 HTTP 服务(默认 8000) | +| 命令 | 说明 | +| --------------------------------- | -------------------------------------------------------- | +| `ingest <文件路径> --incremental` | 增量入库单文件,自动跳过未变更文件 | +| `ingest <文件路径> --force` | 强制重新入库(忽略增量检查) | +| `ingest-dir <目录路径>` | 递归入库目录下所有支持的文档格式 | +| `search <查询> -k <数量> --mode` | 语义检索,`--mode hybrid\|vector`,`--json` JSON 输出 | +| `stats` | 显示 chunks 总数、源文件列表 | +| `export -o <文件> -f ` | 导出 collection 数据 | +| `serve -p <端口>` | 启动 HTTP 服务(默认 8000) | --- @@ -182,6 +213,12 @@ chunk: server: host: 0.0.0.0 # 服务监听地址 port: 8000 # 服务监听端口 + +search: + mode: hybrid # 检索模式: hybrid (BM25+向量) | vector (纯向量) + bm25_weight: 0.3 # BM25 权重 (0=纯向量, 1=纯BM25) + candidate_multiplier: 3 # 向量检索候选倍数 + enable_rerank: false # 是否启用 Cross-Encoder 重排序 ``` ### .env 环境变量