artoo

mcp
Security Audit
Warn
Health Warn
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 5 GitHub stars
Code Pass
  • Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
  • Permissions — No dangerous permissions requested

No AI report is available for this listing yet.

SUMMARY

🤖 An open-source Agentic RAG framework powered by ReAct Agent — LLM autonomously orchestrates hybrid retrieval, deep reading, and web search for traceable, evidence-first Q&A over your documents.

README.md

🤖 Artoo — 让知识库自己去检索:ReAct Agent 驱动的 Agentic RAG 框架

开源 · LLM 驱动 · 可私有化部署的智能知识库系统

Artoo 以 ReAct Agent 为核心,让大模型自主编排关键词检索、语义检索、深度阅读、网页搜索与 MCP 工具,构建"先检索证据、再作答"的可追溯问答体验。

License: MIT
Python 3.12
FastAPI
React
Milvus

| 简体中文 | English |

项目介绍架构设计功能概览快速开始文档开发指南


📌 项目介绍

Artoo 是一款开源的、基于大语言模型(LLM)的 Agentic RAG 知识库框架,专为企业级文档理解与可追溯问答场景打造。

框架围绕三大核心能力构建:ReAct Agent 智能推理让大模型在 Think → Act → Observe 循环中自主决定检索策略与停止时机;三路混合检索通过稠密语义、稀疏向量与 BM25 全文检索并行召回,经 RRF 融合、Rerank 精排、MMR 去冗余与父块扩展输出高质量上下文;结构感知文档处理按文档逻辑结构切分、父子块映射,并对图文混排文档做并发 OCR。配合可视化的多模型管理、Embedding / Rerank / OCR 服务热切换、MCP 工具集成、Agent 技能(Skills)与三层递进式上下文管理,Artoo 把分散文档沉淀为可查询、可推理、可溯源的知识资产。

所有 AI 推理(LLM / Embedding / Rerank / OCR)均通过 HTTP 调用外部服务,后端轻量、易于私有化离线部署,数据完全自主可控。Agent 推理过程通过 EventBus 实时流式推送到前端,思考、工具调用、引用来源、上下文 Token 占用全程可视。

✨ 核心亮点

  • 真正的 ReAct Agent —— 大模型通过 function calling 自主调用工具、分析结果、决定继续检索还是提交答案,而非固定流水线编排。
  • Evidence-First 检索纪律 —— 内置 Progressive RAG 系统提示词(Assess-Reconnaissance-Plan-Execute 工作流),强制"先检索、深读 chunk、再作答",杜绝凭记忆臆造。
  • 三路混合检索 —— Dense + Sparse + BM25 并行召回,RRF 融合 + Rerank 精排 + 复合评分 + MMR 去冗余 + 父块扩展。
  • 三层递进式上下文管理 —— BPE Token 估算 + API Usage 增量追踪 + LLM 摘要合并 + 分组截断兜底,长对话不超窗。
  • 可扩展工具生态 —— 内置知识检索、关键词匹配、深度阅读、附件阅读、网页搜索、思考、技能加载等工具,并支持接入远程 MCP Server。
  • 多租户与权限治理 —— 固定角色(admin / member)+ 归属轴的 RBAC 模型,知识库私有 / 组织可见 + 点对点共享,超级管理员、邀请注册与审计日志,三类 API Key 凭据模型。
  • 全程可视化 —— Agent 思考、工具调用、引用溯源、Token 占用通过 SSE 实时推送,前端逐 token 渲染。

🏗️ 架构设计

┌─────────────────────────────────────────────────────────────┐
│                          接入层                              │
│   Chat API (OpenAI 兼容 · SSE)  │  Admin API (RESTful)       │
│   MCP Server (对外暴露知识库能力)                            │
├─────────────────────────────────────────────────────────────┤
│                     ReAct Agent 引擎                         │
│   Think(流式LLM) → Analyze(终止判定) → Act(工具) → Observe   │
│   EventBus 事件总线  │  三层递进式上下文管理  │  Skills 技能  │
├─────────────────────────────────────────────────────────────┤
│                         工具层                               │
│  knowledge_search │ grep_chunks │ list_knowledge_chunks      │
│  read_attachment │ read_skill │ thinking │ web_search        │
│  final_answer │ MCP Tools                                    │
├─────────────────────────────────────────────────────────────┤
│                        检索工具层                            │
│   Dense + Sparse + BM25 → RRF 融合 → Rerank → MMR → 父块扩展 │
├─────────────────────────────────────────────────────────────┤
│                      索引 / 存储层                           │
│   Milvus (稠密 + 稀疏向量)  │  PostgreSQL (元数据 + 配置)     │
├─────────────────────────────────────────────────────────────┤
│                       数据处理层                             │
│   Loader → OCR → Chunker → Embedder → Indexer                │
│   Worker (Redis Stream 消费者,异步处理)                     │
├─────────────────────────────────────────────────────────────┤
│                    模型服务层(外部 HTTP)                    │
│   LLM API  │  Embedding API  │  Rerank API  │  OCR API       │
└─────────────────────────────────────────────────────────────┘

