Skip to content

orihnec/multiformat-rag-system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Multi-format RAG System

Multi-format RAG System 是一个支持多格式文档接入的知识库问答系统,覆盖文档解析、向量化、parent-child chunking、LanceDB 持久化、混合检索、引用溯源、FastAPI 服务和 Streamlit 前端。

Features

  • 多格式解析:PDF、Word、TXT/Markdown、HTML、Excel/CSV、图片 OCR。
  • Embedding:基于 BGE-M3 和 SentenceTransformers,支持 GPU、batch encoding 和向量归一化。
  • Chunking:支持 parent-child chunking,召回小片段后回填父片段上下文。
  • Vector Store:基于 LanceDB 本地持久化,支持新增、删除、来源管理和向量检索。
  • Hybrid Search:融合向量检索与全文检索,提升技术文档和长文档召回质量。
  • LLM Provider:支持 OpenAI、Azure OpenAI、DeepSeek、智谱、通义千问、Moonshot、SiliconFlow、Ollama 和自定义 OpenAI-compatible API。
  • API/UI:提供 FastAPI 接口和 Streamlit 交互页面,支持文档上传、流式问答和引用来源返回。

Project Structure

.
├── api/                  # FastAPI 服务
├── config/               # 环境变量和配置
├── core/
│   ├── loaders/          # 多格式文档加载
│   ├── embedder.py       # BGE-M3 向量化
│   ├── splitter.py       # parent-child chunking
│   ├── vector_store.py   # LanceDB 封装
│   └── rag_chain.py      # RAG 主链路
├── ui/                   # Streamlit 前端
├── .env.example
├── main.py
└── requirements.txt

Quick Start

python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
copy .env.example .env

编辑 .env,填入模型服务和 embedding 配置:

LLM_PROVIDER=openai
LLM_API_KEY=sk-your-api-key
LLM_BASE_URL=https://api.openai.com/v1
LLM_MODEL=gpt-4.1
EMBEDDING_MODEL=BAAI/bge-m3
LANCE_DB_PATH=./data/lancedb

查看配置:

python main.py

启动 API:

uvicorn api.main:app --reload --host 0.0.0.0 --port 8000

启动 UI:

streamlit run ui/app.py

API

  • GET /health: 服务状态
  • POST /upload: 上传文档并写入知识库
  • POST /chat: 知识库问答
  • POST /chat/stream: 流式问答
  • GET /docs: 文档来源列表
  • DELETE /docs: 删除文档
  • GET /providers: 支持的 LLM Provider
  • GET /config: 当前配置

Notes

仓库不包含本地知识库数据、OCR 中间文件、向量库和 API Key。运行后生成的数据默认位于 data/,已通过 .gitignore 排除。

Resume Highlights

  • 构建完整 RAG 工程链路:多格式解析、BGE-M3 向量化、LanceDB 持久化、混合检索、引用溯源。
  • 设计 parent-child chunking,提升长文档问答的上下文完整性。
  • 封装 FastAPI 与 Streamlit,实现文档上传、知识库管理、流式问答和多模型 Provider 切换。

About

Multi-format RAG knowledge base with BGE-M3, LanceDB, hybrid search, FastAPI and Streamlit.

Topics

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages