从 0 到 1:基于 Qwen3 Embedding 的 RAG 智能问答系统搭建指南

782 阅读7分钟

RAGFlow 是一个基于深度文档理解的开源 RAG(检索增强生成)引擎。 与 LLM 集成后,它能够提供真实的问答功能,并以来自各种复杂格式数据的可靠引用为支撑。

教程链接:go.openbayes.com/OYxEX

使用云平台:OpenBayes

openbayes.com/console/sig…

首先点击「公共教程」,在公共教程中找到「构建 RAG 系统:基于 Qwen3 Embedding 的实践 」,单击打开。

image.png

页面跳转后,点击右上角「克隆」,将该教程克隆至自己的容器中。

image.png

平台会默认选配好原教程所使用的算力资源、镜像版本,不需要再进行手动选择。目前平台计费方式已经更新,大家可以按照需求选择「按量付费」或「包日/周/月」。点击「继续执行」,等待分配资源。

image.png

image.png

模型文件较大,稍等容器启动 5-6 分钟后访问,否则将显示「Bad Gataway」。代码和数据同步完成,带容器状态显示为「运行中」后,打开 API 地址。

image.png

一、启动 RAGFlow 服务器 本教程已为 RAGFlow 的服务配置完毕,您无需自行部署,启动容器后,可直接点击 API 地址访问。

登录信息如下:

用户名:admin@123.com

密码:123456

image.png

二、创建一个知识库

借助多个知识库,您可以构建更灵活、更多样化的问答系统。要创建您的第一个知识库,请执行以下操作:

image.png

以下屏幕截图展示了知识库的配置页面。合理的知识库配置对于未来的 AI 聊天至关重要。例如,选择错误的嵌入模型或分块方法会导致聊天中出现意外的语义丢失或答案不匹配的情况。

image.png

1.选择分块

RAGFlow 提供多种分块模板,方便对不同布局的文件进行分块,并确保语义完整性。在分块方法中,您可以选择适合您文件布局和格式的默认模板。下表列出了每个支持的分块模板的描述及其兼容的文件格式:

image.png

注意:您还可以在数据集页面上更改文件的分块方法。

2.选择嵌入 嵌入模型将块转换为嵌入。一旦知识库包含块,它就无法更改。要切换到不同的嵌入模型,必须删除知识库中所有现有的块。支持以下嵌入模型:

  • BAAI/bge-large-zh-v1.5

  • maidalun1020/bce-embedding-base_v1

  • Qwen3-embedding(默认)

3.上传 RAGFlow 的文件管理允许您将一个文件链接到多个知识库。您也可以将单个文件或文件夹(批量上传)从本地计算机上传到知识库。 建议您将文件上传到「文件管理」,然后再链接到目标知识库,以避免永久删除风险。

4.解析

文件解析的两个核心操作:

  • 对文件进行分块(依据布局)

  • 构建嵌入和全文索引(关键字索引)

选择分块方法和嵌入模型后,即可开始解析文件。

5.干预文件解析

RAGFlow 允许您查看和干预分块结果:

  • 点击解析完成的文件,进入 Chunk 页面

  • 将鼠标悬停在快照上以预览每个块

  • 双击分块文本以编辑内容或添加关键字

  • 在测试文本中提出简单问题,即可验证检索设置是否合理。

image.png

6.运行检索 RAGFlow 使用「全文搜索 + 向量搜索」多重召回机制。建议在设置 AI 聊天前调整以下参数:

  • 相似度阈值:默认 0.2,低于该值的块将被过滤

  • 向量相似度权重:默认 0.3,用于调节向量相似度对总分的贡献比

  • Reranker模型:教程提供了Qwen3-Reranker-0.6B重排序模型

  • 留空时使用关键词相似度和向量相似度。

  • 配置时则使用关键词相似度与 reranker 评分。

查看更多详情

三、根据知识库建立 AI 聊天 知识库、无幻觉聊天和文件管理是 RAGFlow 的三大支柱。 RAGFlow 中的聊天基于一个或多个特定知识库。创建知识库并完成文件解析后,即可开始 AI 对话。