从文档解析、向量化、检索到大模型推理,全流程模块化解耦,组件可灵活替换与扩展。支持本地 / 私有云部署,数据完全自主可控,零门槛 Web UI 快速上手。

🧩 功能概览

智能对话

能力 详情
ReAct 推理 大模型在 Think → Act → Observe 循环中自主决策,调用工具、分析结果、决定停止时机
工具调用 内置知识检索、关键词匹配、深度阅读、附件阅读、网页搜索、思考、技能加载,支持远程 MCP 工具
Evidence-First Progressive RAG 提示词强制"先检索、深读 chunk、再作答",引用溯源、拒绝臆造
Agent 预设 内置「快速问答」(hybrid 单轮)与「智能推理」(agent 多步),系统提示词可在线 AI 改写
会话附件 对话中上传文件即时入库为会话级检索源,Agent 通过 read_attachment 确定性整篇读取,不与正式知识库竞争排序
上下文管理 三层递进式压缩(Token 估算 + Usage 追踪 + LLM 摘要 + 分组截断),长对话不超窗
流式可视化 思考、工具调用、引用、Token 占用通过 SSE 实时推送,逐 token 渲染

知识管理

能力 详情
文档格式 PDF / Word / Excel / PPT / TXT / Markdown / 图片
文档组织 文件夹层级管理、重命名、缩略图预览(鉴权拉取)
图文混排 自动提取嵌入图片并并发 OCR,按页位置插入识别文本,内容 hash 去重
结构感知切片 按文档逻辑结构切分,表格整块保护,父块(上下文)/ 子块(精检)映射
三路混合检索 Dense 语义 + Sparse 稀疏 + BM25 全文,RRF 融合 + Rerank + MMR + 父块扩展
异步 Pipeline Redis Stream 任务队列 + 独立 Worker,API 与处理解耦,断点续处理
检索测试 独立检索测试页(纯检索,不经过大模型),可视化三路召回 / RRF / Rerank / MMR 链路与多维分数,专为调参设计

集成与扩展

能力 详情
LLM 任意 OpenAI 兼容 API(vLLM / DeepSeek / Qwen / …)/ Ollama
Embedding / Rerank 任意 OpenAI 兼容远程服务(TEI / Infinity / vLLM),前端可视化热切换
OCR 服务 TextIn / 通用外部 API(远程),多 Provider + 默认 + Fallback 自动切换
向量数据库 Milvus 2.4+(稠密 + 稀疏向量)
MCP 对外暴露知识库能力(MCP Server),对内接入远程 MCP 工具(服务发现 + 自动注册)
技能 Skills Progressive Disclosure 渐进式加载,按需读取 SKILL.md 完整指令

平台能力

能力 详情
部署 本地 / Docker / 内网离线部署(ARM64 + AMD64 镜像打包)
界面 Web UI / RESTful API / OpenAI 兼容 API / MCP Server
多租户 固定角色(admin / member)+ 归属轴 RBAC,知识库私有 / 组织可见 + 点对点读写共享,超级管理员跨租户治理
用户与注册 邀请注册(默认)/ 自助注册两种模式,首登强制改密,个人资料 / 头像,审计日志
多模型管理 数据库持久化多 LLM 配置,前端创建 / 编辑 / 设默认 / 连通性测试,对话动态切换
安全 JWT 登录 + 三类 API Key 凭据(租户级 / 用户级 / 外部代理,SHA256 哈希存储,仅 /v1/ 路径鉴权),超管业务内容可见边界可控,MCP 外部工具输出标记为不可信
容错降级 Agent 异常 → hybrid → 纯检索;LLM 不可用 → 返回检索原文;Reranker 异常 → RRF 结果
可观测性 Agent 思考 / 工具 / Token 用量 SSE 事件,会话历史持久化 agent_steps

🚀 快速开始

🛠 环境要求

  • Docker & Docker Compose(20.10+,用于 Milvus / PostgreSQL / Redis)
  • Python 3.12(⚠️ 3.13+ 存在兼容问题)
  • Node.js 18+
  • 任意 OpenAI 兼容 LLM API
  • Embedding 远程服务(TEI / Infinity / vLLM,可启动后在前端配置)

