# knowledgebase **Repository Path**: wangdong_cmcc/knowledgebase ## Basic Information - **Project Name**: knowledgebase - **Description**: 构建本地知识库 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-22 - **Last Updated**: 2026-05-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 本地RAG知识库问答系统 基于 DeepSeek 模型的完全本地化知识库问答系统,支持本地模型和云端API一键切换。 ## ✨ 特性 - **完全本地化**:文档存储和向量检索都在本地,保护数据隐私 - **双模型支持**:一键切换本地 DeepSeek 模型和云端 DeepSeek API - **多向量数据库**:生产使用 **Qdrant**(高性能,支持 local/SQLite 和 server/Docker 双模式),`dev/` 目录下另有 **Chroma** 和 **Milvus**(实验性)实现 - **多格式文档**:支持 TXT、Markdown、PDF、EPUB、HTML、DOCX、PPTX、CSV 等格式 - **智能检索**:基于向量相似度的语义搜索 - **答案溯源**:每个回答都会标注参考文档来源 - **增量更新**:只添加新文档,无需重建整个索引 - **断点续传**:索引构建中断后可从断点继续 - **进度显示**:实时显示处理进度和速度统计 - **一键运行**:提供自动化脚本,自动检查环境、安装依赖、构建索引 ## 🎯 适用场景 - 个人知识库管理(学习笔记、技术文章、电子书) - 团队内部文档问答(规章制度、操作手册) - 项目文档检索(需求文档、设计文档) - 政策法规查询(法律条文、公司政策) - 技术文档助手(API文档、用户手册) ## 📋 系统要求 ### 硬件要求 | 配置 | 最低要求 | 推荐配置 | |------|----------|----------| | 内存 | 8GB | 16GB | | 硬盘 | 10GB | 20GB | | CPU | 4核 | 8核 | ### 软件要求 - Python 3.9 或更高版本 - Ollama(本地模型服务) - macOS / Linux / Windows(WSL2) ## 🚀 快速开始 ### 一键运行(推荐) ```bash chmod +x run.sh && ./run.sh ``` 脚本会自动完成: 1. 检查 Python 环境 2. 检查并启动 Ollama 服务 3. 下载所需模型(deepseek-r1:1.5b、nomic-embed-text) 4. 安装 Python 依赖 5. 运行模型测试 6. 构建知识库索引(支持断点续传) 7. 启动问答系统 ### 分步启动 #### 第一步:安装 Ollama 和模型 ```bash # 安装 Ollama(macOS) brew install ollama # 或访问 https://ollama.com 下载对应版本 # 启动 Ollama 服务 ollama serve # 新开终端,下载所需模型 ollama pull deepseek-r1:1.5b ollama pull nomic-embed-text ``` #### 第二步:创建项目 ```bash # 创建项目目录 mkdir knowledgebase && cd knowledgebase # 创建文档目录 mkdir docs # 创建示例文档 # 略 ``` #### 第三步:安装 Python 依赖 ```bash pip3 install -r requirements.txt ``` #### 第四步:创建脚本文件 将以下脚本文件放入项目目录: | 文件 | 说明 | |------|------| | `run.sh` | 一键运行脚本 | | `config.py` | 配置文件(切换模型 / 向量数据库类型 / Qdrant 模式) | | `model_client.py` | 统一模型调用接口 | | `build_index_qdrant.py` | 索引构建脚本(默认使用 Qdrant,也支持 Chroma) | | `query_kb_qdrant.py` | Qdrant 问答系统主程序 | | `test.py` | 模型测试脚本 | | `dev/` | 其他向量数据库实验版本(Chroma、Milvus) | #### 第五步:构建索引 ```bash # 日常使用:自动检测新文档,有则更新,无则跳过 python3 build_index_qdrant.py # 强制重建(删除现有数据重新构建) python3 build_index_qdrant.py --update ``` #### 第六步:启动问答 ```bash # 默认使用 Qdrant(推荐) python3 query_kb_qdrant.py # 如需使用 Chroma,运行 dev/ 下的版本: # python3 dev/query_kb_chroma.py ``` ## 📚 支持的文档格式 | 格式 | 扩展名 | 依赖 | 说明 | |------|--------|------|------| | 文本文件 | `.txt` | 无 | 纯文本,UTF-8/GBK编码 | | Markdown | `.md` | 无 | 保留标题结构 | | PDF | `.pdf` | `pypdf` | 自动提取文本 | | HTML | `.html` | `beautifulsoup4` | 自动提取正文 | | EPUB | `.epub` | `ebooklib`, `beautifulsoup4` | 电子书格式 | | Word | `.docx` | `python-docx` | 可选支持 | | PowerPoint | `.pptx` | `python-pptx` | 演示文稿 | | CSV | `.csv` | 无 | 表格数据 | | Excel | `.xlsx` `.xls` | `openpyxl`, `xlrd` | 自动按 sheet 拆分 | ## ⚙️ 配置说明 ### 向量数据库配置(`config.py`) ```python # 向量数据库类型(当前生产使用 qdrant) VECTOR_DB_TYPE = "qdrant" # qdrant(默认,推荐)| chroma(实验性,见 dev/) # Qdrant 模式(VECTOR_DB_TYPE = "qdrant" 时生效) QDRANT_MODE = "local" # "local" | "server" | "memory" QDRANT_DIR = "./qdrant_data" ``` > **Chroma 和 Milvus 用户**:这些实现在 `dev/` 目录下,不作为通用推荐。 > Chroma 入口为 `dev/query_kb_chroma.py`,Milvus 当前有 bug 尚未修复。 #### Qdrant 场景(高性能选择) Qdrant 支持双模式,覆盖开发到生产的所有需求: | 模式 | 存储引擎 | 索引 | 适用场景 | |--------|----------------------------|------------------|------------------------------| | local | SQLite | 无 HNSW | 开发测试、小规模数据 | | server | RocksDB/Gridstore + HNSW | ANN 近似搜索 | 生产部署、大规模数据 | ```python # 启用 Qdrant VECTOR_DB_TYPE = "qdrant" QDRANT_MODE = "local" # 本地模式(默认) QDRANT_MODE = "server" # 服务器模式(Docker) ``` ### 模型切换(`config.py`) ```python # 修改这一行即可切换模型 MODEL_TYPE = "local" # 使用本地模型 MODEL_TYPE = "cloud" # 使用云端 API ``` ### 本地模式配置 ```python LOCAL_MODEL_NAME = "deepseek-r1:1.5b" OLLAMA_BASE_URL = "http://localhost:11434" ``` ### 云端模式配置 ```python # 方式一:直接填写(不推荐) DEEPSEEK_API_KEY = "sk-你的密钥" # 方式二:环境变量(推荐) export DEEPSEEK_API_KEY="sk-你的密钥" CLOUD_MODEL_NAME = "deepseek-v4-flash" CLOUD_API_BASE = "https://api.deepseek.com/v1" ``` ### 检索和生成参数 ```python TOP_K = 3 # 检索相关文档数量(1-10) TEMPERATURE = 0.3 # 答案随机性(0-1,越低越保守) MAX_TOKENS = 1024 # 最大输出长度 ``` ### Qdrant 服务器模式(生产推荐) 本地文件模式适合单机开发和小规模数据,使用 SQLite 存储引擎;服务器模式使用 RocksDB(≤1.12)/ Gridstore(≥1.13)+ HNSW 索引,支持大规模数据和远程访问。 ```python # config.py 中切换运行模式 QDRANT_MODE = "server" # "local"(默认)| "server" | "memory" # 服务器模式下需要配置的主机信息 QDRANT_HOST = "localhost" QDRANT_PORT = 6333 # HTTP QDRANT_GRPC_PORT = 6334 # gRPC ``` **启动 Qdrant 服务器:** ```bash # Docker 方式(推荐) docker run -d -p 6333:6333 -p 6334:6334 \ -v $(pwd)/qdrant_storage:/qdrant/storage \ qdrant/qdrant ``` 切换后建库和查询脚本会自动通过 HTTP API 连接服务器,无需修改其他代码。 ## 📖 使用指南 ### 基本操作 | 命令 | 说明 | |------|------| | `你的问题` | 直接输入问题,系统会从知识库检索并回答 | | `info` | 查看当前使用的模型信息 | | `switch` | 查看模型切换方法 | | `quit` | 退出程序 | ### 问答示例 ```` ./run.sh ========================================== 本地知识库 RAG 系统 - 一键运行 ========================================== ✓ 依赖已安装 构建/更新索引... ============================================================ 知识库构建工具(向量库: qdrant,嵌入模型: nomic-embed-text) ============================================================ 1. 加载文档... 2026-05-22 15:32:38,892 - INFO - 加载: example.md 2026-05-22 15:32:38,894 - INFO - ✓ 成功 (1 段) 2026-05-22 15:32:38,894 - INFO - 加载: Effective-Python-2nd.pdf 2026-05-22 15:32:45,736 - INFO - ✓ 成功 (472 段) 2026-05-22 15:32:45,736 - INFO - 加载: C-Programming-Language.pdf 2026-05-22 15:32:47,009 - INFO - ✓ 成功 (238 段) 2026-05-22 15:32:47,009 - INFO - 加载: Python-Crash-Course-2015.pdf 2026-05-22 15:32:54,431 - INFO - ✓ 成功 (562 段) 2026-05-22 15:32:54,431 - INFO - 加载: Linux-Device-Driver-3th.pdf 2026-05-22 15:33:01,985 - INFO - ✓ 成功 (632 段) 2026-05-22 15:33:01,985 - INFO - 加载: c++-primer-5th.pdf 2026-05-22 15:33:11,570 - INFO - ✓ 成功 (1399 段) 2026-05-22 15:33:11,570 - INFO - 加载: fluent-python-2th.epub 2026-05-22 15:33:12,095 - INFO - ✓ 成功 (1 段) 2026-05-22 15:33:12,095 - INFO - 加载: C-and-Pointer-2020.epub 2026-05-22 15:33:12,421 - INFO - ✓ 成功 (1 段) 共加载 3306 个文档 文件类型: {'markdown': 1, 'pdf': 3303, 'epub': 2} 2026-05-22 15:33:12,425 - INFO - 去重: 3306 -> 3107 2. 切分文档... 生成 18863 个文本块 3. 创建向量库 (qdrant)... 2026-05-22 15:33:12,719 - INFO - HTTP Request: GET http://localhost:6333 "HTTP/1.1 200 OK" 2026-05-22 15:33:12,723 - INFO - HTTP Request: GET http://localhost:6333/collections "HTTP/1.1 200 OK" 2026-05-22 15:33:12,723 - INFO - 集合已存在: knowledge_base 2026-05-22 15:33:12,723 - INFO - 自动模式:增量更新已有数据 2026-05-22 15:44:04,691 - INFO - HTTP Request: PUT http://localhost:6333/collections/knowledge_base/points?wait=true "HTTP/1.1 200 OK" 添加文本块: 100%|██████████████████████████████████████████████████████████████████████████████████████████████| 19/19 [10:51<00:00, 34.31s/批次] ✅ 构建完成! 耗时: 685.81 秒 (27.50 块/秒) 启动问答系统... ============================================================ 初始化知识库问答系统(QdrantDB) ============================================================ 1. 加载嵌入模型... ✓ 嵌入模型: nomic-embed-text 2. 加载 Qdrant 向量库... ✓ Qdrant 加载成功(服务器模式) - 服务器: localhost:6333 - 集合名称: knowledge_base - 文档数量: 37726 - 向量维度: 768 3. 加载大模型... ✓ 本地模型已就绪: deepseek-r1:1.5b ============================================================ 当前模式: 本地 模型名称: deepseek-r1:1.5b 检索数量: 10 温度参数: 0.3 ============================================================ 📊 知识库统计: - 文档总数: 37726 - 文件类型: {'pdf': 798, 'epub': 202} 📝 命令说明: - 直接输入问题开始问答 - 'stats' 查看知识库统计 - 'switch' 查看切换模型方法 - 'info' 查看当前模型信息 - 'score <问题>' 查看相似度分数 - 'filter <类型> <问题>' 按类型过滤 - 'help' 显示所有命令 - 'quit' 退出 ------------------------------------------------------------ ❓ 你: Python列表的使用方法 🔍 问题: Python列表的使用方法 💡 检索相关文档... ✓ 找到 10 个相关文档 💡 生成答案... 助手: Python列表是动态容器,支持多种操作,以下是常见的列表使用方法: 1. **创建列表** ```python my_list = [1, 2, 3] ``` 2. **增加元素** 使用 `append()` 方法添加元素到列表末尾。 ```python my_list.append(4) # 结果:[1, 2, 3, 4] ``` 3. **删除元素** - 删除指定位置的元素:`del my_list[i]` - 删除所有出现该值的元素:`my_list.remove(x)` ```python my_list.remove(2) # 结果:[1, 3] del my_list[1] # 结果:[1, 3] # 使用 del 列表中所有出现的 2 my_list.remove(2) ``` ### 总结: 列表的主要功能是动态存储和操作,支持增加、删除、查找等常用操作。通过上述方法,可以轻松创建和管理列表对象。 📚 参考来源: C-and-Pointer-2020.epub, fluent-python-2th.epub ```` ### 添加新文档 ```bash # 方法1:使用一键运行(推荐) cp your_document.pdf docs/ ./run.sh # 方法2:直接构建(自动检测新文档) cp your_document.pdf docs/ python3 build_index_qdrant.py # 方法3:强制重建 python3 build_index_qdrant.py --update ``` ### 更新现有文档 ```bash # 文档内容变化后需要强制重建(删除旧数据重新索引) python3 build_index_qdrant.py --update ``` ## 🔧 高级配置 ### 调整分块大小(`build_index_qdrant.py` / `config.py`) ```python # 技术文档:更大块保留上下文 CHUNK_SIZE = 800 CHUNK_OVERLAP = 100 # 问答文档:小块提高精度 CHUNK_SIZE = 300 CHUNK_OVERLAP = 30 # 源码文档:中等块 CHUNK_SIZE = 1000 CHUNK_OVERLAP = 200 ``` ### 性能优化建议 | 文档类型 | CHUNK_SIZE | CHUNK_OVERLAP | 原因 | |---------|------------|---------------|------| | 长篇文章 | 800-1000 | 150-200 | 保留完整段落 | | 问答对 | 200-300 | 20-30 | 提高匹配精度 | | 代码 | 500-800 | 50-100 | 保持函数完整 | | 法律条文 | 400-600 | 50 | 保持条款独立 | ### 使用其他本地模型 ```bash # 下载其他模型 ollama pull qwen2:7b ollama pull llama3:8b ollama pull mistral:7b # 修改 config.py LOCAL_MODEL_NAME = "qwen2:7b" ``` ### 使用其他云端模型 ```python # 修改 config.py CLOUD_MODEL_NAME = "deepseek-v4-base" # 或其他兼容 OpenAI API 的模型 CLOUD_API_BASE = "https://api.deepseek.com/v1" ``` ### **详细使用介绍** ```bash # 一键运行(推荐) chmod +x run.sh && ./run.sh # 或分步执行 python3 build_index_qdrant.py python3 query_kb_qdrant.py # 更新知识库 ./run.sh # 或 python3 build_index_qdrant.py # 重建知识库 python3 build_index_qdrant.py --update ``` **切换模型:** 修改 `config.py` 中的 `MODEL_TYPE = "local"` 或 `"cloud"` **切换 Qdrant 模式:** 修改 `config.py` 中的 `QDRANT_MODE = "local"` 或 `"server"` **切换 Qdrant 模式:** 修改 `config.py` 中的 `QDRANT_MODE = "local"` 或 `"server"` **性能优化:** 调整 `config.py` 中的 `BATCH_SIZE` 和 `CHUNK_SIZE` 参数 ## 📁 项目结构 ``` knowledgebase/ ├── run.sh # 一键运行脚本 ├── config.py # 配置文件(切换模型 / Qdrant 模式) ├── model_client.py # 统一模型调用接口 ├── build_index_qdrant.py # 索引构建脚本(Qdrant + Chroma) ├── query_kb_qdrant.py # Qdrant 问答系统主程序(默认) ├── test.py # 模型测试脚本 ├── design.md # 设计文档 ├── issues.md # 踩坑记录 ├── ROADMAP.md # 代码阅读路线图 ├── dev/ # 实验性向量数据库实现 │ ├── query_kb_chroma.py # Chroma 问答 │ ├── build_index_chroma.py # Chroma 建库 │ ├── query_kb_milvus.py # Milvus 问答(有 bug) │ └── build_index_milvus.py # Milvus 建库(有 bug) ├── docs/ # 文档目录(放你的文件) ├── chroma_data/ # Chroma 向量数据库(自动生成) ├── qdrant_data/ # Qdrant 本地模式向量数据库(自动生成) ├── build_index.log # 构建日志文件(自动生成) └── .first_run_done # 首次运行标志(自动生成) ``` ## 📊 性能参考 ### 索引构建性能对比(实际测试数据) 测试环境:Intel/Apple Silicon Mac,16GB 内存,SSD 硬盘 - **文档数量**:3,306 个(去重后 3,107 个) - **文本块数量**:18,863 个 - **向量维度**:768(nomic-embed-text) - **测试日期**:2026-05-22 #### 各模式性能对比 | 指标 | Chroma | Qdrant(本地模式) | Qdrant(服务器模式) | |------|--------|-------------------|---------------------| | **文档加载** | ~35秒 | ~35秒 | ~35秒 | | **文本分块** | ~5秒 | ~5秒 | ~5秒 | | **向量生成** | ~10分钟 | ~10分钟 | ~10分钟 | | **总构建时间** | ~12分钟 | ~9.7分钟¹ | **~11.4分钟** | | **处理速度** | ~26 块/秒 | 26.26 块/秒 | **27.50 块/秒** | | **磁盘占用** | 150-200MB | 150-200MB | 200-300MB | | **内存占用** | 2-3GB | 2-3GB | 3-3.5GB | | **批次大小** | 500/批 | 1000/批 | 1000/批 | | **批次数** | ~38 批 | 16 批 | 19 批 | | **额外依赖** | 无 | 无 | Docker | #### 实际测试数据详情 **服务器模式**(18,863 个文本块 → 37,726 个向量点): - 总耗时:**685.81 秒**(约 11.4 分钟) - 处理速度:**27.50 块/秒** - 批次耗时:28-46 秒/批(平均 34.3 秒/批) - Qdrant 版本:latest (Docker) **本地模式**(15,221 个文本块 → 30,442 个向量点): - 总耗时:**579.65 秒**(约 9.7 分钟) - 处理速度:**26.26 块/秒** - 批次耗时:28-52 秒/批(平均 34.5 秒/批) - Qdrant 版本:local (SQLite) ### 批次处理性能对比 | 批次阶段 | 本地模式 | 服务器模式 | 说明 | |----------|----------|------------|------| | 前期(1-10批) | 28-30秒/批 | 28-30秒/批 | 性能基本持平 | | 中期(11-15批) | 28-34秒/批 | 29-46秒/批 | 服务器波动较大 | | 后期(最后批次) | 51.5秒/批 | 45.9秒/批 | 服务器更优 | | **稳定性** | 更稳定 | 略有波动 | 本地模式更稳定 | ### 性能结论 1. **构建速度**:三种模式差异不大(±15%以内) 2. **本地模式**:最稳定,资源占用少,适合个人使用 3. **服务器模式**:后期处理更优,支持并发,适合生产环境 4. **Chroma**:最轻量,适合快速原型开发 ### 选择建议 | 使用场景 | 推荐方案 | 理由 | |----------|----------|------| | 个人学习/测试 | **Qdrant 本地模式** 或 Chroma | 简单、稳定、无需额外服务 | | 小规模知识库(<2万块) | **Qdrant 本地模式** | 性能足够,9.7分钟构建完成 | | 生产环境/团队协作 | **Qdrant 服务器模式** | 支持并发、远程访问、更可靠 | | 快速原型开发 | **Chroma** | 最轻量,零配置 | ### 优化建议 #### 批次大小优化 ```python # config.py BATCH_SIZE = 1000 # 推荐值,相比500提升40%速度 CHUNK_SIZE = 1000 # 根据文档类型调整 CHUNK_OVERLAP = 200 ### 本地模式(deepseek-r1:1.5b) | 指标 | 数值 | |------|------| | 首次索引速度 | 100页/分钟 | | 检索延迟 | 50-100ms | | 生成速度 | 20-30 token/秒 | | 内存占用 | 2-3GB | | 向量库大小 | 文档的2-3倍 | ### 云端模式(deepseek-v4-flash) | 指标 | 数值 | |------|------| | 首次索引速度 | 100页/分钟 | | 检索延迟 | 50-100ms | | 生成速度 | 网络延迟+模型响应 | | API 成本 | 按 token 计费 | ## 🔐 隐私说明 - **本地模式**:所有数据处理都在本地,文档不会离开你的电脑 - **云端模式**:只有问题发送到云端 API,文档和向量库仍在本地 - **Qdrant**:本地文件模式使用 SQLite,服务器模式使用 RocksDB/Gridstore,均存储在本机 - **建议**:敏感文档使用本地模式 ## ❓ 常见问题 ### Q1: 提示找不到模块 **解决方法**: ```bash pip3 install 缺少的包名 # 完整安装 pip3 install -r requirements.txt ``` ### Q2: Ollama 连接失败 **解决方法**: ```bash # 确保 Ollama 服务在运行 ollama serve # 检查模型是否已下载 ollama list # 重启 Ollama pkill ollama && ollama serve ``` ### Q3: Qdrant 连接失败 **解决方法**: ```bash # 服务器模式:检查 Docker 是否运行 docker ps | grep qdrant # 启动 Qdrant 服务器 docker run -d -p 6333:6333 -p 6334:6334 \ -v $(pwd)/qdrant_storage:/qdrant/storage \ qdrant/qdrant # 本地模式:检查数据目录 ls qdrant_data/ # 清理损坏数据(需删除后重新构建) rm -rf qdrant_data/ python3 build_index_qdrant.py --auto ``` ### Q4: 云端 API 调用失败 **解决方法**: ```bash # 检查 API Key 是否正确 export DEEPSEEK_API_KEY="你的密钥" # 测试连接 curl https://api.deepseek.com/v1/models \ -H "Authorization: Bearer $DEEPSEEK_API_KEY" ``` ### Q5: EPUB 解析失败 **解决方法**: ```bash # 安装依赖 pip3 install ebooklib beautifulsoup4 # 或转换为 TXT 格式 ebook-convert book.epub book.txt ``` ### Q6: 内存不足 **解决方法**: - 减小 `CHUNK_SIZE`(如改为 300) - 减小 `BATCH_SIZE`(如改为 200) - 减少 `TOP_K`(如改为 2) - 分批处理文档 ### Q7: 知识库更新后如何生效 **解决方法**: ```bash # 使用 run.sh 一键更新 ./run.sh # 或手动更新(自动检测新文档) python3 build_index_qdrant.py # 或强制重建(文档内容已修改) python3 build_index_qdrant.py --update ``` ### Q8: 构建中断了怎么办 **解决方法**: ```bash # 重新运行即可(自动增量续传) python3 build_index_qdrant.py --auto ``` ### Q9: 如何查看构建统计 **解决方法**: ```bash # 查看构建报告 cat build_report.json # 查看构建日志 tail -f build_index.log ``` ### Q10: 如何加速索引构建 **解决方法**: ```python # 增大批处理大小 BATCH_SIZE = 1000 # 默认500 # 减少分块重叠 CHUNK_OVERLAP = 20 # 默认50 # 使用更轻量的嵌入模型 # 在 Ollama 中下载 smaller-embedding 模型 ``` ## 📝 更新日志 ### v2.2.0(当前版本) - ✅ Qdrant 成为默认向量数据库(支持 local/SQLite + server/Docker 双模式) - ✅ Chroma 和 Milvus 的实验性实现移至 `dev/` 目录 - ✅ 启动输出精简为一行关键信息 - ✅ 新增 `ROADMAP.md` 代码阅读路线图 - ✅ issues.md 记录 `__pycache__` 陷阱和 gRPC 兼容性修复 ### v2.1.0 - ✅ 同时支持 Chroma 和 Qdrant 两种向量数据库 ### v2.0.0 - ✅ 切换到 Qdrant 向量数据库(支持 local/server 双模式) - ✅ 新增 `QDRANT_MODE` 一键切换 local/server 模式 - ✅ 新增 `--auto` / `--skip-if-exists` 脚本参数 - ✅ run.sh 自动跳过已构建的知识库 - ✅ 修复 QdrantVectorStore payload 字段映射问题(来源显示正常) - ✅ 新增 `issues.md` 踩坑记录 - ✅ 更新 `design.md` 设计文档同步代码 ### v1.3.0 - ✅ 切换到 ChromaDB 向量数据库(更稳定、易用) - ✅ 新增增量更新模式(只添加新文档) - ✅ 新增断点续传功能(中断后继续) - ✅ 添加进度条显示(tqdm) - ✅ 添加错误重试机制(tenacity) - ✅ 新增日志系统(文件+控制台) - ✅ 新增构建统计报告 - ✅ 新增文档去重功能 - ✅ 支持更多文档格式(DOCX、PPTX、CSV) - ✅ 优化内存使用(分批处理) - ✅ 添加三种运行模式选择 ### v1.2.0 - 新增 EPUB 电子书格式支持 - 新增 HTML 网页格式支持 - 新增一键运行脚本 `run.sh` - 新增知识库更新脚本 `update-db.sh` - 优化依赖检查和安装流程 ### v1.1.0 - 新增云端 DeepSeek API 支持 - 一键切换本地/云端模型 - 支持 PDF 和 Word 文档 ### v1.0.0 - 支持本地 DeepSeek 模型 - 支持 TXT 和 Markdown 格式 - 向量检索和问答功能 ## 🔮 未来规划 - [ ] Web UI 界面(Gradio/Streamlit) - [ ] 多轮对话历史记忆 - [ ] 文档自动分类和标签 - [ ] 答案置信度评分 - [ ] 批量导入导出功能 - [ ] 多知识库隔离管理 ## 📄 许可证 MIT License ---