1.开始人工智能 您可以通过创建助手来开始 AI 对话: 单击页面中间顶部的「聊天选项卡 > 创建助手」,以显示下一个对话的聊天配置对话框。 RAGFlow 提供灵活的模型配置方式:每个对话可选择不同模型,也可在系统设置中配置默认模型。

image.png

2.配置助手信息

助手名称:您的聊天助手名称。每个助手都对应一个具备唯一配置的对话(知识库、提示、搜索设置等)。

空响应:

留空:RAGFlow 在无法检索到答案时尝试生成内容(可能出现幻觉)。

填写:限制回答来源于知识库,统一返回指定内容。

显示引用:默认启用。RAGFlow 会标明回答所依据的来源信息。

选择知识库:支持多选。需保证所选知识库使用相同的嵌入模型,否则会报错。

image.png

更新提示引擎与更新模型设置等更多内容,点击查看详情

3.现在发送一个名为「XX 虚拟机图形虚拟化增强技术软件测试大纲 V3」的文档,在下面的对话框输入问题「责任作者是谁?」,点击发送,可以看到人工智能分析文档很快给出了正确答案。

image.png

image.png

将鼠标悬停在目标聊天助手上点击 「编辑」,显示聊天配置对话框:

image.png

四、开启第一个 Agent——创建 Text2SQL 代理

利用 RAGFlow 的 RAG 功能构建 Text2SQL 代理,可以弥合自然语言处理(NLP)和结构化查询语言(SQL)之间的差距。Text2SQL 代理致力于使数据库查询更加直观、用户友好,同时确保效率和准确性。它迎合了广泛的用户群体,从完全不懂技术的个人到经验丰富的数据分析师和开发人员。

1.数据准备

我们已经通过数据库定义脚本创建了一个简化的电商系统,并在Agent中建立好连接,包含以下四张表:

Customers(客户表)

CustomerID: 客户唯一编号(主键)

UserName: 用户名

Email: 邮箱

PhoneNumber: 电话号码

Products(产品表)

ProductID: 产品唯一编号(主键)

ProductName: 产品名称

Description: 产品描述 Price: 单价

StockQuantity: 库存数量

Orders(订单表)

OrderID: 订单唯一编号(主键)

CustomerID: 下单客户的编号(外键)

OrderDate: 下单日期

TotalPrice: 总金额

OrderDetails(订单详情表)

OrderDetailID: 明细项编号(主键)

OrderID: 所属订单编号(外键)

ProductID: 产品编号(外键)

UnitPrice: 单个商品价格

Quantity: 数量

TotalPrice: 明细总价(单价 × 数量)

这四张表共同描述了一个简化的电商系统。该系统能够记录以下信息:

客户信息:包括客户的基本信息,如用户名、邮箱和电话号码。

产品信息:包括产品的详细信息,如名称、描述、价格和库存数量。

订单信息:包括客户的订单记录,如下单日期和订单总金额。

订单详情:包括每个订单中具体包含的产品及其数量和价格。

2.配置知识库

对于 RAGFlow 基于 RAG 的 Text2SQL,通常需要以下知识库:

DDL(数据库表创建语句)

DB_Description(表和列的详细描述)

Q->SQL(自然语言查询描述以及相应的 SQL 查询示例)

在专业查询场景中,用户查询可能包含特定领域术语的缩写或同义词。如果用户引用了特定领域术语的同义词,系统可能无法生成正确的 SQL 查询。因此,建议整合同义词库以帮助代理生成更准确的 SQL 查询:

  • TextSQL_Thesaurus(特定领域术语及其同义词的同义词库)

3.运行并测试 选择代理,在上方面板选择Agent,并选择Text to SQL。

image.png

启动Text to SQL代理,点击运行按钮启动代理

image.png

输入问题「Help me summarize stock quantities for each product」,单击发送按钮将问题发送给代理,等待执行完成并查看对应的 SQL 查询结果。

image.png

通过以上步骤,您可以成功创建并测试 Text2SQL 代理,利用自然语言查询数据库,提高查询效率和准确性。