# MowAgent
**Repository Path**: interation/mow-agent
## Basic Information
- **Project Name**: MowAgent
- **Description**: MowAgent是智能知识库问答后端服务。它利用 RAG (检索增强生成) 技术,结合Qwen 强大的语言理解能力和 Milvus 向量数据库的高效检索能力,允许用户上传文档(如 PDF, Markdown, TXT 等),并基于文档内容进行智能问答。
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2026-03-31
- **Last Updated**: 2026-04-10
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Nestjs, langchain
## README
# MowAgent




**基于 NestJS + LangChain + 千问 + Milvus 构建的企业级智能知识库问答系统**
[](https://opensource.org/licenses/MIT)
---
## 📖 项目简介
**MowAgent** 是一个高性能、可扩展的智能知识库问答后端服务。它利用 **RAG (检索增强生成)** 技术,结合 **通义千问 (Qwen)** 强大的语言理解能力和 **Milvus** 向量数据库的高效检索能力,允许用户上传文档(如 PDF, Markdown, TXT 等),并基于文档内容进行智能问答。
后端采用 **NestJS** 框架,确保代码的模块化、类型安全和高可维护性,并强制要求 **Node.js ^22.22** 版本以利用最新的性能特性和 API。
## ✨ 核心功能
- **📚 知识库管理**: 支持多种格式文档上传、解析、分块(Chunking)。
- **🧠 向量检索**: 基于 Milvus 的高性能向量存储与相似度搜索。
- **🤖 智能问答**: 集成 LangChain 框架,调用通义千问模型进行上下文理解与回答生成。
- **🔗 会话管理**: 支持多轮对话,保留历史上下文。
- **🛡️ 企业级架构**: 基于 NestJS 模块化设计,支持 Guard 鉴权、Interceptor 拦截、Pipe 验证。
- **🐳 容器化支持**: 提供 Docker Compose 配置,一键启动依赖服务。
## 🛠 技术栈
| 分类 | 技术选型 | 说明 |
| :------------- | :--------------- | :----------------------------- |
| **运行环境** | Node.js `^22.22` | 必须版本,利用最新 V8 引擎特性 |
| **后端框架** | NestJS | 渐进式 Node.js 框架 |
| **AI 编排** | LangChain.js | LLM 应用开发框架 |
| **推理模型** | 通义千问 (Qwen) | 通过 DashScope API 调用 |
| **向量数据库** | Milvus | 高性能向量检索引擎 |
| **语言** | TypeScript | 强类型支持 |
| **包管理** | pnpm / npm | 推荐 pnpm |
## 📋 前置要求
在开始之前,请确保您的环境满足以下条件:
1. **Node.js**: 版本必须为 `^22.22`
```bash
node -v # 应输出 v22.22.x 或更高
```
2. **Docker & Docker Compose**: 用于启动 Milvus 数据库。
3. **阿里云 DashScope API Key**: 用于调用通义千问模型。
4. **Git**: 用于克隆代码库。
## 🚀 快速开始
### 1. 克隆项目
```bash
git clone https://gitee.com/interation/mow-agent.git
cd MowAgent
```
### 2. 安装依赖
推荐使用 `pnpm`,也可以使用 `npm`。
```bash
# 使用 pnpm
pnpm install
```
### 3. 配置环境变量
复制环境变量示例文件并修改配置:
```bash
cp .env.example .env
```
编辑 `.env` 文件,填入您的配置信息:
```ini
# 阿里云 DashScope (通义千问)
OPENAI_API_KEY=xxxxxx
OPENAI_BASE_URL=xxxxxx
MODEL_NAME=xxxxxx
EMBEDDING_MODAL_NAME=xxxxxx
# Milvus 向量数据库
MILVUS_ADDRESS=xxxxxx
```
### 4. 启动依赖服务 (Milvus)
项目根目录包含 `docker-compose.yml` 用于启动 Milvus。
```bash
docker-compose up -d
```
_注意:首次启动 Milvus 可能需要几分钟时间。_
### 5. 启动开发服务器
```bash
# 开发模式 (热重载)
npm run start:dev
# 生产模式
npm run build
npm run start:prod
```
服务将在 `http://localhost:3000` 启动。
## ⚙️ 核心实现逻辑
1. **文档摄入 (Ingestion)**:
- 用户上传文件 -> NestJS 接收流 -> 保存临时文件。
- LangChain `DocumentLoader` 加载文件 -> `TextSplitter` 分块。
- 调用 DashScope Embedding 接口生成向量。
- 存入 Milvus 数据库。
2. **检索生成 (RAG)**:
- 用户提问 -> 生成查询向量。
- Milvus 相似度搜索 (Similarity Search) 获取 Top-K 相关片段。
- 构建 Prompt (系统提示词 + 上下文 + 用户问题)。
- 调用 Qwen 模型生成最终答案。
## 📦 部署
### Docker 部署
构建应用镜像并运行:
```bash
docker build -t mow-agent .
docker run -d -p 3000:3000 --env-file .env mow-agent
```
## ⚠️ 注意事项
1. **Node 版本**: 本项目严格依赖 Node.js `^22.22`。较低版本可能导致部分新 API 不可用或行为不一致。
2. **Milvus 兼容性**: 确保本地 Docker 运行的 Milvus 版本与 LangChain Milvus 向量存储插件兼容(推荐 Milvus 2.3+)。
3. **API 配额**: 通义千问 API 有速率限制和 Token 消耗,请注意监控 DashScope 控制台的使用情况。
4. **内存管理**: 处理大文件时,注意 Node.js 进程内存限制,必要时调整 `--max-old-space-size`。
## 🤝 贡献
欢迎提交 Issue 和 Pull Request!
1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启 Pull Request
## 📄 许可证
本项目采用 [MIT](LICENSE) 许可证。
---
MowAgent | 让知识触手可及