weiwill88/Local_Pdf_Chat_RAG

Transparent Python RAG reference with FAISS + BM25 hybrid retrieval, reranking, Gradio UI, and FastAPI.

解决的问题

本项目提供了一个透明、模块化的检索增强生成 (RAG) 管道 Python 实现。它被设计为一个教育工具,供开发者学习、检查并实验文档如何被处理与检索以提供 LLM 上下文,而非作为可用于生产环境的服务。

工作原理

系统通过结构化的管道处理文档:解析、分块以及创建嵌入。接着采用混合检索策略,结合 FAISS 进行密集检索与 BM25 进行基于关键字的检索。在最终上下文被创建并传递给 LLM 进行答案生成之前,可以使用可选的重排序步骤(通过 CrossEncoder 或基于模型的评分)进一步优化结果。

适用对象

想要参考实现以了解 RAG 管道内部工作原理的开发者与学生,以及希望实验不同模型后端的用户。

亮点

  • 混合检索:结合 FAISS 与 BM25 以提升搜索准确度。
  • 模块化设计:核心组件(加载器、分割器、嵌入、检索器、重排序器、生成器)被拆分为可替换的模块。
  • 灵活后端:支持本地 Ollama、SiliconFlow 以及兼容 OpenAI 的 API。
  • 广泛的文档支持:处理 PDF、TXT、Markdown、DOCX、XLS/XLSX 与 PPTX 文件。
  • 双重接口:包含 Gradio 网页 UI 与 FastAPI REST API。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目