Skip to content

RAG 流水线

概述

Snail AI 的 RAG(Retrieval-Augmented Generation,检索增强生成)流水线分为两大阶段:文档摄入流水线(Ingestion Pipeline)检索流水线(Retrieval Pipeline)。文档摄入负责将原始文档处理成可检索的知识片段并索引;检索流水线负责在对话时从知识库中召回相关知识并注入到 Agent 上下文中。

文档摄入流水线

完整流程

支持的文档格式

格式扩展名解析器特性
PDF.pdfPDF Parser支持文本提取、图片 OCR
Word.docx .docDOCX/DOC Parser支持表格和图片
Excel.xlsx .xlsExcel Parser表格转结构化文本
PowerPoint.pptxPPTX Parser幻灯片文本提取
Markdown.mdMD Parser保留结构标记
HTML.htmlHTML Parser去除标签,保留文本
纯文本.txt直接读取最简单的格式
CSV.csvCSV Parser表格转文本

文档处理状态机

文本分片策略

Snail AI 提供 4 种分片策略,满足不同文档类型和检索需求:

策略标识原理适用场景
递归字符default按分隔符优先级递归分割(段落→句子→词)通用场景,推荐默认
自定义分隔符delimiter按用户指定的分隔符进行一级切分结构化文档(如 FAQ、条款)
正则表达式regex按正则表达式匹配进行一级切分按章节/标题分割
语义智能分片smart调用对话模型识别语义边界再切分高质量知识库,对准确性要求高

分片参数:

参数说明默认值
maxChunkTokens单片最大 Token 数500
chunkOverlap相邻片段重叠 Token 数50
customDelimiter自定义分隔符(delimiter 模式)-
chunkRegex正则表达式(regex 模式)-
chunkModelId语义分片模型 ID(smart 模式)-
mergeShortSegments是否合并过短的片段true
imageOcr是否对图片进行 OCRfalse

去重架构

文档上传采用 Preview-Commit 两阶段模式,在上传前检测重复并提供用户二次确认的能力:

去重决策矩阵:

去重策略匹配方式说明
NONE (0)不检查所有文件直接入库
BY_NAME (1)文件名完全匹配检查同名文件是否已存在
BY_CONTENT (2)内容哈希匹配计算文档内容哈希值比对
BY_NAME_OR_CONTENT (3)文件名或内容任意匹配最严格模式
冲突动作行为
REJECT (0)拒绝上传,返回错误
SKIP (1)静默跳过重复文件
OVERWRITE (2)删除旧文档,上传新文档

检索流水线

完整流程

检索参数

参数类型说明默认值
resultCountint最终返回的知识片段数量5
questionRewriteboolean是否启用 LLM Query 改写false
fusionStrategyenum融合策略:RRF / WEIGHTED_SUMRRF
denseWeightfloat向量检索权重(WEIGHTED_SUM 模式下)0.7
rrfKintRRF 融合常数 K60
rerankEnabledboolean是否启用 Reranker 重排序false
rerankModelIdintReranker 模型 ID-
enterRerankCountint进入 Reranker 的候选数量20
thresholdEnabledboolean是否启用相似度阈值过滤false
thresholdfloat相似度阈值,低于此值的结果被过滤0.5

混合检索详解

向量检索

向量检索基于语义相似度,能够理解查询意图,召回语义相关但用词不同的知识片段。

BM25 检索

BM25 检索基于关键词匹配,对精确术语、名称、编号等特别有效。

RRF 融合算法

RRF(Reciprocal Rank Fusion) 是一种不依赖分数量纲的排名融合算法:

RRF_score(d) = Σ 1 / (k + rank_i(d))

其中 k 是常数(默认 60),rank_i(d) 是文档 d 在第 i 个检索系统中的排名。

加权求和融合

当选择 WEIGHTED_SUM 策略时,两种检索的分数按权重加权求和:

final_score(d) = denseWeight × vector_score(d) + (1 - denseWeight) × bm25_score(d)

注意: 使用加权融合前,需要对两种分数进行归一化处理(Min-Max Normalization),确保量纲一致。

Reranker 重排序

Reranker 模型使用 Cross-Encoder 架构,对 query 和每个候选文档联合编码,产生更精确的相关性分数。相比向量检索的 Bi-Encoder(独立编码后计算余弦相似度),Cross-Encoder 的准确度更高但计算成本也更高,因此采用"粗筛 + 精排"的两阶段架构。

检索性能指标

每次检索返回详细的性能指标(SearchMetrics),用于调优和监控:

存储后端

向量存储

存储后端类别适用场景特点
PgVector向量存储中小规模,与 PG 共用实例部署简单,维护成本低
Milvus向量存储大规模向量检索(百万级以上)高性能,分布式扩展
Elasticsearch向量+全文需要混合检索的场景同时支持向量和关键词检索
PG 全文搜索引擎轻量 BM25,不额外部署 ES与 PG 共用实例

存储实例配置

每个 RAG 知识库可独立绑定不同的存储实例:

端到端数据流

Apache 2.0 Licensed