AI APPLICATION ENGINEERING · 07
理解 Dify、RAGFlow、知识库索引、混合检索和外部知识库连接。
- Dify
- RAG
本文目录
Dify 与 RAG 知识库实践
理解 Dify、RAGFlow、知识库索引、混合检索和外部知识库连接。
1. Dify和RAGFlow的搭建过程
Dify 搭建过程:
# 1. 克隆仓库
git clone https://github.com/langgenius/dify.git
# 2. 进入docker目录
cd dify/docker
# 3. 复制环境变量配置文件
cp .env.example .env
# 4. 启动所有容器
docker compose up -d
# 5. 浏览器访问 http://localhost/install 完成初始化
RAGFlow 搭建过程:
# 1. 克隆仓库
git clone https://github.com/infiniflow/ragflow.git
# 2. 进入docker目录
cd ragflow/docker
# 3. 启动容器
docker compose -f docker-compose.yml up -d
# 4. 浏览器访问 http://localhost 完成配置
两者都是基于 Docker Compose 编排,包含 Web 服务、数据库、向量数据库、Redis 等多个组件。
2. 什么是RAG,讲一下原理和流程
RAG(Retrieval-Augmented Generation,检索增强生成) 是一种将外部知识检索与大模型生成相结合的技术架构。
核心原理:在模型生成回答之前,先从外部知识库中检索与问题相关的文档片段,将其作为上下文注入提示词,让模型基于真实资料生成回答,而非仅依赖参数中的记忆。
完整流程:
① 文档预处理(离线阶段)
文档上传 → 文本分段 → 向量化(Embedding) → 存入向量数据库
② 检索与生成(在线阶段)
用户提问 → 问题向量化 → 向量相似度检索 → 召回Top-K相关片段
→ 将问题 + 检索结果组装为Prompt → LLM生成最终回答
优势:减少幻觉、支持知识实时更新、可追溯来源。
9. 讲一下Dify知识库的索引和对应的原理
Dify 知识库支持以下索引模式:
1. 高质量模式(推荐):
- 使用 Embedding 模型 将文档分段后进行向量化
- 存储到向量数据库中
- 检索时将用户问题向量化,通过向量相似度(余弦相似度等)匹配最相关片段
- 原理:将文本映射到高维语义空间,语义相近的文本在向量空间中距离更近
2. 经济模式:
- 使用关键词倒排索引,基于 BM25 等算法
- 无需调用 Embedding 模型,成本低
- 检索基于词频匹配,对精确关键词匹配效果好,但语义理解弱
索引流程:
文档上传 → 文本提取 → 分段(Chunk)→ Embedding向量化 → 存入向量数据库
↓
同时构建关键词倒排索引(混合检索时)
10. 什么是混合检索,讲讲流程和原理
混合检索(Hybrid Search) 是将向量语义检索和关键词检索相结合的检索策略。
两种检索方式对比:
| 方式 | 优势 | 劣势 |
|---|---|---|
| 向量检索 | 理解语义,能匹配同义词、近义表达 | 对精确关键词匹配不够精准 |
| 关键词检索 | 精确匹配关键词,速度快 | 无法理解语义,无法处理同义替换 |
混合检索流程:
用户提问
├──→ 向量化 → 向量数据库检索 → 召回结果A(语义相关)
└──→ 关键词提取 → 倒排索引检索 → 召回结果B(关键词匹配)
↓
结果融合(如 RRF 倒排序融合算法)
↓
统一排序 → 输出Top-K结果
融合原理:常用 RRF(Reciprocal Rank Fusion) 算法,根据各结果在不同检索方式中的排名加权计算综合分数,生成最终排序。
11. RAGFlow的知识库有什么优势?
RAGFlow 在知识库方面的主要优势:
- 深度文档解析(DeepDoc):内置强大的文档解析引擎,能处理复杂格式的文档(含表格、图片、公式等),提取精度高
- 智能分段策略:支持多种文档分段方式,能根据文档结构自适应切分,保持语义完整性
- 可视化分段预览:支持在界面上直接查看和调整文档分段结果,便于人工校验
- 混合检索:支持向量检索 + 全文检索的混合模式,并提供 Rerank 重排序
- 模板化解析:针对不同文档类型(论文、财报、法律文书等)提供专用解析模板
- 引用溯源:生成的回答可以精确追溯到原文的具体段落,便于验证
12. RAGFlow里面的DeepDoc是什么?
DeepDoc 是 RAGFlow 内置的深度文档解析引擎,用于将复杂格式的文档高质量地转换为结构化文本。
核心能力:
- 版面分析:识别文档的版面布局,区分标题、正文、表格、图片等区域
- 表格提取:精准识别和提取表格数据,保持行列结构
- OCR能力:对扫描件和图片中的文字进行识别
- 多格式支持:支持 PDF、Word、Excel、PPT、图片等多种文档格式
- 公式识别:识别数学公式并转为文本描述
意义:DeepDoc 解决了传统 RAG 系统在处理复杂文档时“切分不准确、表格丢失、图片忽略”的痛点,显著提升了知识库的入库质量。
13. RAGFlow的文档切分都有哪些格式?
RAGFlow 支持以下文档格式的导入和切分:
| 格式 | 说明 |
|---|---|
| 支持文字型和扫描型PDF,含表格和图片提取 | |
| Word(.doc/.docx) | 支持段落结构识别 |
| Excel(.xls/.xlsx) | 按行/表格结构切分 |
| PPT(.ppt/.pptx) | 按页面/幻灯片切分 |
| Markdown | 按标题层级和段落切分 |
| TXT | 纯文本按段落或固定长度切分 |
| 图片 | 通过OCR识别文字后切分 |
| HTML | 解析DOM结构提取文本切分 |
| JSON | 结构化数据解析 |
14. Dify怎么连接外部知识库?
Dify 支持通过外部知识库API连接第三方知识库(如 RAGFlow、自建知识库等):
步骤:
-
在外部知识库系统中创建API服务:确保外部知识库提供标准的检索API接口
-
在Dify中配置外部知识库:
- 进入 Dify → 知识库 → 创建知识库 → 选择“连接外部知识库”
- 填写以下参数:
- API端点(Endpoint):外部知识库的检索API地址
- API Key:认证密钥
- 知识库ID:外部知识库的唯一标识
-
在应用中引用:创建应用时,在“上下文”中添加已连接的外部知识库
-
检索配置:设置 Top K、Score Threshold 等检索参数
这种方式使得 Dify 可以复用已有的 RAGFlow 等知识库基础设施,无需重复建设。
15. Dify和Coze有什么区别?
| 维度 | Dify | Coze |
|---|---|---|
| 定位 | 开源 LLMOps 平台,面向开发者和企业 | 字节跳动的 AI Bot 构建平台,面向更广泛的用户 |
| 部署方式 | 支持私有化部署(Docker),数据可控 | SaaS平台,云端托管为主 |
| 开源性 | 完全开源(Apache 2.0) | 闭源平台 |
| 工作流 | 支持可视化工作流编排 | 支持可视化工作流编排 |
| 模型支持 | 支持接入多种模型(OpenAI、开源模型等) | 主要基于字节系模型,也支持接入其他模型 |
| 知识库 | 内置RAG引擎,支持连接外部知识库 | 内置知识库功能 |
| 插件生态 | 通过API和工具集成 | 丰富的内置插件市场 |
| 发布渠道 | API、Web应用、嵌入式 | 豆包、飞书、微信、API等多渠道发布 |
| 适用场景 | 企业级私有化AI应用、对数据安全要求高的场景 | 快速搭建面向C端用户的Bot |
| 技术门槛 | 中高,需要一定的开发能力 | 低,对非技术人员友好 |