AI工作空间

NeuralDrive是一个AI原生工作空间,提供向量索引存储、上下文感知文档生成和代理工作流等功能,适用于文档管理、内容生成和自动化任务。

  • by ltphen
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 ltphen/Neural-drive

使用说明

神经驱动

具有矢量索引存储、上下文感知文档生成和代理工作流的AI原生工作空间。

特性

  • 文档驱动器 --通过自动解析、分块和矢量索引上传和管理文档(PDF、DOCX、CSV、XLSX、TXT)。在分层文件夹系统中组织文件。

  • 副驾驶 --对话式AI助手,具有可选择的文档上下文、知识中心范围和MCP工具集成。支持带有源引用的流式响应。

  • 语义搜索 --使用自然语言搜索所有文档。混合搜索通过pgvector将向量相似性与关键字匹配相结合。

  • 文件工厂 --基于人工智能的内容生成,结合您知识库中的RAG上下文。包括模板、摘要和问答。

  • 自动化 --具有事件驱动触发器(文件上传、计划、webhook、手动)和可配置操作节点的可视化工作流构建器。支持条件逻辑、循环和并行执行。

  • MCP工具 --通过模型上下文协议连接外部工具和服务。注册STDIO或HTTP服务器,发现它们的功能,并在Copilot和工作流中使用它们。

  • 知识中心 --精心策划的文档收藏,配备专用聊天界面。使用自动包含规则配置每个集线器的RAG设置。

  • AI表格 --将文档中的结构化数据提取到可配置的表模式中。使用提取提示定义列并导出到CSV/JSON。

快速开始

使用Docker(推荐)

  1. 克隆存储库并复制环境文件:
cp .env.example .env
  1. 将API密钥添加到 .env:
OPENAI_API_KEY=your-key-here
# or
ANTHROPIC_API_KEY=your-key-here
  1. 启动所有服务:
docker-compose up --build
  1. 访问应用程序:
  • 前端: http://localhost:3000
  • 后端API: http://localhost:8000
  • API文件: http://localhost:8000/docs

本地开发

后端

cd backend

# Create virtual environment
python -m venv venv
source venv/bin/activate  # or venv\Scripts\activate on Windows

# Install dependencies
pip install -r requirements.txt

# Start PostgreSQL and Redis (via Docker or locally)
docker-compose up postgres redis -d

# Run database migrations
alembic upgrade head

# Start the server
uvicorn app.main:app --reload

前端

cd frontend

# Install dependencies
npm install

# Start development server
npm run dev

芹菜工人

cd backend

# Worker (background tasks)
celery -A app.worker.celery_app worker --loglevel=info

# Beat (scheduled tasks)
celery -A app.worker.celery_app beat --loglevel=info

建筑

NeuralDrive在后端使用六边形架构(端口和适配器),在前端使用Next.js App Router。

DMS/
├── backend/                      # FastAPI backend (Python 3.11)
│   ├── app/
│   │   ├── api/v1/              # Route handlers
│   │   │   ├── auth.py          # Authentication
│   │   │   ├── documents.py     # Document CRUD & upload
│   │   │   ├── folders.py       # Folder management
│   │   │   ├── search.py        # Semantic & hybrid search
│   │   │   ├── generation.py    # Content generation & RAG
│   │   │   ├── automations.py   # Workflow automation
│   │   │   ├── mcp.py           # MCP server management
│   │   │   ├── ai_tables.py     # AI table operations
│   │   │   ├── knowledge_hubs.py# Knowledge hub management
│   │   │   └── hub_chat.py      # Knowledge hub chat
│   │   │
│   │   ├── domain/              # Core business logic
│   │   │   ├── entities/        # Domain models (dataclasses)
│   │   │   ├── ports/           # Abstract interfaces (LLM, embedding, storage)
│   │   │   └── events/          # Domain events
│   │   │
│   │   ├── application/         # Use cases & services
│   │   │   └── services/        # Business logic orchestration
│   │   │       ├── agent_service.py       # Unified agent executor
│   │   │       ├── agentic_rag_service.py # Two-stage RAG retrieval
│   │   │       ├── ingestion_service.py   # Document processing
│   │   │       ├── search_service.py      # Search operations
│   │   │       ├── generation_service.py  # LLM generation
│   │   │       ├── automation_service.py  # Workflow management
│   │   │       ├── mcp_service.py         # MCP integration
│   │   │       ├── tool_registry.py       # Tool discovery & management
│   │   │       ├── ai_table_service.py    # AI table logic
│   │   │       ├── knowledge_hub_service.py
│   │   │       └── chat_service.py
│   │   │
│   │   ├── infrastructure/      # External implementations
│   │   │   ├── adapters/        # Port implementations
│   │   │   │   ├── llm/         # OpenAI, Anthropic, Ollama
│   │   │   │   ├── embedding/   # OpenAI, local sentence-transformers
│   │   │   │   ├── storage/     # Local filesystem, S3
│   │   │   │   └── web_search/  # Tavily
│   │   │   ├── database/        # SQLAlchemy models & repositories
│   │   │   └── parsers/         # PDF, DOCX, CSV, XLSX, TXT parsers
│   │   │
│   │   ├── worker/              # Celery background tasks
│   │   │   └── tasks/           # Ingestion, embedding, automation, AI table tasks
│   │   │
│   │   ├── config.py            # Pydantic settings
│   │   ├── dependencies.py      # FastAPI dependency injection
│   │   └── main.py              # App factory & lifespan
│   │
│   ├── alembic/                 # Database migrations
│   └── tests/                   # pytest test suite
│
├── frontend/                    # Next.js 14 frontend (TypeScript)
│   └── src/
│       ├── app/                 # App Router pages
│       │   ├── copilot/         # AI assistant
│       │   ├── drive/           # File manager
│       │   ├── editor/          # Document editor
│       │   ├── search/          # Search interface
│       │   ├── automations/     # Workflow management & builder
│       │   ├── mcp/             # MCP server configuration
│       │   ├── ai-tables/       # AI table interface
│       │   ├── knowledge-hubs/  # Knowledge hub management & chat
│       │   └── settings/        # Application settings
│       ├── components/          # React components
│       │   ├── ui/              # Base UI components
│       │   ├── copilot/         # Copilot interface
│       │   ├── workflow/        # Workflow builder (ReactFlow)
│       │   ├── ai-tables/       # AI table components
│       │   ├── knowledge-hubs/  # Knowledge hub components
│       │   ├── drive/           # File browser
│       │   ├── editor/          # Rich text editor (TipTap)
│       │   └── settings/        # Settings & MCP config
│       ├── lib/api/             # API client modules
│       ├── stores/              # Zustand state stores
│       ├── hooks/               # Custom React hooks
│       └── types/               # TypeScript type definitions
│
└── docker-compose.yml           # PostgreSQL, Redis, Backend, Celery, Frontend

