Skip to content

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关键词检索,用于混合检索
EmbeddingOpenAI 兼容接口支持 Ollama、各大云厂商
重排序qwen3-rerank阿里云 DashScope
LLMOpenAI 兼容接口支持 OpenAI、DeepSeek、通义千问等
框架Spring AIAI 能力集成

架构设计

┌─────────────────────────────────────────────────────────────┐
│                      Knowledge Service                       │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────┐    ┌─────────────┐    ┌─────────────┐     │
│  │   文档摄入   │───▶│   向量化    │───▶│   存储层    │     │
│  └─────────────┘    └─────────────┘    └─────────────┘     │
│        │                                    │              │
│        ▼                                    ▼              │
│  ┌─────────────┐                     ┌─────────────┐       │
│  │ 格式转换    │                     │  PgVector   │       │
│  │ - MarkItDown│                     │  ES         │       │
│  │ - LibreOffice│                    │  MySQL      │       │
│  │ - MinerU    │                     └─────────────┘       │
│  └─────────────┘                           │               │
│        │                                   │               │
│        ▼                                   │               │
│  ┌─────────────┐                           │               │
│  │ 智能分片    │                           │               │
│  │ - 结构感知  │                           │               │
│  │ - 位置追踪  │                           │               │
│  └─────────────┘                           │               │
│                                            │               │
├────────────────────────────────────────────┼───────────────┤
│                                            │               │
│  ┌─────────────┐    ┌─────────────┐       │               │
│  │   检索系统   │◀───┴─────────────┘       │               │
│  └─────────────┘                           │               │
│        │                                   │               │
│        ▼                                   │               │
│  ┌─────────────────────────────────────────────────┐       │
│  │  向量检索  │  混合检索  │  重排序  │  上下文补全  │       │
│  └─────────────────────────────────────────────────┘       │
│                                            │               │
├────────────────────────────────────────────┼───────────────┤
│                                            │               │
│  ┌─────────────┐                           │               │
│  │  RAG 问答   │◀──────────────────────────┘               │
│  └─────────────┘                                           │
│        │                                                   │
│        ▼                                                   │
│  ┌─────────────────────────────────────────────────┐       │
│  │  多轮对话  │  流式响应  │  引用溯源  │  深度思考  │       │
│  └─────────────────────────────────────────────────┘       │
│                                                            │
└─────────────────────────────────────────────────────────────┘

快速开始

1. 配置向量数据库

以 PgVector 为例:

yaml
spring:
  ai:
    vectorstore:
      pgvector:
        index-type: HNSW
        distance-type: COSINE_DISTANCE
        dimensions: 1536

2. 配置 Embedding 模型

yaml
spring:
  ai:
    openai:
      base-url: https://api.openai.com
      api-key: ${OPENAI_API_KEY}
      embedding:
        options:
          model: text-embedding-3-small

3. 配置 LLM

yaml
spring:
  ai:
    openai:
      chat:
        options:
          model: gpt-4o

4. 创建知识库并上传文档

通过 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.enabledfalse启用 ES 关键词检索
重排序molandev.rag.rerank.enabledfalse启用 qwen3-rerank
上下文补全molandev.rag.context-expansion.enabledfalse扩展相邻分片

这种设计允许根据场景灵活组合:

  • 轻量模式:仅向量检索,资源消耗低
  • 标准模式:向量检索 + 重排序,平衡效果与成本
  • 完整模式:混合检索 + 重排序 + 上下文补全,最佳效果

与 MolanDev 框架集成

Knowledge 服务与 MolanDev 框架深度集成:

  • 单体/微服务自由切换:同一套代码,部署模式灵活选择
  • 统一认证授权:复用框架的 RBAC 权限体系
  • 文件服务集成:文档存储复用框架的文件管理能力
  • 多数据源支持:知识库数据可独立数据源

下一步