基于 RAG(检索增强生成)的本地知识库,支持文档导入、语义检索与 AI 问答
- 📄 多格式文档加载:PDF、Markdown、TXT、JSON、HTML
- ✂️ 智能文本分块:按语义边界切分,支持重叠
- 🔍 语义检索:基于向量相似度的精准搜索
- 🤖 AI 问答:RAG 模式,基于知识库生成回答
- 💾 本地存储:JSON 向量库,无需数据库
- 🔌 多模型支持:OpenAI 兼容 API,支持 MiMo/GPT/Claude 等
- 🏠 离线模式:无 API Key 时使用本地 TF-IDF 向量化
git clone https://github.com/jiangshangwan/mimo-kb.git
cd mimo-kb无需 npm install,零外部依赖。
# 添加单个文件
node index.js add README.md
# 添加整个目录
node index.js add ./docs/
# 添加 PDF
node index.js add report.pdf# 语义搜索 + AI 问答(需要配置 API Key)
node index.js query "如何使用这个项目?"
# 仅检索模式(不需要 API Key)
node index.js query "安装方法" --no-answer
# 返回更多结果
node index.js query "架构设计" --top-k 10# 查看统计
node index.js stats
# 列出文档
node index.js list
# 删除文档
node index.js delete <document-id>创建 config.json:
{
"embedding": {
"provider": "openai",
"apiKey": "your-api-key",
"baseUrl": "https://api.openai.com/v1",
"model": "text-embedding-3-small"
},
"chat": {
"provider": "openai",
"apiKey": "your-api-key",
"baseUrl": "https://api.openai.com/v1",
"model": "gpt-4o-mini"
},
"chunking": {
"chunkSize": 500,
"overlap": 50
},
"store": {
"path": "./data",
"similarityThreshold": 0.3,
"topK": 5
}
}{
"embedding": {
"provider": "openai",
"apiKey": "your-mimo-api-key",
"baseUrl": "https://api.mimo.xiaomi.com/v1",
"model": "mimo-embedding"
},
"chat": {
"provider": "openai",
"apiKey": "your-mimo-api-key",
"baseUrl": "https://api.mimo.xiaomi.com/v1",
"model": "mimo-v2"
}
}不配置 API Key 时自动使用本地 TF-IDF 向量化,无需网络连接。
mimo-kb/
├── index.js # CLI 入口
├── lib/
│ ├── config.js # 配置管理
│ ├── loader.js # 文档加载(PDF/MD/TXT/JSON/HTML)
│ ├── chunker.js # 智能文本分块
│ ├── embedding.js # 向量化(API + 本地 TF-IDF)
│ ├── vectorstore.js # JSON 向量存储 + 相似度检索
│ └── rag.js # RAG 管道(检索增强生成)
├── config.example.json # 示例配置
└── README.md
文档 → Loader → Chunker → Embedding → VectorStore
↓
用户查询 → Embedding → 相似度检索 → Top-K 结果 → RAG → AI 回答
- Node.js >= 18.0.0
- 无外部依赖
MIT
MIT
MIT