Dify系列(四):RAG 技术知识库搭建与检索优化实战

摘要:本文是 Dify 学习系列的第四篇,聚焦于 RAG(检索增强生成)*技术的原理与实战。你将学习 RAG 的基本思想与核心价值,了解知识库构建的关键步骤(文档准备、文本切片、向量化),并掌握 Embedding 模型的配置方法。通过搭建"王者荣耀新英雄知识库"的完整案例,你将亲身体验从文档导入、分段设置到检索优化、应用创建的全过程,最终实现一个基于私有知识的游戏助手。

1. RAG 的基本原理

1.1 为什么需要 RAG

为了改善大模型输出在时效性、可靠性与准确性方面的不足(特别是"幻觉"问题),以便让其在更广阔的空间大展拳脚,特别是为有较高工程化能力要求的企业级应用做 AI 赋能,各种针对大模型应用的优化方法应运而生。RAG 就是其中一种被广泛研究与应用的优化架构。截至目前,RAG 在大量的场景中展示了强大的适应性与生命力。

当我们询问一些最新信息时,大模型就会因为知识过时,无法回答:

通过 RAG(检索增强生成)技术,大模型能够通过检索来获取最新的知识:

1.2 RAG 的基本思想

将传统的生成式大模型与实时信息检索技术相结合,为大模型补充来自外部的相关数据与上下文,以帮助大模型生成更丰富、更准确、更可靠的内容。这允许大模型在生成内容时可以依赖实时与个性化的数据和知识,而不仅仅是依赖训练知识。

2. 知识库构建

2.1 文档准备

一般可以分为文档类型表格类型。需要对文档进行预处理:

  • 清理无关内容(广告、水印)
  • 按主题分类整理
  • 文件命名规范(含关键信息)

2.2 文档切片

为了适应大语言模型的上下文长度限制,并提升检索的精准度和效率,需要对文档进行切片。

切分方式

  1. 按字符数切分(固定长度每 300 字符一段)
  2. 按符号切分(按照句号、换行符、感叹号等)
  3. 按语义切分(识别主题变化点智能切分)

一般选择方式

按照符号和字符长度一块切分,通常 200-500 字/段。长度太小会导致上下文不完整、检索不准;长度太大则会带入无关信息,干扰判断。

2.3 文档向量化

将切分后的文本进行向量数字化,便于计算问题和文档的相似性。

向量化的作用:

  • 语义理解
  • 相似度计算
  • 快速检索

3. Text Embedding 模型导入

在 RAG 架构中,Text Embedding 和 LLM 的分工其实非常清晰:Embedding 模型负责"检索",LLM 负责"生成" 。具体来说,当我们在 Dify 中导入文档构建知识库时,Embedding 模型会将每一段文本转化为数学向量并存入向量数据库,相当于为知识库建立了一个高效的"索引系统";而当用户提问时,系统会先用同一个 Embedding 模型将问题也转化为向量,从数据库中快速检索出语义最相关的文本片段;随后 LLM 才登场,它接收用户的问题和检索到的文本作为上下文,进行理解、推理和语言组织,最终生成一段通顺、准确的回答。简单比喻就是:Embedding 像是图书管理员,帮我们从海量藏书中快速找到相关段落;LLM 则是资深发言人,读懂这些材料后用我们自己的话把答案讲出来。两者各司其职、协同配合,才能实现 RAG 既基于私有知识又具备流畅对话能力的核心效果。

3.1 获取 API Key

进入阿里云百炼 大模型服务平台百炼控制台

创建 API Key 并保存。

3.2 添加新模型

在 Dify 中找到 OpenAI 模型供应商,并添加模型。

填写你的 API Key,其他配置参考下图:

4. 搭建王者荣耀新英雄知识库

4.1 创建知识库

进入 Dify,找到知识库,然后创建知识库。

4.2 选择数据源

导入准备好的文档。

4.3 文本分段

这是原文档内容的格式:

现在进行分段设置:

  • 分段标识符 :分隔符用于分隔文本,\n\n\n 常用于分隔段落和行。用逗号连接分隔符(\n\n,\n),当段落超过最大块长度时,会按行分割。也可以使用自定义的特殊分隔符(例如 ***)。
  • 分段最大长度:设定每段文本的字符数上限,根据需求选择。
  • 分段重叠长度:设置分段之间的重叠长度可以保留语义关系,提升召回效果。建议设置为最大分段长度的 10%-25%。

通过预览查看效果:

4.4 检索设置

设置上节导入的 Embedding 模型,检索设置推荐使用混合检索。

  • Top K:用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整分段数量。

最后保存并处理:

4.5 查看结果

知识库创建成功:

5. 实现王者荣耀游戏助手的搭建

5.1 创建空白应用

5.2 构建提示词

5.3 选择知识库

5.4 结果验证

至此,一个基于私有知识库的王者荣耀游戏助手就搭建完成了。当用户提问时,系统会从知识库中检索相关内容,结合大模型生成精准回答。

小结

下一篇将进入 自定义工具 的学习,深入讲解 Function Call 的原理,以及如何在 Dify 中使用内置工具和自定义 API 接口,让智能体具备调用外部服务的能力。

相关推荐
TeDi TIVE10 小时前
开源模型应用落地-工具使用篇-Spring AI-高阶用法(九)
人工智能·spring·开源
MY_TEUCK10 小时前
Sealos 平台部署实战指南:结合 Cursor 与版本发布流程
java·人工智能·学习·aigc
三毛的二哥10 小时前
BEV:典型BEV算法总结
人工智能·算法·计算机视觉·3d
j_xxx404_11 小时前
大语言模型 (LLM) 零基础入门:核心原理、训练机制与能力全解
人工智能·ai·transformer
飞哥数智坊11 小时前
全新 SOLO 在日常办公中的实际体验
人工智能·solo
<-->11 小时前
Megatron(全称 Megatron-LM,由 NVIDIA 开发)和 DeepSpeed(由 Microsoft 开发)
人工智能·pytorch·python·深度学习·transformer
朝新_11 小时前
【Spring AI 】图像与语音模型实战
java·人工智能·spring
Yuanxl90311 小时前
神经网络-Sequential 应用与实战
人工智能·深度学习·神经网络
火山引擎开发者社区12 小时前
Seedance 2.0 1080P 生成能力正式上线
人工智能
冬奇Lab12 小时前
一天一个开源项目(第79篇):生化危机女主角亲自开源的 AI 记忆系统 MemPalace
人工智能·开源·资讯