API 参考

所有端点都以前缀 /api/v1.完整的互动文档可在 /docs 跑步时。

身份验证(/auth)

方法 端点 描述
职位 /auth/register 注册新用户
职位 /auth/login 登录并获取JWT代币
职位 /auth/refresh 刷新访问令牌
得到 /auth/me 获取当前用户配置文件

文件(/documents)

方法 端点 描述
职位 /documents/upload 上传文档文件
职位 /documents/create 创建文本文档
得到 /documents/ 列出文件
得到 /documents/{id} 获取文档详细信息
补丁 /documents/{id}/content 更新文档内容
得到 /documents/{id}/download 下载文档文件
删除 /documents/{id} 删除文档
职位 /documents/{id}/reprocess 重新处理文档

文件夹(/folders)

方法 端点 描述
职位 /folders/ 创建文件夹
得到 /folders/ 按级别列出文件夹
得到 /folders/{id} 获取包含内容的文件夹
得到 /folders/tree/all 获取完整文件夹树
得到 /folders/{id}/breadcrumb 获取面包屑路径
补丁 /folders/{id} 更新文件夹
删除 /folders/{id} 删除文件夹
职位 /folders/{id}/move 移动文件夹

搜索(/search)

方法 端点 描述
得到 /search/?q=query 语义搜索
得到 /search/hybrid?q=query 混合搜索(矢量+关键字)
得到 /search/context?q=query 获取RAG上下文

世代(/generation)

方法 端点 描述
职位 /generation/generate 使用RAG生成内容
职位 /generation/generate/agentic 使用工具的代理RAG
职位 /generation/generate/stream 流式生成内容
职位 /generation/template 从模板生成
职位 /generation/summarize 总结文档
职位 /generation/ask 与RAG一起回答问题

自动化(/automations)

方法 端点 描述
职位 /automations/ 创建自动化
得到 /automations/ 列表自动化
得到 /automations/{id} 实现自动化
补丁 /automations/{id} 更新自动化
删除 /automations/{id} 删除自动化
职位 /automations/{id}/pause 暂停自动化
职位 /automations/{id}/resume 简历自动化
职位 /automations/{id}/trigger 手动触发自动化
得到 /automations/{id}/runs 获取跑步历史记录
得到 /automations/meta/trigger-types 列出触发器类型
得到 /automations/meta/action-types 列出操作类型

MCP服务器(/mcp)

方法 端点 描述
职位 /mcp/servers 注册MCP服务器
得到 /mcp/servers 列出MCP服务器
得到 /mcp/servers/{id} 获取MCP服务器
补丁 /mcp/servers/{id} 更新MCP服务器
删除 /mcp/servers/{id} 删除MCP服务器
职位 /mcp/servers/{id}/connect 连接和发现工具
职位 /mcp/servers/{id}/disconnect 断开与服务器的连接
得到 /mcp/servers/{id}/tools 获取服务器工具
职位 /mcp/servers/{id}/tools/{name} 执行工具

