docs: 更新文档记录多格式支持特性
This commit is contained in:
@@ -31,12 +31,19 @@ uv run python scripts/ingest_obsidian.py
|
||||
## 架构
|
||||
|
||||
```
|
||||
core/ # 核心逻辑(不依赖 server/cli)
|
||||
├── config.py # YAML → dataclass, load_dotenv() 加载 .env
|
||||
├── db.py # VectorDB: 线程安全的 ChromaDB 封装
|
||||
├── embedder.py # 策略模式: LocalEmbedder / OpenAIEmbedder / DashscopeEmbedder
|
||||
├── ingest.py # MarkdownSplitter(混合分块) + DocumentIngestor(分批嵌入)
|
||||
└── search.py # Searcher: 语义检索 + 源文件管理
|
||||
├── core/ # 核心逻辑(不依赖 server/cli)
|
||||
│ ├── config.py # YAML → dataclass, load_dotenv() 加载 .env
|
||||
│ ├── db.py # VectorDB: 线程安全的 ChromaDB 封装
|
||||
│ ├── embedder.py # 策略模式: LocalEmbedder / OpenAIEmbedder / DashscopeEmbedder
|
||||
│ ├── ingest.py # DocumentIngestor: 按扩展名自动选择 Splitter
|
||||
│ ├── search.py # Searcher: 语义检索 + 源文件管理
|
||||
│ └── splitters/ # 文档分块器包
|
||||
│ ├── base.py # Splitter(Protocol) + BaseTextSplitter(ABC)
|
||||
│ ├── markdown.py # MarkdownSplitter: 标题+段落混合分块
|
||||
│ ├── text.py # TextSplitter: 纯文本段落切分
|
||||
│ ├── pdf.py # PDFSplitter: pymupdf 提取文字
|
||||
│ ├── html.py # HTMLSplitter: bs4 去标签
|
||||
│ └── registry.py # 扩展名 → Splitter 自动选择
|
||||
|
||||
server/ # FastAPI HTTP 层
|
||||
├── app.py # Depends(get_state) 依赖注入, 速率限制中间件
|
||||
@@ -46,7 +53,9 @@ server/ # FastAPI HTTP 层
|
||||
cli/main.py # Typer CLI,5 个命令 + --config 选项
|
||||
```
|
||||
|
||||
**数据流**: MD 文件 → `MarkdownSplitter.split()` → `batch_embed()` → `ChromaDB collection.add()` → `Searcher.search()`
|
||||
**数据流**: 文件 → `get_splitter(path)` 自动选择 → `Splitter.split()` → `batch_embed()` → `ChromaDB collection.add()` → `Searcher.search()`
|
||||
|
||||
**支持的格式**: `.md` / `.txt` / `.pdf` / `.html` — 安装可选依赖: `uv sync --extra all`
|
||||
|
||||
**依赖方向**: `config` ← `db` ← `embedder` ← `ingest`/`search` ← `server`/`cli`
|
||||
|
||||
@@ -111,10 +120,18 @@ cli/main.py # Typer CLI,5 个命令 + --config 选项
|
||||
|
||||
| 集合名 | 来源 | 文件数 | chunks | 说明 |
|
||||
|--------|------|--------|--------|------|
|
||||
| `novel_taohou` | `D:\Code\doing_exercises\exercise\Novel\我有太后罩着,你们有什么\原有章节剧情` | 220 | 670 | 小说章节(GPU bge-small-v1.5) |
|
||||
| `obsidian_blog` | `D:\Code\Obsidian` | 51 | 3,611 | 博客笔记(GPU bge-small-v1.5) |
|
||||
| `default` | 测试文件 | 2 | ~30 | test-guide.md + stdin-doc.md |
|
||||
|
||||
搜索时务必用 `-C obsidian_blog` 指定博客集合,否则只会搜到 default 中的测试数据。
|
||||
搜索时务必用 `-C` 指定集合,否则只会搜到 default 中的测试数据。
|
||||
|
||||
**小说搜索示例**:
|
||||
```bash
|
||||
uv run md-vector-db search "张莽和孙太后的关系" -k 3 -C novel_taohou
|
||||
uv run md-vector-db search "抄家事件" -k 5 -C novel_taohou
|
||||
uv run md-vector-db search "文谦变法" -k 3 -C novel_taohou
|
||||
```
|
||||
|
||||
## 已知问题 / 注意事项
|
||||
|
||||
|
||||
Reference in New Issue
Block a user