跳转到内容

Flowise 的 RAG 管线:文档加载、嵌入、向量存储与检索

学习目标

  • 理解 Flowise RAG 管线的四个阶段:文档加载 → 分割 → 嵌入 → 存储/检索
  • 掌握 Flowise 支持的 24 种向量数据库与 20+ 文档加载器的组合方式
  • 学会在画布中构建完整的 RAG 检索链

前置知识

本章涉及 RAG 策略的通用原理,建议先阅读:

下文假设你已理解 RAG 通用概念(检索增强生成、向量嵌入、相似度搜索等),直接聚焦 Flowise 的具体实现。


项目实践

RAG 管线的节点组成

在 Flowise 画布中,一个完整的 RAG 管线由四类节点串联构成:

1. 文档加载器(20+ 种)

Flowise 在 nodes/documentloaders/ 目录下提供多种文档加载器:

类别加载器说明
文件PDF、CSV、JSON、TXT、DOCX本地文件解析
WebCheerio(网页抓取)、Puppeteer(浏览器渲染)从 URL 加载内容
APIAirtable、GitHub、Notion、Confluence从第三方 API 获取数据
存储S3、Google Drive、GitHub Repo从云存储加载
数据库SerpAPI 搜索结果、Brave 搜索搜索结果作为文档源

2. 文本分割器

分割器适用场景
Recursive Character Text Splitter通用文本,按字符递归分割
Token Text Splitter按 Token 数量精确分割
Markdown Text SplitterMarkdown 文档,尊重标题层级
Code Text Splitter代码文件,尊重语法结构

3. 向量数据库(24 种)

Flowise 在 nodes/vectorstores/ 目录下支持:

类别向量数据库
云服务Pinecone、Milvus、Qdrant、Weaviate、Chroma、Supabase
开源Faiss、Meilisearch、SimpleStore(内存)
数据库内置Postgres (pgvector)、MongoDB Atlas、Elasticsearch、OpenSearch
Redis 系Redis、Upstash Redis
企业Astra (DataStax)、Kendra (AWS)、Couchbase、Singlestore
其他Vectara、Zep、ZepCloud

4. 检索器

Flowise 在 nodes/retrievers/ 目录下提供:

检索器说明
Vector Store Retriever基础相似度搜索
Multi Query RetrieverLLM 生成多个查询,综合结果
Self Query RetrieverLLM 解析查询中的元数据过滤条件
Contextual Compression Retriever检索后进行上下文压缩
Vespa RetrieverVespa 引擎检索
LlamaIndex Retriever集成 LlamaIndex 的检索引擎

实际构建示例:PDF 知识库问答

在 Flowise 画布中连接以下节点:

  1. PDF 文档加载器 → 上传 PDF 文件
  2. Recursive Character Text SplitterchunkSize: 1000, chunkOverlap: 200
  3. OpenAI Embeddingsmodel: text-embedding-3-small
  4. Pinecone 向量存储 → 配置 API Key 和 Index Name
  5. Vector Store RetrievertopK: 5, searchType: similarity
  6. Conversational Retrieval QA Chain → 连接 LLM 和 Retriever

问题与规避

向量维度不匹配

问题:不同嵌入模型生成的向量维度不同(如 OpenAI text-embedding-3-small 是 1536 维,text-embedding-3-large 是 3072 维),与向量库索引的维度不一致会导致插入失败。

对策

  • 创建向量库索引时指定与嵌入模型匹配的维度
  • 更换嵌入模型时需要重建索引

大批量文档 Upsert 内存溢出

问题:一次性将大量文档插入向量库时,嵌入模型 API 的批量请求可能导致内存溢出。

对策

  • 使用 Flowise 的 UpsertQueue(BullMQ + Redis)进行分批处理
  • 配置 BATCH_SIZE 环境变量控制每批文档数量

文档更新与版本控制

问题:源文档更新后,向量库中可能存在旧版本的嵌入。

对策

  • Flowise 的 Document Store 功能支持文档版本管理
  • 删除旧文档后重新 Upsert
  • 使用元数据(如 source, lastModified)标记文档版本

设计取舍

为什么支持 24+ 种向量数据库?

方案优势代价
只支持主流 2-3 种维护成本低、代码质量高用户受限
广泛支持 24+ 种覆盖几乎所有使用场景维护成本高、测试矩阵大

Flowise 选择广泛支持的策略,因为:

  • 目标用户群体使用的向量库差异很大(企业用 Pinecone/Milvus,个人用 Faiss/Chroma)
  • 每个向量数据库节点的代码量相对固定(配置表单 + 初始化逻辑)
  • 社区贡献者可以轻松添加新的向量数据库节点

节点化 RAG vs 代码式 RAG

维度节点化(Flowise)代码式(LangChain Python)
构建速度拖拽几分钟编写代码 30+ 分钟
调试逐节点查看输出断点调试
自定义逻辑需 CustomFunction 节点直接编写代码
版本控制JSON diff 不直观Git diff 友好

Flowise 的节点化 RAG 适合快速原型和标准化管线。当需要高度自定义逻辑时,可通过 CustomFunction 节点注入 JavaScript 代码。


参考来源