AI表格(/ai-tables)

方法 端点 描述
职位 /ai-tables/ 创建AI表
得到 /ai-tables/ 列出AI表
得到 /ai-tables/{id} 获取AI表
PUT /ai-tables/{id} 更新AI表
删除 /ai-tables/{id} 删除AI表
职位 /ai-tables/{id}/columns 添加列
PUT /ai-tables/{id}/columns/{col_id} 更新列
删除 /ai-tables/{id}/columns/{col_id} 删除列
得到 /ai-tables/{id}/rows 列出行
职位 /ai-tables/{id}/rows 手动添加行
职位 /ai-tables/{id}/rows/process 从文档中提取数据
PUT /ai-tables/{id}/rows/{row_id} 更新行值
职位 /ai-tables/{id}/rows/{row_id}/review 标记行已审核
得到 /ai-tables/{id}/export 导出表(CSV/JSON)

知识中心(/knowledge-hubs)

方法 端点 描述
职位 /knowledge-hubs/ 创建中心
得到 /knowledge-hubs/ 列出枢纽
得到 /knowledge-hubs/{id} 获取中心
PUT /knowledge-hubs/{id} 更新中心
删除 /knowledge-hubs/{id} 删除中心
职位 /knowledge-hubs/{id}/documents 添加文档
删除 /knowledge-hubs/{id}/documents 删除文档
职位 /knowledge-hubs/{id}/folders 添加文件夹
删除 /knowledge-hubs/{id}/folders 删除文件夹
职位 /knowledge-hubs/{id}/rules 添加包含规则
删除 /knowledge-hubs/{id}/rules/{idx} 删除规则
得到 /knowledge-hubs/{id}/documents 列出中心文档
职位 /knowledge-hubs/{id}/refresh 刷新中心索引

知识中心聊天(/knowledge-hubs/{hub_id}/chat)

方法 端点 描述
职位 /chat/sessions 创建聊天会话
得到 /chat/sessions 列出会话
得到 /chat/sessions/{id} 获取包含消息的会话
补丁 /chat/sessions/{id} 更新会话
删除 /chat/sessions/{id} 删除会话
职位 /chat/sessions/{id}/archive 存档会话
职位 /chat/sessions/{id}/messages 发送消息
职位 /chat/sessions/{id}/messages/stream 流消息(SSE)
得到 /chat/sessions/{id}/messages 获取消息

配置

大语言模型提供商

NeuralDrive通过可插拔适配器模式支持多个LLM提供商。集 DEFAULT_LLM_PROVIDER 在 .env:

提供者 模型 配置
开放人工智能 GPT-4、GPT-4涡轮增压器、GPT-3.5涡轮增压器 OPENAI_API_KEY, OPENAI_MODEL
Anthropic 克劳德3作品,十四行诗,俳句 ANTHROPIC_API_KEY, ANTHROPIC_MODEL
奥拉玛 Llama 2、Mistral和其他当地模特 OLLAMA_BASE_URL, OLLAMA_MODEL

嵌入提供者

集 DEFAULT_EMBEDDING_PROVIDER 在 .env:

提供者 型号 尺寸
开放人工智能 文本嵌入-3小,文本嵌入-3大 1536
本地 全MiniLM-L6-v2(句子转换) 384

存储后端

集 STORAGE_BACKEND 在 .env:

后端 配置
本地 STORAGE_PATH (默认值: ./storage)
第3页 S3_BUCKET, S3_REGION, S3_ACCESS_KEY, S3_SECRET_KEY

网络搜索(可选)

集 ENABLE_WEB_SEARCH=true 并配置 TAVILY_API_KEY 在Copilot和代理工作流中启用网络搜索。

认证

基于JWT的身份验证。配置 SECRET_KEY, ALGORITHM (默认值:HS256),以及 ACCESS_TOKEN_EXPIRE_MINUTES (默认值:30)。

技术栈

后端

  • 快速API --异步web框架
  • SQLAlchemy 2.0 --异步ORM
  • PostgreSQL+pgvector --具有向量相似性搜索的数据库
  • Celery+Redis --后台任务处理与调度
  • 蒸馏器 --数据库迁移
  • Pydantic v2 --设置和请求/响应验证
  • passlib+python jose --身份验证(JWT+bcrypt)

前端

  • Next.js 14 --React框架(App Router)
  • TypeScript --型式安全
  • TanStack查询 --数据提取和缓存
  • 状态 --国家管理(与伊默)
  • TipTap 的 --富文本编辑器
  • 反应器流量 --工作流可视化
  • Tailwind CSS --造型
  • React Dropzone --文件上传

基础设施

  • Docker Compose --编排(PostgreSQL、Redis、后端、Celery Worker、Celery Beat、前端)

许可证

麻省理工学院