📦 安装与启动

git clone <repo-url>
cd artoo

# 配置环境变量(本地开发读 backend/.env)
cp backend/.env.example backend/.env
# 编辑 backend/.env:至少填 JWT_SECRET(必填,缺失则 fail-fast);
# 初始超管 SUPER_ADMIN_USERNAME / PASSWORD 首启自动创建并强制改密;
# LLM / Embedding 可启动后在前端配
macOS / Linux
# 1. 启动中间件(Milvus + PostgreSQL + Redis;自动暴露端口到本机)
make infra

# 2. 安装依赖(自动创建 .venv)
make install

# 3. 启动服务(API + Worker + 前端,一条命令并行拉起)
make dev
Windows (PowerShell)

Windows 没有 make,分步执行(中间件仍用 Docker):

# 1. 启动中间件
docker compose --profile infra up -d

# 2. 创建 Python 环境(必须 3.12)并装依赖
conda create -n artoo python=3.12 -y
conda activate artoo
pip install --upgrade pip
pip install -r backend/requirements.txt
cd frontend; npm install; cd ..

# 3. 开三个终端分别启动
# 终端 1:API(端口必须 8000,前端代理写死了它)
cd backend; python -m uvicorn app.main:app --reload --port 8000

# 终端 2:Worker
cd backend; python -m app.worker_main

# 终端 3:前端
cd frontend; npm run dev

启动后访问 http://localhost:3000 即可使用。

Embedding / Rerank / LLM 都可以启动后再配置。 通过前端「Embedding & Rerank 配置」「模型管理」页面添加远程服务地址,即时生效无需重启。

🌐 服务地址

服务 地址
前端界面 http://localhost:3000
API 文档 http://localhost:8000/docs
MCP Server http://localhost:8000/mcp

🧭 使用流程

  1. 登录 → 使用初始超管账号(SUPER_ADMIN_*)登录,首次强制改密
  2. Embedding 配置 → 添加远程 Embedding 服务地址 → 连通性测试 → 启用
  3. 模型管理 → 添加 LLM 配置 → 连通性测试 → 设为默认
  4. 知识库 → 创建 → 上传文档 → 等待 Worker 处理完成
  5. 对话 → 选择知识库与 Agent 预设 → 提问

🐳 部署打包(生产 / 内网离线)

一份统一 docker-compose.ymlprofiles: infra / app)+ 一份 .env,打包与部署都走 deploy/ 下脚本:

# ① 在有网的机器构建离线包(应用镜像 + 中间件镜像 + compose + .env.example)
#    macOS / Linux:
make build                  # 当前架构
make build ARCH=arm64       # 指定架构(amd64 | arm64)
make build-app              # 仅应用镜像的更新包(迭代更新,不含中间件)

#    Windows (PowerShell):
.\deploy\build.ps1                 # 当前架构
.\deploy\build.ps1 -Arch arm64     # 指定架构(amd64 | arm64)
.\deploy\build.ps1 -AppOnly        # 仅应用镜像的更新包
# 产物均在 dist/

# ② 把 dist/ 整体拷到(Linux)服务器,一键部署
cd dist && ./install.sh     # 加载镜像 → 引导填 .env → 起中间件(infra) → 起应用(app)

install.sh 首次运行会从 .env.example 生成 .env 并提示填写必填项(JWT_SECRETSUPER_ADMIN_*LLM_*EMBED_BASE_URLRERANK_BASE_URL),填好后再次执行即可拉起全部服务。

手动等价命令(在 dist/ 内):

docker compose -f docker-compose.yml --profile infra up -d   # 起中间件,等 healthy
docker compose -f docker-compose.yml --profile app up -d     # 起应用

🔍 检索模式

模式 流程 适用场景
direct 稠密向量 ANN 检索 简单查询、低延迟
hybrid(快速问答) Dense + Sparse + BM25 并行 → RRF 融合 → Rerank 精排 → MMR → 父块扩展 通用场景
agent(智能推理) ReAct 循环:自主调用 grep / 语义检索 / 深读 / 思考 / 网搜,迭代直至提交答案 复杂多跳查询、需推理综合

Agent ReAct 循环

