# 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](https://img.shields.io/badge/NestJS-E0234E?style=for-the-badge&logo=nestjs&logoColor=white) ![Node.js](https://img.shields.io/badge/Node.js-22.22-339933?style=for-the-badge&logo=node.js&logoColor=white) ![LangChain](https://img.shields.io/badge/LangChain-1C3C3C?style=for-the-badge&logo=langchain&logoColor=white) ![Milvus](https://img.shields.io/badge/Milvus-00A1EA?style=for-the-badge&logo=milvus&logoColor=white) **基于 NestJS + LangChain + 千问 + Milvus 构建的企业级智能知识库问答系统** [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](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 | 让知识触手可及