MS-RAG
多源增强检索增强生成框架(MS-RAG)
简介
大语言模型(LLM)能力强大,但它只能基于训练数据进行回答。当用户需要最新的或特定领域的信息— —例如内部文档、私有数据库或最新报告时——仅靠 LLM 远远不够。
检索增强生成(RAG) 通过从外部知识源中检索相关信息,并将其作为上下文提供给 LLM,从而确保回答基于真实数据而非记忆中的模式。
DB-GPT 实现了 多源 RAG(MS-RAG) 框架,超越了基本的文档问答。它支持多种知识来源(文档、URL、数据库、知识图谱)、多种检索策略(向量、关键词、图谱、混合),并与 DB-GPT 的智能体和工作流生态深度集成。
架构设计
整体流水线
MS-RAG 流水线由四个阶段组成:
知识源 → 分块 → 索引 → 检索 → LLM 生成
- 知识加载 —
KnowledgeFactory根据数据源类型和文件扩展名,自动路由到对应的Knowledge实现类。 - 文档分块 —
ChunkManager使用可配置的策略(按大小、页面、段落、分隔符或 Markdown 标题)将文档切分为可管理的片段。 - 索引构建 —
Assembler类(Embedding、BM25、Summary、DBSchema)将分块持久化到相应的索引存储(向量数据库、全文引擎或知识图谱)。 - 检索与生成 — 查询时,
Retriever检索相关分块,可选的QueryRewrite扩展查询,Ranker对结果重排序,最后由 LLM 生成最终回答。
Assembler 流水线
BaseAssembler 定义了连接所有阶段的统一流水线:
Knowledge.load() → ChunkManager.split() → Assembler.persist() → Assembler.as_retriever()
DB-GPT 提供了四种专用的 Assembler:
| Assembler | 用途 | 索引后端 |
|---|---|---|
| EmbeddingAssembler | 向量相似度 RAG(最常用) | 向量数据库(Chroma、Milvus 等) |
| BM25Assembler | 基于关键词的全文检索 | Elasticsearch |
| SummaryAssembler | 基于摘要的长文档 RAG | 向量数据库 |
| DBSchemaAssembler | 数据库 Schema 检索,用于 Text2SQL 场景 | 向量数据库 |
知识来源
DB-GPT 支持从多种数据源加载知识。在 Web UI 中,上传时可以选择数据源类型:

数据源类型
| 类型 | 描述 | 示例 |
|---|---|---|
| 文档 | 上传多种格式的文件 | PDF、Word、Excel、CSV、Markdown、PowerPoint、TXT、HTML、JSON、ZIP |
| 网址 | 抓取并索引网页内容 | 任何可访问的 HTTP/HTTPS URL |
| 文本 | 直接输入原始文本 | 在 UI 中粘贴文本内容 |
| 语雀文档 | 从语雀文档平台导入 | 语雀文档链接 |
支持的文档格式
| 格式 | 扩展名 | 实现类 |
|---|---|---|
.pdf | PDFKnowledge | |
| CSV | .csv | CSVKnowledge |
| Markdown | .md | MarkdownKnowledge |
| Word (docx) | .docx | DocxKnowledge |
| Word (旧版) | .doc | Word97DocKnowledge |
| Excel | .xlsx | ExcelKnowledge |
| PowerPoint | .pptx | PPTXKnowledge |
| 纯文本 | .txt | TXTKnowledge |
| HTML | .html | HTMLKnowledge |
| JSON | .json | JSONKnowledge |
存储类型
创建知识库时,可以从三种存储类型中选择:

| 存储类型 | 描述 | 适用场景 |
|---|---|---|
| Vector Store(向量存储) | 存储文档嵌入向量,用于语义相似度搜索 | 通用文档问答 |
| Knowledge Graph(知识图谱) | 以图结构存储实体和关系 | 具有复杂实体关系的领域知识 |
| Full Text(全文索引) | 全文索引,用于关键词检索 | 精确术语匹配和关键词搜索 |
向量存储后端
| 后端 | 描述 | 安装依赖 |
|---|---|---|
| ChromaDB | 默认内嵌向量数据库,零配置 | storage_chromadb |
| Milvus | 生产级分布式向量数据库 | storage_milvus |
| PGVector | PostgreSQL 向量扩展 | storage_pgvector |
| Weaviate | 云原生向量搜索引擎 | storage_weaviate |
| Elasticsearch | 全文 + 向量混合搜索 | storage_elasticsearch |
| OceanBase | 云原生分布式数据库 | storage_oceanbase |
知识图谱后端
| 后端 | 描述 |
|---|---|
| TuGraph | 蚂蚁集团高性能图数据库 |
| Neo4j | 流行的开源图数据库 |
| MemGraph | 内存图数据库,低延迟查询 |
全文检索后端
| 后端 | 描述 |
|---|---|
| Elasticsearch | 行业标准全文搜索引擎 |
| OpenSearch | AWS 托管的搜索和分析套件 |
检索策略
DB-GPT 提供多种检索模式。可以在知识库设置中配置检索模式:

| 策略 | 描述 | 所需后端 |
|---|---|---|
| Semantic(语义检索) | 使用嵌入向量进行语义相似度搜索 | 向量数据库 |
| Keyword(关键词检索) | 基于 BM25 的关键词匹配 | Elasticsearch |
| Hybrid(混合检索) | 结合向量 + 关键词搜索,使用倒数排名融合(RRF) | 向量数据库 + Elasticsearch |
| Tree(树状检索) | 面向层级文档的树状结构检索 | 向量数据库 |