2.3 Dify / RAGFlow / Onyx
三个上层平台分别代表三种参考形态:Dify 是应用编排与外部知识接入,RAGFlow 是深度文档理解的 检索增强生成引擎,Onyx 是企业搜索与对话。本项目从中借鉴模式,但不把它们作为事实源。
相关来源文件
docs/11-reference-platforms-agentic-knowledge-base.md· §5 Dify。docs/11-reference-platforms-agentic-knowledge-base.md· §6 RAGFlow 与 Onyx。
Dify · 应用编排与外部知识
Dify 提供大语言模型应用的可视化编排:工作流 / 智能体 / 对话流、提示词管理、工具调用、知识库。其中最关键的是 外部知识接口,可以让 Dify 应用把检索委托给外部服务,而不是 Dify 自带的知识库。
| 能力 | 本项目用途 | 边界 |
|---|---|---|
| 工作流 / 智能体编排 | 问答、报告生成、合同审阅等业务流 | 编排层只调用接口,不直接读写文件库 |
| 知识库 (内置) | 仅作 验证 评测对比 | 不作为事实源 |
| 外部知识接口 | 统一调用本项目检索服务 | 权限与引用由项目侧负责 |
| HTTP 工具 / 代码节点 | 调用标签查询、字段抽取等接口 | 所有调用走网关,带用户身份 |
来源
docs/11-reference-platforms-agentic-knowledge-base.md §5.1-5.2。
Code
langgenius/dify ·
外部知识控制器
api/controllers/console/datasets/external.py;
外部知识接口 协议(请求 / 响应)api/services/external_knowledge_service.py;
知识检索 节点 api/core/工作流/nodes/knowledge_retrieval/;
工作流 引擎 api/core/工作流/;
RAG 内置实现(用于对照)api/core/rag/。
Dify 不是事实源
Dify 的内置知识库使用方便,但权限模型、审计、标签体系都不能满足企业资料库的要求。本项目把 Dify 定位为应用层:所有检索请求通过 外部知识接口 反向调用项目自己的检索服务,结果带权限过滤和引用片段。
外部知识接口 接入图
图 2.3.1 · Dify 通过 外部知识接口 调用项目检索服务,权限和引用都在项目侧完成。
RAGFlow · 深度文档理解的 检索增强生成引擎
RAGFlow 强调"看得见的 RAG":解析、切块、检索、引用每一步都可视化、可调试,特别适合复杂版式文档(合同、年报、技术规范)。
| 借鉴点 | 说明 | 本项目落地 |
|---|---|---|
| 模板化切块 | 按文档类型 (合同 / 论文 / 表格 / 简历) 选择不同分块策略 | 文件类型 × L2 标签决定 检索片段er |
| 可视化检索片段检视 | 界面中可查看每个检索片段的来源页码、版面框 | 资料详情页接入检索片段预览 |
| 引用优先回答 | 回答必须附带 检索片段引用,否则降权 | 智能体输出强制 引用字段 |
| 检索测试界面 | 运维可在界面中调试 query → 检索片段 | 内部检索调参与回归测试入口 |
来源
docs/11-reference-platforms-agentic-knowledge-base.md §6.1。
Code
infiniflow/ragflow ·
模板化切块器
rag/app/(laws.py / paper.py / book.py / resume.py / table.py / qa.py / manual.py);
检索与重排 rag/nlp/search.py、rag/nlp/rag_tokenizer.py;
DeepDoc 文档理解 deepdoc/parser/、deepdoc/vision/;
引用与可视化 web/src/components/检索片段-card/。
不要把 RAGFlow 当唯一知识库
RAGFlow 自带的知识库与权限模型偏向单一团队,跨部门、跨权限组的资料治理仍需要项目自己的元数据层。RAGFlow 在本项目中作为 验证 参考:评估其切块与引用质量,再把对应思路实现进项目的入库管线。
Onyx · 企业搜索与对话
Onyx (原 Danswer) 是开源的企业搜索 + 对话平台,特点是连接器丰富、权限同步是一等公民、搜索与对话双入口。
| 借鉴点 | 说明 | 本项目落地 |
|---|---|---|
| 连接器模型 | 每种数据源一个连接器,独立调度;原项目可参考 Confluence、SharePoint、Drive 等连接器实现 | SVN / SMB / NAS / 邮件 各自连接器化 |
| 权限同步一等公民 | 每次拉取同时同步 ACL,检索时按用户过滤 | 权限索引随文档同步,检索强制 ACL |
| 搜索 + 对话双入口 | 同一索引同时支持关键词搜索和 LLM 对话 | 资料库主页保留搜索入口 + 问答入口 |
| Document Sets | 按业务划分文档集合,控制可见性与对话上下文 | 对应项目的标签集合 + 权限组 |
来源
docs/11-reference-platforms-agentic-knowledge-base.md §6.2。
Code
onyx-dot-app/onyx ·
连接器 集合
backend/onyx/连接器s/(含 confluence/、google_drive/、sharepoint/ 等参考实现);
连接器接口与抽象 backend/onyx/连接器s/interfaces.py;
权限同步(企业版) backend/ee/onyx/external_权限/;
Document Set 数据模型 backend/onyx/db/document_set.py;
检索与重排 backend/onyx/document_index/、backend/onyx/context/search/。
社区版可能不覆盖 SVN 授权
Onyx 社区版的连接器以 SaaS / 主流文档系统为主,对 SVN、内网 SMB、特定 OA 的权限映射支持有限。本项目把 Onyx 作为设计参考:借鉴其 连接器 + 权限同步的架构,但实际连接器需要项目自研。
三平台对比
| 平台 | 核心定位 | 所在层 | 项目用法 | 阶段 |
|---|---|---|---|---|
| Dify | LLM 应用编排 + 外部知识接入 | 应用编排层 | 承载业务问答 / Agent,通过 外部知识接口 调本项目检索 | 二期验证 |
| RAGFlow | 深度文档理解 检索增强生成引擎 | 检索增强生成引擎层 | 借鉴模板化切块、可视化 检索片段、引用优先回答 | 验证 参考 |
| Onyx | 企业搜索 + 对话 | 检索 / 对话层 | 借鉴 连接器 + 权限同步、搜索对话双入口 | 设计参考 |
三者共同的边界
- 不作为事实源:文档元数据、标签字典、权限模型、版本历史仍由本项目数据库持有。
- 不绕开权限:所有检索 / 对话调用必须经过本项目检索 接口,由访问控制过滤后再返回 检索片段。
- 不重复入库:原始文件只在 Paperless / Mayan / 对象存储中存一份,向量与索引由项目统一构建。
- 引用必须可回链:Dify / RAGFlow / Onyx 给出的答案需要包含
document_id+chunk_id,可在资料库定位原文。
继续阅读
- 2.4 Graphiti / Mem0 / Cognee / LightRAG · 记忆与图谱层的参考平台。
- 1.3 入库管线 · 检索接口背后的索引与切块管线。
- 1.4 路线图 · Dify 验证在二期的位置与验收标准。