用户查询 →(有历史时)改写指代、脱敏历史检索结果强制重检
  │
  └─ while 未完成 且 未达 max_iterations:
       ├─ Think:流式调用 LLM,实时发射 THOUGHT 事件
       ├─ 上下文管理:Usage 估算 →(>50%)LLM 摘要合并 →(>80%)分组截断
       ├─ Analyze:判定终止
       │    ├─ final_answer 工具 → 提交答案
       │    ├─ 自然停止 → 引导调用 final_answer
       │    └─ stuck loop / 空响应 → 重试或合成答案
       ├─ Act:执行工具调用(可并行),发射 TOOL_CALL / TOOL_RESULT 事件
       └─ Observe:工具结果追加到消息,进入下一轮
  │
  └─ 异常 → 降级到 hybrid 快路径

更多关于工具、提示词、上下文管理与切片策略的细节,见 技术架构详解

🔧 技术栈

组件 选型
后端框架 FastAPI + Uvicorn
向量数据库 Milvus 2.4+
关系数据库 PostgreSQL 16
任务队列 Redis Stream
前端 React 18 + TypeScript + Tailwind CSS v4
文档解析 PyMuPDF / python-docx / openpyxl / python-pptx
Token 估算 tiktoken(cl100k_base)
LLM 任意 OpenAI 兼容 API / Ollama
Embedding / Rerank 任意 OpenAI 兼容远程服务

📂 项目结构

artoo/
├── backend/
│   ├── app/
│   │   ├── main.py              # FastAPI 入口
│   │   ├── worker_main.py       # Worker 入口
│   │   ├── config.py            # 配置
│   │   ├── api/                 # API 路由(chat / kb / document / auth / 邀请 / *config …)
│   │   ├── auth/                # 多租户认证与 RBAC(JWT / API Key / 知识库授权 / 审计)
│   │   ├── agent/               # ReAct Agent 引擎
│   │   │   ├── engine.py        #   核心 ReAct 循环
│   │   │   ├── events.py        #   EventBus 事件总线
│   │   │   ├── tools/           #   工具层(检索 / 深读 / 附件 / 网搜 / 技能 / MCP …)
│   │   │   ├── memory/          #   三层递进式上下文管理
│   │   │   ├── skills/          #   技能(Progressive Disclosure)
│   │   │   └── prompts/         #   Progressive RAG 系统提示词
│   │   ├── retrieval/           # 检索工具(hybrid / vector / sparse / bm25 …)
│   │   ├── pipeline/            # 文档处理管道(loader / ocr / chunker …)
│   │   ├── models/              # 模型 Provider 抽象(LLM / Embedding / Rerank)
│   │   └── storage/             # 存储层(Milvus / PostgreSQL)
│   ├── Dockerfile
│   └── requirements.txt
├── frontend/                    # React 前端
├── docker-compose.yml           # 统一编排(profiles: infra / app)
├── docker-compose.override.yml  # 本地开发覆盖(暴露中间件端口)
├── deploy/                      # 离线部署(build.sh / install.sh / milvus 调优)
├── .env.example                 # 部署配置清单
└── Makefile

🛠️ 常用命令

make install            # 安装所有依赖(自动创建 .venv)
make dev                # 启动前后端 + Worker
make dev-backend        # 仅后端 API
make dev-worker         # 仅 Worker
make dev-frontend       # 仅前端
make infra              # 启动基础设施(Milvus + Redis + PostgreSQL)
make infra-down         # 停止基础设施
make test               # 运行后端测试
make build              # 构建离线部署包(deploy/build.sh)
make build ARCH=arm64   # 指定架构构建(amd64 | arm64)
make build-app          # 仅应用镜像的更新包(不含中间件)

🚀 部署

完整的生产 / 内网离线部署打包流程见上文 部署打包

📘 文档

文档 说明
技术架构详解 ReAct 引擎、工具层、上下文管理、切片策略、OCR 扩展

🗺️ Roadmap

  • 端到端检索评测体系(RAGAS,量化召回与生成质量)
  • Chunk 元数据增强(Enricher 生成摘要 / 关键词)+ 过滤检索
  • 数据库迁移管理(Alembic)
  • 知识图谱增强检索(GraphRAG)
  • 数据源连接器(飞书 / Notion)
  • 多 Worker 水平扩展

🧭 开发指南

快速开发模式无需每次重建 Docker 镜像:make infra 启动基础设施后,分别运行 make dev-backendmake dev-workermake dev-frontend,后端支持 --reload 热重载,前端 Vite 自动热更新。Windows 下无 make,按上文「快速开始 → Windows」分三个终端手动启动。

🤝 贡献

欢迎提交 Issue 和 Pull Request。

流程: Fork → 创建分支 → 提交变更 → 发起 PR

📄 许可证

本项目基于 MIT 协议发布。你可以自由使用、修改和分发本项目代码,但需保留原始版权声明。

📈 Star 趋势

Star History Chart

Reviews (0)

No results found