面向听书平台的智能知识库系统,支持内容导入、书籍推荐、书籍详情、内容检索和知识问答。
smart_audiobooks/
├── main.py # 统一入口 (FastAPI :8000)
├── config/ # 配置层 (9个配置模块)
├── schema/ # 数据模型层 (内容类型/元数据/API模型)
├── processor/ # 业务处理层 (LangGraph 工作流)
│ ├── base.py # 统一节点基类
│ ├── import_processor/ # 导入流程 (7节点)
│ └── query_processor/ # 查询流程 (7节点, 统一RAG)
├── utils/ # 工具层 (Milvus/MongoDB/MinIO/LLM/SSE)
├── web/ # Web 层
│ ├── api/
│ │ ├── import_service.py # 导入 API 路由
│ │ └── query_service.py # 查询 API 路由
│ └── page/ # 前端页面
├── tool/ # 辅助工具
└── test/ # 测试数据
- 支持 PDF/MD 文件上传
- LLM 自动提取书籍元数据(书名、作者、内容类型、类别、时长等)
- 7 种内容类型:有声书信息/书籍简介/作者介绍/听书笔记/推荐运营资料/用户评论摘要/常见问答
- 异步处理,实时状态追踪
- 按书名、作者、类别、场景标签等条件查找
- 返回书籍列表、特色亮点、适合人群、推荐理由
- 查询书籍简介、作者介绍、有声书时长、演播信息
- 内容标签、听书亮点、常见问题
- 定位书籍资料与听书笔记
- 返回书名、作者名、内容类型、文件名等来源信息
- 基于知识库内容生成答案
- 统一 RAG 流程,自动适配不同查询类型
- 返回引用来源信息
- 单轮/多轮对话
- 流式输出 (SSE)
- 历史记录管理
# 安装依赖
#pip install -r requirements.txt
# 配置环境变量
cp .env.example .env
# 编辑 .env 填写实际的 API 密钥和服务地址
# 启动服务
python main.py
# 访问
# - 导入页面: http://127.0.0.1:8000/import.html
# - 聊天页面: http://127.0.0.1:8000/chat.html
# - API 文档: http://127.0.0.1:8000/docsnode_entry → (PDF) node_pdf_to_md → node_md_img → node_document_split
↓
node_item_name_recognition (LLM 元数据提取)
↓
node_bge_embedding (BGE-M3 向量化)
↓
node_import_milvus (持久化)
node_item_name_confirm → [并行]
├─ node_search_embedding (向量混合检索)
├─ node_search_embedding_hyde (HyDE 假设文档检索)
└─ node_web_search_mcp (网络搜索)
↓
node_rrf (RRF 融合排序)
↓
node_rerank (重排序)
↓
node_answer_output (答案生成 + 引用提取)
| 服务 | 用途 |
|---|---|
| Milvus | 向量数据库 (chunks + item_names) |
| MongoDB | 对话历史存储 |
| MinIO | 文件/图片对象存储 |
| DashScope | LLM / Rerank / VL / MCP WebSearch |
| MinerU | PDF 结构化解析 |
| BGE-M3 (本地) | 文本向量化 (dense 1024d + sparse) |