Knowledge 服务
MolanDev Knowledge 是一款企业级 RAG 知识库服务,提供从文档摄入、向量化存储到智能检索问答的完整解决方案。
核心特性
文档摄入
- 多格式支持:PDF、Word、Excel、PPT、HTML、TXT、Markdown 等主流格式
- 智能转换:三种转换引擎(MarkItDown、LibreOffice、MinerU)智能路由
- 结构感知分片:理解 Markdown 章节结构,保留语义完整性
- 位置追踪:记录分片在原文中的位置,支持精准高亮
检索系统
- 向量检索:基于语义相似度的智能检索
- 混合检索:关键词 + 语义双路召回,RRF 融合算法
- 重排序:集成 qwen3-rerank 模型,精排优化
- 上下文补全:自动扩展相邻分片,构建完整语义片段
RAG 问答
- 多轮对话:历史问题组合检索,上下文连贯
- 流式响应:实时输出,体验流畅
- 深度思考:支持模型推理过程展示
- 引用溯源:回答关联原文,可信可查
技术栈
| 组件 | 技术选型 | 说明 |
|---|---|---|
| 向量数据库 | PgVector / Milvus | 通过 Spring AI VectorStore 抽象,支持多种向量数据库 |
| 全文检索 | Elasticsearch | 关键词检索,用于混合检索 |
| Embedding | OpenAI 兼容接口 | 支持 Ollama、各大云厂商 |
| 重排序 | qwen3-rerank | 阿里云 DashScope |
| LLM | OpenAI 兼容接口 | 支持 OpenAI、DeepSeek、通义千问等 |
| 框架 | Spring AI | AI 能力集成 |
架构设计
┌─────────────────────────────────────────────────────────────┐
│ Knowledge Service │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 文档摄入 │───▶│ 向量化 │───▶│ 存储层 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ 格式转换 │ │ PgVector │ │
│ │ - MarkItDown│ │ ES │ │
│ │ - LibreOffice│ │ MySQL │ │
│ │ - MinerU │ └─────────────┘ │
│ └─────────────┘ │ │
│ │ │ │
│ ▼ │ │
│ ┌─────────────┐ │ │
│ │ 智能分片 │ │ │
│ │ - 结构感知 │ │ │
│ │ - 位置追踪 │ │ │
│ └─────────────┘ │ │
│ │ │
├────────────────────────────────────────────┼───────────────┤
│ │ │
│ ┌─────────────┐ ┌─────────────┐ │ │
│ │ 检索系统 │◀───┴─────────────┘ │ │
│ └─────────────┘ │ │
│ │ │ │
│ ▼ │ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 向量检索 │ 混合检索 │ 重排序 │ 上下文补全 │ │
│ └─────────────────────────────────────────────────┘ │
│ │ │
├────────────────────────────────────────────┼───────────────┤
│ │ │
│ ┌─────────────┐ │ │
│ │ RAG 问答 │◀──────────────────────────┘ │
│ └─────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 多轮对话 │ 流式响应 │ 引用溯源 │ 深度思考 │ │
│ └─────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘快速开始
1. 配置向量数据库
以 PgVector 为例:
yaml
spring:
ai:
vectorstore:
pgvector:
index-type: HNSW
distance-type: COSINE_DISTANCE
dimensions: 15362. 配置 Embedding 模型
yaml
spring:
ai:
openai:
base-url: https://api.openai.com
api-key: ${OPENAI_API_KEY}
embedding:
options:
model: text-embedding-3-small3. 配置 LLM
yaml
spring:
ai:
openai:
chat:
options:
model: gpt-4o4. 创建知识库并上传文档
通过 API 或管理界面创建知识库,上传文档后系统自动完成转换、分片、向量化。
5. 开始问答
bash
curl -X POST /api/knowledge/chat \
-H "Content-Type: application/json" \
-d '{
"query": "什么是分布式锁?",
"libraryIds": ["your-library-id"]
}'模块化设计
Knowledge 服务采用模块化设计,各组件可独立开关:
| 组件 | 配置项 | 默认值 | 说明 |
|---|---|---|---|
| 混合检索 | molandev.rag.hybrid-search.enabled | false | 启用 ES 关键词检索 |
| 重排序 | molandev.rag.rerank.enabled | false | 启用 qwen3-rerank |
| 上下文补全 | molandev.rag.context-expansion.enabled | false | 扩展相邻分片 |
这种设计允许根据场景灵活组合:
- 轻量模式:仅向量检索,资源消耗低
- 标准模式:向量检索 + 重排序,平衡效果与成本
- 完整模式:混合检索 + 重排序 + 上下文补全,最佳效果
与 MolanDev 框架集成
Knowledge 服务与 MolanDev 框架深度集成:
- 单体/微服务自由切换:同一套代码,部署模式灵活选择
- 统一认证授权:复用框架的 RBAC 权限体系
- 文件服务集成:文档存储复用框架的文件管理能力
- 多数据源支持:知识库数据可独立数据源