Skip to content

Repository files navigation

星辰优选 · 企业级 RAG 知识库问答系统

面向电商企业内部知识场景(产品手册、售后政策、FAQ)的智能问答系统。 基于 BGE-M3 + BM25 + BGE-Reranker + Qdrant + DeepSeek,实现文档解析、 语义切分、混合检索、交叉编码精排、答案生成与引用溯源的完整 RAG 链路。

项目结构

rag-knowledge-base/
├── data/
│   ├── raw/            # 原始语料(12 篇:政策 / 产品手册 / FAQ)
│   ├── processed/      # 切分后的 chunks(68 个语义 chunk)
│   └── eval/           # 评估测试集(24 条)+ 实验结果
├── src/
│   ├── ingestion/      # 文档解析(parser)与语义切分(chunker)
│   ├── embedding/      # BGE-M3 向量化
│   ├── vectorstore/    # Qdrant 本地向量库
│   ├── retrieval/      # 检索管线(vector / hybrid / hybrid_rerank 三模式)
│   ├── generation/     # DeepSeek LLM 生成 + Prompt + 查询改写
│   ├── cache/          # Redis 缓存(fakeredis 本地降级)
│   └── api/            # FastAPI 服务 + SSE 流式 + 引用溯源
├── static/             # Web 聊天界面
├── scripts/            # 构建 / 评估 / 测试脚本
└── requirements.txt

检索管线架构

用户查询
  ├─ 查询改写(LLM 消解多轮对话中的代词指代)
  ├─ BGE-M3 向量化 ──→ Qdrant 向量检索(语义召回 top-20)
  └─ jieba 分词 ─────→ BM25 关键词检索(精确召回 top-20)
         │
         ▼
    RRF 倒数排名融合(k=60)
         │
         ▼
    BGE-Reranker-v2-m3 交叉编码精排(top-20 → top-5)
         │
         ▼
    Redis 缓存检查(命中则直接返回)
         │
         ▼
    DeepSeek LLM 流式生成答案 + 引用溯源 [1][2]

快速开始

python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
copy .env.example .env   # 填入 DeepSeek API Key

# 1. 切分文档
python scripts/build_chunks.py

# 2. 构建向量索引(首次下载 BGE-M3 约 2.3GB)
python scripts/build_index.py

# 3. 跑检索评估对比实验
python scripts/eval_retrieval.py

# 4. 启动 Web 服务
python -m uvicorn src.api.app:app --port 8000
# 浏览器打开 http://localhost:8000

API 端点

端点 方法 说明
/ GET Web 聊天界面
/chat POST 非流式问答,返回答案 + 引用来源
/chat/stream POST SSE 流式问答,逐字推送答案
/health GET 健康检查,向量库状态 + 缓存统计
/cache/clear POST 清空缓存
/cache/stats GET 缓存命中率统计

评估结果

24 条评估集(含错误码、产品型号、文档编号等硬核 query),三种检索模式对比:

检索模式 Recall@1 Recall@5 MRR
vector(纯向量) 83.3% 95.8% 0.8819
hybrid(向量+BM25+RRF) 87.5% 100% 0.9132
hybrid_rerank(+Reranker精排) 87.5% 100% 0.9201

纯代码类 query(E01 / X200 / SP-POL-003 / 5ATM / CR2025)Recall@1: 50% → 83% → 100%

RAGAS 生成质量评估(15 条评估集)

指标 含义 分数
faithfulness 答案是否基于上下文(幻觉控制) 0.9288
answer_relevancy 答案是否切题 0.8842
context_precision 检索上下文精确度 0.8381
context_recall 检索上下文召回率 0.9615

Docker 部署

# 1. 准备数据(首次)
python scripts/build_chunks.py
python scripts/build_index.py

# 2. 一键启动(App + Redis 双容器)
docker compose up -d

# 3. 访问 http://localhost:8000
docker compose logs -f rag-app

路线图

  • v0.1 文档解析 + 语义切分 + 向量检索 + LLM 问答
  • v0.2 BM25 混合检索 + RRF 融合 + BGE-Reranker 精排 + 评估对比实验
  • v0.3 FastAPI + SSE 流式输出 + 引用溯源 + Redis 缓存 + 查询改写 + Web 界面
  • v0.4 RAGAS 评估体系 + Docker Compose 部署 + 简历文档

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages