作为深耕AI开源领域多年的站长,莫潇羽@无忆研习社(www.wuyi.wiki)始终坚信,优秀的开源框架能让技术落地效率呈几何级提升。在RAG(检索增强生成)技术席卷企业级AI应用的当下,多数开发者仍面临“原型易做、系统难成”的困境——验证一个算法原型仅需一周,但若要封装成可用系统、调试复杂链路、适配业务场景,往往要耗费数月时间。
直到清华大学THUNLP实验室、东北大学NEUIR实验室、OpenBMB、面壁智能与AI9Stars联合推出UltraRAG 3.0,这一困境才得以有效破解。这款开箱即用的可视化RAG框架,既保留了专业开发者所需的精细化配置能力,又降低了小白用户的上手门槛,真正实现了“逻辑即应用”的开发理念。本文将从技术原理、环境部署、实操流程、实战案例四个维度,为大家深度拆解UltraRAG 3.0,带大家从零到一掌握企业级RAG应用的搭建技巧,全文干货密集,建议收藏后反复研读。转载请注明出处:无忆研习社(www.wuyi.wiki),莫潇羽原创出品。
一、前置认知:RAG技术核心逻辑与行业痛点
在深入UltraRAG 3.0之前,我们需先理清RAG技术的核心价值与行业现状。对于非技术背景的读者而言,可将RAG理解为大模型的“外置知识库”——大模型如同聪明的大脑,但存在知识过时、易产生幻觉、隐私数据难以保障的短板,而RAG通过“检索外部知识+增强模型生成”的模式,完美弥补了这些缺陷。
1.1 RAG技术核心工作流
RAG的工作流程可拆解为三大核心环节,每个环节都有明确的技术目标,莫潇羽@无忆研习社为大家梳理了各环节的核心逻辑与技术要点,小白也能轻松理解:
- 数据预处理阶段:相当于“整理书架”的过程,需将PDF、Word、网页等原始文档,处理成机器能理解的知识片段。核心步骤包括文档分块(将长文档拆分为语义完整的短片段,常见策略有语义切片、滑动窗口切片等)、向量化处理(用嵌入模型将文本转化为向量,向量相似度越高,文本语义越相近)、向量存储(将向量存入FAISS、Milvus等向量数据库,方便后续快速检索)。
- 检索阶段:当用户提出问题时,系统需从向量数据库中找到最相关的知识片段,即“找书”的过程。核心步骤包括查询向量化(将用户问题转化为向量)、相似度检索(搜索与问题向量最相似的Top N个片段)、重排序(二次筛选结果,去除重复内容,提升相关性)。
- 生成阶段:将检索到的知识片段与用户问题结合,让大模型基于参考资料生成答案,即“根据找到的书回答问题”。核心步骤包括上下文组装(将问题与知识片段整合成结构化提示)、模型生成(大模型基于增强上下文生成答案,确保回答基于真实知识,避免幻觉)。
1.2 传统RAG开发的三大痛点
尽管RAG技术已趋于成熟,但传统开发模式仍存在诸多瓶颈,这也是UltraRAG 3.0诞生的核心原因:
- 开发门槛高:搭建完整RAG系统需掌握文档解析、向量数据库、大模型调用、前端封装等多领域技术,多数开发者需耗费大量时间学习框架底层逻辑,甚至为实现10%的算法创新,要背负90%的框架学习成本。
- 调试难度大:复杂RAG任务的推理链路往往长达上百个步骤,传统框架缺乏中间态监控,调试时如同在迷雾中摸索,错误定位全靠“猜”,需反复翻找后台日志,优化迭代周期极长。
- 易用性与灵活性失衡:部分框架侧重小白友好性,却牺牲了专业开发者所需的精细化配置能力;部分框架提供高度灵活的定制化功能,却对非技术用户极不友好,难以兼顾不同群体需求。
UltraRAG 3.0正是针对这些痛点设计,通过三大核心优势实现了RAG开发效率的革命性提升,接下来我们深入剖析其技术原理。
二、UltraRAG 3.0 核心技术原理深度解析
UltraRAG 3.0的核心设计理念是“让开发者回归算法本身”,通过可视化构建、全链路白盒化、智能助手赋能三大技术路径,破解传统RAG开发的痛点。莫潇羽@无忆研习社结合官方文档与实战经验,为大家拆解其底层技术逻辑,同时补充行业同类框架的对比分析,帮助大家理解其优势所在。
2.1 架构设计:模块化与MCP核心驱动
UltraRAG 3.0采用模块化架构设计,将RAG系统的核心组件封装为标准化的独立MCP(Module Communication Protocol)Server,通过MCP客户端建立简洁的链路搭建,这种设计让开发者无需编写复杂代码,仅通过YAML配置文件即可声明复杂逻辑。
其整体架构可分为五层,从下到上依次为:
- 数据层:支持多格式文档(PDF、Word、网页、图像等)的自动解析与分块,集成MinerU工具高保真还原PDF复杂版面与多栏结构,同时支持将PDF按页转换为图像,保留视觉布局信息,为多模态RAG提供基础。
- 向量层:内置自研UltraRAG-Embedding模型,在MTEB-Retrieval评测榜单上性能评分超过BGE-M3 10%,支持中英文长文本与稀疏检索,同时兼容FAISS、Milvus等主流向量数据库,支持向量存储与相似度检索的灵活配置。
- 核心模块层:包含检索模块、生成模块、评估模块三大核心,同时提供Loop(循环)、Branch(分支)等复杂逻辑组件,支持多路召回、重排序、动态记忆管理等高级功能,模块间通过MCP协议实现高效通信。
- 可视化层:提供“画布模式+代码模式”双模式构建器,支持Pipeline逻辑的可视化编排与实时同步,同时通过“Show Thinking”面板实现推理轨迹的像素级可视化,让复杂链路的调试更高效。
- 智能助手层:内嵌懂框架的AI助手,集成整套开发文档与最佳实践,通过自然语言交互辅助生成Pipeline配置、优化Prompt、解答开发疑问,大幅降低框架学习成本。
与Llamaindex、LangChain等传统RAG框架相比,UltraRAG 3.0的优势在于更专注于知识库适配,避免开发者在模型选型上反复纠结,同时模块化设计让科研人员可灵活组合组件,快速迭代实验方案。莫潇羽@无忆研习社整理了三者的核心差异,供大家参考:
|
对比维度 |
UltraRAG 3.0 |
Llamaindex |
LangChain |
|
可视化能力 |
内置WebUI,支持双模式可视化构建与推理可视化 |
需依赖第三方工具,原生可视化能力弱 |
需自定义开发,原生无可视化功能 |
|
上手门槛 |
低,支持零代码操作,智能助手辅助开发 |
中,需掌握Python编程,文档较复杂 |
高,需深入理解框架逻辑,适合专业开发者 |
|
知识库适配 |
强,内置自动化数据构建与适配工具 |
中,需手动配置分块与嵌入策略 |
中,需自定义知识库连接逻辑 |
|
科研适配性 |
高,模块化设计,内置多种自研前沿技术 |
中,扩展灵活但需二次开发 |
高,生态完善但学习成本高 |
|
### 2.2 核心技术亮点一:双模式Pipeline构建引擎 |
|
|
|
UltraRAG 3.0最直观的优势的是其双模式Pipeline构建引擎,通过“画布模式”与“代码模式”的实时同步,平衡了易用性与灵活性,这也是其实现“逻辑即应用”的核心载体。
画布模式采用“搭积木”式的可视化操作,开发者可通过UI组件直接拖拽组装Loop、Branch等复杂逻辑,无需编写代码即可完成Pipeline的编排。这种模式对小白用户极为友好,例如搭建一个带多路召回和重排序的RAG流程,仅需拖拽“检索组件”“重排序组件”“生成组件”,并配置组件间的关联关系即可完成。
代码模式则为专业开发者提供了精准控制的入口,支持直接编辑YAML配置文件,画布视图会实时同步更新,确保配置修改与可视化呈现的一致性。莫潇羽@无忆研习社以一个基础RAG Pipeline为例,为大家展示其YAML配置文件的核心结构,帮助大家理解配置逻辑:
# 基础RAG Pipeline配置示例(莫潇羽@无忆研习社整理)
version: "3.0"
name: BasicRAGPipeline
modules:
# 文档加载模块
document_loader:
type: FileLoader
params:
file_path: ./data/sample.pdf # 文档路径
chunk_size: 1000 # 分块大小
chunk_overlap: 100 # 分块重叠度
# 向量化模块
embedding:
type: UltraRAGEmbedding
params:
model_name: ultrarag-embedding-zh # 内置中文嵌入模型
device: cpu # 运行设备,支持cpu/gpu
# 向量存储模块
vector_store:
type: FAISS
params:
index_path: ./vector_db/faiss_index # 向量索引路径
# 检索模块
retriever:
type: SimilarityRetriever
params:
top_k: 5 # 检索Top5结果
vector_store: $vector_store # 关联向量存储模块
# 生成模块
generator:
type: LLMGateway
params:
model_type: qwen # 生成模型类型
model_name: qwen3-7b # 模型名称
api_base: http://localhost:65503/v1 # API服务地址
# Pipeline流程编排
flow:
steps:
- name: load_document
module: $document_loader
- name: embed_chunks
module: $embedding
inputs:
text: ${load_document.outputs.chunks}
- name: store_vectors
module: $vector_store
inputs:
vectors: ${embed_chunks.outputs.vectors}
texts: ${load_document.outputs.chunks}
- name: retrieve
module: $retriever
inputs:
query: ${user_input}
- name: generate_answer
module: $generator
inputs:
query: ${user_input}
context: ${retrieve.outputs.documents}
# 输出配置
output:
type: TextOutput
params:
content: ${generate_answer.outputs.text}
这种配置驱动的模式,让开发者可快速调整各模块参数,例如将检索策略从“相似度检索”改为“混合检索(关键词+语义)”,仅需修改retriever模块的type与参数即可,无需改动整体流程逻辑。同时,框架支持“配置即应用”,定义完YAML配置后,系统可自动解析并转化为标准的交互式Demo,无需额外进行界面封装。
2.3 核心技术亮点二:全链路白盒化推理可视化
对于RAG开发者而言,调试复杂链路的核心痛点是“看不见中间过程”,传统框架中,开发者只能看到最终答案,若出现错误,需逐行排查日志定位问题,效率极低。UltraRAG 3.0通过“Show Thinking”面板,实现了推理轨迹的像素级实时可视化,彻底解决了这一问题。
“Show Thinking”面板的核心功能的是将系统“思考”的全过程以结构化形式流式呈现,包括:
- 各模块的执行顺序与耗时,可直观判断哪个环节存在性能瓶颈;
- 循环、分支逻辑的执行细节,例如多轮检索中每一轮的检索结果与决策依据;
- 工具调用过程,包括向量检索的具体结果、重排序的得分变化、大模型的输入上下文;
- 中间态数据,例如分块后的文本片段、向量化后的向量值、检索结果的相关性评分。
莫潇羽@无忆研习社在实战中发现,这种白盒化调试能力可将Bad Case的排查时间缩短70%以上。例如在医疗问诊场景中,若系统生成的答案存在偏差,无需翻找后台日志,仅需在“Show Thinking”面板中比对检索到的医学文献片段与最终答案,即可快速判断问题是出在数据层(检索到的片段存在噪声)、模型层(大模型生成时偏离上下文)还是检索策略层(未检索到核心知识点)。
此外,对于DeepResearch这类复杂的长流程任务,“Show Thinking”面板可实时展示执行进度,让开发者无需等待整个流程结束,即可提前预判执行结果,大幅提升开发效率。
2.4 核心技术亮点三:内置智能开发助手赋能
多数开源框架的文档复杂且更新不及时,开发者往往需要花费大量时间翻阅文档,才能理解参数含义与配置逻辑。UltraRAG 3.0将整套开发文档与最佳实践内嵌到智能助手中,通过自然语言交互,帮助开发者抹平“阅读文档”与“编写配置”之间的认知阻力。
这款智能助手并非通用型AI工具,而是专门针对UltraRAG框架训练的“领域专家”,核心能力包括:
- 配置生成:开发者仅需用自然语言描述需求,例如“我要一个带多路召回和重排序的流程,支持PDF和Word文档加载”,助手即可自动生成标准的Pipeline YAML配置草稿,开发者仅需微调参数即可使用。莫潇羽@无忆研习社测试发现,对于常规RAG场景,助手生成的配置准确率可达90%以上,大幅减少配置编写时间。
- Prompt调优:根据当前任务上下文,提供针对性的Prompt优化建议。例如在法律场景中,助手会优化Prompt的术语使用与逻辑推演要求,确保生成的回答符合法律行业规范;在医疗场景中,会强调基于权威文献生成答案,避免误导性内容。
- 开发辅助:开发者若对某个参数或逻辑存在疑问,无需跳转浏览器翻阅官网文档,可直接向助手提问,例如“UltraRAG-Embedding模型与BGE-M3的区别是什么?如何切换为BGE-M3模型?”,助手会提供详细的解释与代码示例,确保编码过程不中断。
- 论文落地支持:支持输入论文链接,助手会分析文章核心思想,并帮助搭建类似的Pipeline架构。例如输入DeepNote论文链接(https://arxiv.org/pdf/2410.08821),助手可拆解其动态记忆管理策略,并生成对应的Pipeline配置,帮助科研人员快速将论文思想转化为可执行逻辑。
2.5 特色技术:多模态与自研优化策略
UltraRAG 3.0内置多项自研前沿技术,进一步提升了RAG系统的性能与适配能力,其中最值得关注的是多模态支持与两大优化策略:
- 多模态RAG(UltraRAG-Vis):提出纯视觉的RAG Pipeline,通过引入VLMs(视觉语言模型)对文档进行编码,避免了文档解析造成的信息丢失,相比传统Text RAG Pipeline,部分任务在端到端性能上提升25-39%。支持文本、图像的混合检索与生成,例如上传包含图表的PDF,系统可同时解析文本与图表内容,生成包含图表分析的回答。
- KBAlign知识适配策略:提升大语言模型自适应知识库的能力,优化知识检索与推理过程,2.4B模型通过自标注达到GPT-4o的标注性能,并在多个实验中超越GPT-4o本身,适合处理异构知识库的适配场景。
- DDR优化策略:基于可微调数据奖励(DDR)优化检索增强生成,提升任务特定场景的系统性能,在MiniCPM-2.4B、Llama3-8B等多个模型上实验表明,相较原始RAG模型可实现7%以上性能提升。
三、环境部署:从零搭建UltraRAG 3.0开发环境
了解完核心原理后,我们进入实操环节。莫潇羽@无忆研习社结合官方教程与实战经验,为大家详细讲解UltraRAG 3.0的环境部署流程,提供两种部署方式(Conda虚拟环境、Docker),同时梳理常见问题与解决方案,确保不同技术背景的读者都能成功搭建环境。所有工具均提供官方下载地址,避免大家踩坑。
3.1 部署前置准备
首先需确认开发环境满足以下配置要求,莫潇羽@无忆研习社建议根据自身需求选择配置,小白用户可先从最低配置入手,专业开发者建议使用GPU加速,提升运行效率:
|
配置项 |
最低配置 |
推荐配置(GPU加速) |
|
操作系统 |
Windows 10/11、macOS 12+、Ubuntu 20.04+ |
Ubuntu 22.04(稳定性最佳) |
|
CPU |
4核8线程 |
8核16线程及以上 |
|
内存(RAM) |
8GB |
16GB及以上 |
|
GPU |
无(CPU运行) |
NVIDIA RTX 3090/4090(16GB显存及以上),支持CUDA 11.8+ |
|
依赖软件 |
Python 3.9-3.11、Git |
Python 3.10、Git、Docker 20.10+、NVIDIA Container Toolkit |
|
所需软件官方下载地址: |
|
|
- Python:https://www.python.org/downloads/(建议下载3.10版本,兼容性最佳)
- Git:https://git-scm.com/downloads
- Docker:https://www.docker.com/products/docker-desktop/
- NVIDIA Container Toolkit(GPU加速必备):https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
3.2 方式一:Conda虚拟环境部署(推荐开发者)
Conda虚拟环境可隔离不同项目的依赖,避免版本冲突,适合开发者进行二次开发与调试。莫潇羽@无忆研习社为大家拆解每一步操作,同时标注容易出错的环节及解决方案。
3.2.1 安装Anaconda/Conda
若未安装Conda,需先下载并安装:
- Anaconda下载地址:https://www.anaconda.com/products/distribution#download-section(包含Python环境与常用库,适合小白)
- Miniconda下载地址:https://docs.conda.io/en/latest/miniconda.html(轻量版,仅包含Conda与Python,适合空间不足的场景)
安装完成后,验证Conda是否安装成功,打开终端(Windows命令提示符/ Powershell,macOS/Linux终端),输入以下命令:
conda --version
若输出类似“conda 23.10.0”的版本信息,说明安装成功。
3.2.2 创建并激活虚拟环境
输入以下命令创建名为“ultrarag-env”的虚拟环境,指定Python版本为3.10:
conda create -n ultrarag-env python=3.10 -y
创建完成后,激活虚拟环境:
- Windows:
conda activate ultrarag-env - macOS/Linux:
source activate ultrarag-env
激活成功后,终端前缀会显示“(ultrarag-env)”,表示当前处于虚拟环境中。
3.2.3 克隆UltraRAG源码
使用Git克隆UltraRAG官方源码,输入以下命令:
git clone https://github.com/OpenBMB/UltraRAG.git
若未安装Git,也可直接访问GitHub官网下载源码压缩包:https://github.com/OpenBMB/UltraRAG,下载后解压至本地目录。
进入源码目录:
cd UltraRAG
3.2.4 安装依赖包
UltraRAG提供了requirements.txt文件,包含所有依赖包,输入以下命令安装:
pip install -r requirements.txt
【常见问题】安装过程中若出现“找不到指定模块”“版本冲突”等错误,莫潇羽@无忆研习社提供以下解决方案:
- Windows系统下缺少编译依赖:下载并安装Visual Studio Build Tools,勾选“Desktop development with C++”组件,下载地址:https://visualstudio.microsoft.com/visual-cpp-build-tools/。
- GPU版本PyTorch安装失败:手动安装对应CUDA版本的PyTorch,命令参考:
pip3 install torch torchvision torchaudio --index-urlhttps://download.pytorch.org/whl/cu118(CUDA 11.8版本),具体版本可参考PyTorch官网:https://pytorch.org/get-started/locally/。 - 依赖包版本冲突:使用
pip install --upgrade pip更新pip,再尝试重新安装,若仍失败,可手动指定冲突包的版本,例如pip install transformers==4.35.2。
3.2.5 下载预训练模型(可选)
UltraRAG内置多种预训练模型,包括UltraRAG-Embedding、MiniCPM等,若需离线使用或提升性能,可提前下载模型文件,放置于./models目录下。模型官方下载地址:
- UltraRAG-Embedding:https://modelscope.cn/models/UltraRAG/UltraRAG-Embedding/summary
- MiniCPM-2.4B:https://modelscope.cn/models/openbmb/MiniCPM-2.4B/summary
若不提前下载,框架会在首次运行时自动下载模型,需确保网络通畅。
3.2.6 启动UltraRAG UI
完成以上配置后,输入以下命令启动UltraRAG Web UI:
python run.py
启动成功后,终端会输出类似“Running on http://127.0.0.1:8000”的地址,打开浏览器访问该地址,即可进入UltraRAG可视化操作界面,说明环境部署成功。
3.3 方式二:Docker部署(推荐快速上手)
Docker部署可简化依赖配置,实现“一键启动”,适合小白用户快速上手,或需要在服务器上部署的场景。莫潇羽@无忆研习社为大家讲解Docker部署的完整流程,包括CPU版本与GPU版本的部署方法。
3.3.1 安装Docker与NVIDIA Container Toolkit
已安装Docker的用户可跳过此步骤,未安装的用户参考3.1节的官方地址下载安装。若需使用GPU加速,需额外安装NVIDIA Container Toolkit,确保Docker能调用GPU资源,安装命令如下(Ubuntu系统为例):
# 设置NVIDIA仓库
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
# 更新软件包列表并安装
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
# 配置Docker
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
验证GPU是否可用:
docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi
若输出GPU信息,说明配置成功。
3.3.2 拉取UltraRAG Docker镜像
UltraRAG官方提供了CPU与GPU版本的Docker镜像,用户可根据自身配置选择:
- CPU版本:
docker pull openbmb/ultrarag:latest-cpu - GPU版本(CUDA 11.8):
docker pull openbmb/ultrarag:latest-gpu
若拉取速度较慢,可配置Docker镜像加速器,例如阿里云加速器、DaoCloud加速器等。
3.3.3 启动Docker容器
创建并启动Docker容器,映射端口与数据目录,确保数据持久化:
- CPU版本:
docker run -d \
--name ultrarag \
-p 8000:8000 \
-v $(pwd)/ultrarag_data:/app/data \
openbmb/ultrarag:latest-cpu
- GPU版本:
docker run -d \
--name ultrarag \
--gpus all \
-p 8000:8000 \
-v $(pwd)/ultrarag_data:/app/data \
openbmb/ultrarag:latest-gpu
参数说明:
-d:后台运行容器;--name ultrarag:指定容器名称为ultrarag;-p 8000:8000:将容器的8000端口映射到主机的8000端口;-v $(pwd)/ultrarag_data:/app/data:将主机的ultrarag_data目录映射到容器的/app/data目录,实现数据持久化;--gpus all:允许容器使用所有GPU资源。
启动后,输入docker ps查看容器运行状态,若STATUS列为“Up”,说明容器启动成功,打开浏览器访问http://127.0.0.1:8000即可进入UltraRAG UI。
3.3.4 Docker容器常用命令
莫潇羽@无忆研习社整理了常用的Docker命令,方便大家管理容器:
- 停止容器:
docker stop ultrarag - 启动容器:
docker start ultrarag - 重启容器:
docker restart ultrarag - 查看容器日志:
docker logs -f ultrarag(排查启动失败问题) - 进入容器内部:
docker exec -it ultrarag /bin/bash - 删除容器:
docker rm -f ultrarag(删除前需停止容器)
3.4 环境验证与基础设置
环境部署完成后,我们需要进行简单验证,确保框架能正常运行,同时进行基础设置,适配后续开发需求。
- 基础验证:进入UltraRAG UI后,点击左侧“New Pipeline”,选择“Basic RAG”模板,点击“Build”按钮,系统自动编译Pipeline,若显示“Build Success”,说明框架运行正常。
- API密钥配置:若需使用外部大模型(如OpenAI、阿里云通义千问),需配置API密钥。点击右上角“Settings”,在“Model API”选项卡中填写对应模型的API密钥与服务地址,保存后即可在Pipeline中调用该模型。
- 数据目录设置:点击“Settings”→“Data Path”,可修改文档存储目录与向量数据库存储目录,建议设置为持久化目录(如Docker部署时映射的ultrarag_data目录),避免容器重启后数据丢失。
四、实操实战:从零搭建企业级RAG应用
环境部署完成后,我们进入核心实操环节。莫潇羽@无忆研习社将以“企业内部知识库问答系统”为例,带大家从零搭建完整的RAG应用,涵盖文档加载、Pipeline构建、调试优化、部署上线全流程,同时补充多模态RAG、复杂流程编排等高级实操技巧,兼顾小白与专业开发者的需求。
本次实战案例的需求为:搭建一个支持PDF、Word文档加载的内部知识库问答系统,具备多路召回、重排序功能,能生成带引用标注的回答,同时支持推理过程可视化调试。
4.1 基础实操:搭建简易RAG问答系统
我们先从最基础的RAG Pipeline搭建入手,掌握核心操作流程,再逐步添加高级功能。
4.1.1 文档加载与预处理
文档加载是RAG系统的基础,UltraRAG支持多格式文档的自动加载与预处理,操作步骤如下:
- 进入UltraRAG UI,点击左侧“Data Management”,选择“Document Upload”,点击“Upload Files”,上传需要作为知识库的PDF、Word文档(莫潇羽@无忆研习社建议先上传1-2个测试文档,熟悉流程后再批量上传)。
- 文档上传完成后,系统自动进行分块处理,默认分块大小为1000字符,分块重叠度为100字符。若需调整分块策略,点击文档右侧“Edit Chunk Settings”,可修改分块大小、重叠度、分块方式(语义切片/滑动窗口切片)。
- 分块完成后,点击“Preview Chunks”可预览分块结果,检查是否存在语义断裂、信息丢失等问题。例如对于技术文档,若分块切断了代码片段或公式,可减小分块大小,确保语义完整。
- 点击“Embed & Store”,系统自动使用UltraRAG-Embedding模型对分块后的文本进行向量化处理,并存储到默认的FAISS向量数据库中,向量存储完成后,状态会显示为“Completed”。
【技巧】对于包含表格、图表的PDF文档,建议勾选“Enable Multi-Modal Processing”,系统会自动解析表格与图表内容,保留视觉信息,为后续多模态问答提供支持。
4.1.2 可视化搭建Pipeline(画布模式)
画布模式适合小白用户快速搭建Pipeline,无需编写代码,仅通过拖拽组件即可完成流程编排:
- 点击左侧“Pipeline Builder”,选择“New Pipeline”,输入Pipeline名称(如“BasicRAG-QA”),选择“Blank Pipeline”,进入画布编辑界面。
- 从左侧组件栏拖拽“User Input”组件到画布,作为用户问题输入入口,双击组件可修改名称与提示语(如提示语改为“请输入您的问题,系统将基于内部知识库为您解答”)。
- 拖拽“Retriever”组件到画布,连接“User Input”组件的输出端到“Retriever”组件的输入端,双击“Retriever”组件进行配置:选择向量数据库为“FAISS”,检索策略为“Similarity Retrieval”,Top K设置为5(检索前5个最相关的片段)。
- 拖拽“Generator”组件到画布,连接“Retriever”组件的输出端到“Generator”组件的输入端,双击“Generator”组件进行配置:选择生成模型(如MiniCPM-2.4B,本地运行无需API密钥;若使用OpenAI,需提前配置API密钥),Prompt模板选择“RAG QA with Citation”(带引用标注的模板)。
- 拖拽“Output”组件到画布,连接“Generator”组件的输出端到“Output”组件的输入端,双击“Output”组件,设置输出类型为“Text”,勾选“Show Citations”(显示引用标注)。
- 点击顶部“Build”按钮,系统自动进行逻辑自检与语法校验,若配置无误,会显示“Build Success”,同时生成参数配置面板;若存在错误,系统会提示具体问题(如组件未连接、参数配置错误),需根据提示修改。
4.1.3 测试与调试Pipeline
Pipeline构建完成后,我们需要进行测试,验证问答效果,同时通过可视化面板调试优化:
- 点击顶部“Test”按钮,进入测试界面,在输入框中输入问题(如“知识库中关于XX技术的核心原理是什么?”),点击“Submit”提交问题。
- 系统执行Pipeline流程,同时在“Show Thinking”面板中实时展示推理过程,包括检索到的5个文本片段、每个片段的相关性评分、生成答案时的上下文组装过程。
- 查看输出结果,检查答案是否准确、引用标注是否正确。若答案存在偏差,通过“Show Thinking”面板定位问题:若检索到的片段与问题无关,需调整检索策略(如改为混合检索);若片段相关但答案偏离,需优化Prompt模板。
- 调试完成后,点击“Save Pipeline”保存Pipeline,后续可直接调用或修改。
4.1.4 代码模式优化Pipeline(专业开发者)
对于专业开发者而言,代码模式可提供更精准的参数控制,例如调整嵌入模型、优化检索重排序策略等。莫潇羽@无忆研习社以优化检索策略为例,为大家展示代码模式的使用方法:
- 在Pipeline编辑界面,点击顶部“Code View”切换到代码模式,系统会自动将画布模式的配置转化为YAML代码。
- 修改Retriever模块,将检索策略改为“HybridRetriever”(混合检索,结合关键词检索与语义检索),同时添加重排序组件,优化检索结果:
# 修改后的Retriever与重排序配置(莫潇羽@无忆研习社整理)
modules:
# 新增关键词检索模块
keyword_retriever:
type: KeywordRetriever
params:
top_k: 10
analyzer: ik_max_word # 中文分词器,适配中文知识库场景
# 向量检索模块(保留原有语义检索能力)
vector_retriever:
type: SimilarityRetriever
params:
top_k: 10
vector_store: $vector_store
# 混合检索模块
hybrid_retriever:
type: HybridRetriever
params:
retrievers:
- $vector_retriever
- $keyword_retriever
weights: [0.7, 0.3] # 语义检索权重70%,关键词检索权重30%,可按需微调
# 重排序模块(新增)
reranker:
type: CrossEncoderReranker
params:
model_name: bge-reranker-large # 选用开源高效的重排序模型
top_k: 5 # 重排序后保留Top5最相关片段,精简上下文
# 文档加载、向量化、向量存储、生成模块(沿用基础配置,略作适配)
document_loader:
type: FileLoader
params:
file_path: ./data/enterprise_knowledge.pdf
chunk_size: 800 # 适配混合检索,适度缩小分块提升精准度
chunk_overlap: 80
embedding:
type: UltraRAGEmbedding
params:
model_name: ultrarag-embedding-zh
device: gpu # 有GPU建议开启,提升向量化速度
vector_store:
type: FAISS
params:
index_path: ./vector_db/enterprise_index
generator:
type: LLMGateway
params:
model_type: minicpm
model_name: minicpm-2.4b-chat
temperature: 0.3 # 降低温度,确保回答严谨,适配企业知识库场景
# Pipeline流程编排(同步更新,串联新增模块)
flow:
steps:
- name: load_doc
module: $document_loader
- name: embed
module: $embedding
inputs:
text: ${load_doc.outputs.chunks}
- name: store_vec
module: $vector_store
inputs:
vectors: ${embed.outputs.vectors}
texts: ${load_doc.outputs.chunks}
- name: hybrid_retrieve
module: $hybrid_retriever
inputs:
query: ${user_input}
- name: rerank
module: $reranker
inputs:
query: ${user_input}
documents: ${hybrid_retrieve.outputs.documents} # 接收混合检索结果并重排序
- name: generate
module: $generator
inputs:
query: ${user_input}
context: ${rerank.outputs.documents} # 基于重排序后的精准上下文生成答案
output:
type: TextOutput
params:
content: ${generate.outputs.text}
show_citations: true # 强制显示引用,标注答案来源片段
配置说明:重排序模块选用CrossEncoderReranker,通过交叉编码器对检索结果进行深度语义匹配,过滤冗余片段,解决混合检索后可能出现的相关