weiwill88/Local_Pdf_Chat_RAG

🧠 纯原生 Python 实现的 RAG 框架 | FAISS + BM25 混合检索 | 支持 Ollama / SiliconFlow | 适合新手入门学习

它解决了什么问题

此项目提供一个本地化的智能问答系统,旨在帮助开发者了解并实现 Retrieval‑Augmented Generation(RAG)。它通过透明、模块化的流水线,解决“黑盒”RAG 实现的问题,让用户能够与本地文档聊天,同时支持多种 LLM 后端。

工作原理

系统遵循结构化的 RAG 流程:

  1. 文档处理:从多种格式(.pdf、.txt、.docx、.md、.html、.csv、.xls、.xlsx)提取文本,切分为块,并转换为向量。
  2. 混合检索:结合 FAISS 语义搜索与 BM25 关键词搜索,以提升召回率和准确性。
  3. 重新排序:使用 CrossEncoder 或 LLM 对检索结果进行精炼。
  4. 生成:将检索到的上下文构造成提示词,发送给已配置的 LLM(Ollama、SiliconFlow 或 Magick API)生成最终答案。
  5. 可选增强功能:可以集成 SerpAPI 进行实时网页搜索,并支持通过 DeepSeek‑R1 的 Chain‑of‑Thought 处理。

目标用户

主要面向开发者和 RAG 初学者,提供一个动手学习平台,用于实践文档加载、向量化、混合检索和 LLM 集成。

亮点

  • 混合搜索策略:同时集成 FAISS(语义)和 BM25(关键词)检索。
  • 灵活的 LLM 后端:支持通过 Ollama 本地推理,以及 SiliconFlow、Magick API 等云端 API,具自动后端检测功能。
  • 高级 RAG 技术:实现通过 CrossEncoder 的结果重新排序和递归检索。
  • 交互式 UI:提供基于 Gradio 的网页界面,包含文档块的可视化。