跳到主要内容

什么是 ollmo

ollmo 是一个生产级 RAG(检索增强生成)平台,提供混合检索、多租户隔离与流式对话能力。上传文档、提出问题、拿到带出处的答案:

对话 + 文档并排对照,引用段落高亮

后端基于 Go + Fiber,前端基于 Next.js App Router + shadcn/ui。

核心特性

  • 混合检索 — Milvus 稠密向量 + MySQL FULLTEXT 词法匹配,RRF 融合,支持知识库级 Rerank 配置;内置检索测试,关键词 ↔ 语义权重可调
  • 多租户 — MySQL、Milvus、MinIO 全链路逻辑隔离,所有表携带 tenant_id
  • 文档流水线 — 上传(拖拽、粘贴、多文件)→ 解析(MinerU / 本地解析器)→ 分块 → 向量化 → 索引,全程异步(Asynq + Redis)
  • 流式对话 — SSE 实时流式输出,带来源引用;Agent 开场白带来拟人化问候
  • 引用溯源 — 点击引用即打开源文档并高亮命中段落:PDF 原版渲染、解析视图翻页导航、对话 + 文档并排对照
  • 标注问答 — 为知识库维护人工标注的标准问答,命中即直接返回标准答案
  • 自动记忆 — 长对话后台自动摘要(异步 LLM 任务),摘要注入后续会话,实现跨对话上下文延续
  • 模型可配置 — 租户级管理 LLM / Embedding / Rerank 模型,知识库可单独指定;双栏弹窗选择器(左侧供应商列表、右侧模型列表)
  • Agent 画布 — 可视化编排 Agent 流水线(React Flow):意图分类 → 检索 → 条件分支 → LLM → 直接回复,支持节点级调试
  • 数据处理流水线画布 — 可视化入库 DAG:来源 → 解析器 → 分块器 → 向量化 → 存储
  • GraphRAG — 入库时 LLM 抽取实体与关系,查询时实体匹配增强检索上下文
  • 用量与费用 — 团队级 Token / 费用统计:总览、按用户、按模型与调用明细
  • 可观测与可回溯 — 每次 Agent 图执行完整留痕:节点路径、耗时、分支决策全部可回放,bad case 一键溯源(见可观测与可回溯)
  • 团队与权限 — 邀请制成员管理(管理员 / 成员),每用户每日消息配额,知识库私有 / 团队共享
  • 管理控制台 — 用户管理、团队计划与配额(免费版 / 专业版 / 企业版)、系统设置、数据分析看板、审计日志
  • 外部 API — API Key 鉴权的编程式访问(检索、知识库管理、流式对话)
  • 国际化 — 中英文界面,前后端消息契约,URL 不含语言标识

技术栈

选型
后端Go 1.26+ / Fiber / GORM
前端Next.js 15 (App Router) / React / shadcn-ui
数据库MySQL 8.0 (utf8mb4) — 元数据
向量库Milvus 2.5+ — 稠密向量检索
对象存储MinIO(S3 兼容)— 原始文档、解析产物
任务队列Asynq + Redis — 解析、向量化、索引重建、自动摘要
文档解析MinerU(容器化,可选 GPU)+ 本地解析器
认证本地账号(邮箱 + 密码 + JWT)

架构

┌─────────────────────────────────────────────────────┐
│ Next.js Web (3001) │
└────────────────────────┬────────────────────────────┘
│ HTTP / SSE
┌────────────────────────▼────────────────────────────┐
│ Go API Server (8080) │
│ Fiber · JWT 认证 · 租户隔离 · RESTful API │
└───────┬────────────┬──────────────┬─────────────────┘
│ │ │
┌────────▼──┐ ┌──────▼──────┐ ┌───▼────────────┐
│ MySQL │ │ Redis │ │ MinIO │
│ 元数据 │ │ 任务队列 │ │ 文件存储 │
└───────────┘ └──────┬──────┘ └────────────────┘

┌────────▼────────┐
│ Asynq Worker │
│ 解析 · 向量化 · │
│ 自动摘要 │
└────────┬────────┘

┌────────▼────────┐
│ Milvus │
│ 稠密向量检索 │
└─────────────────┘

下一步