{"repo":"weiwill88/Local_Pdf_Chat_RAG","free":true,"listed":false,"github":"https://github.com/weiwill88/Local_Pdf_Chat_RAG","clone":"git clone https://github.com/weiwill88/Local_Pdf_Chat_RAG.git","description":"Transparent Python RAG reference with FAISS + BM25 hybrid retrieval, reranking, Gradio UI, and FastAPI.","language":"Python","stars":946,"topics":["bm25","chinese-nlp","deepseek","document-qa","faiss","gradio","rag","retrieval-augmented-generation","fastapi","hybrid-search"],"license":"MIT","category":"ai-agents","readme_excerpt":"Local PDF Chat RAG 一个透明、可运行的 Python RAG 学习与参考实现 English 简体中文 Local PDF Chat RAG 面向希望理解检索增强生成完整链路的开发者。项目把文档解析、文本分块、向量化、FAISS、BM25、混合检索、重排序和回答生成拆成可以单独阅读、测试和替换的模块，并提供 Gradio 界面和 FastAPI 接口。 本仓库是教学与实验用途的参考实现，不是开箱即用的生产级知识库服务。用于真实业务前，请补充身份鉴权、租户隔离、持久化、评测、安全审计和部署治理。 项目特点 - 链路透明 ：核心步骤按 RAG 执行顺序拆分，便于学习和调试。 - 混合检索 ：结合 FAISS 向量检索和 BM25 关键词检索。 - 可选重排序 ：支持 CrossEncoder 或基于模型的相关性评分。 - 多模型后端 ：支持本地 Ollama、SiliconFlow 以及 OpenAI-compatible API。 - 多种文档格式 ：支持 PDF、TXT、Markdown、DOCX、XLS/XLSX 和 PPTX。 - 双入口 ：提供 Gradio Web UI 和 FastAPI REST API。 - 可验证维护 ：包含自动化测试、GitHub Actions CI、贡献指南和安全报告流程。 RAG 流程 快速开始 1. 创建环境 2. 配置一个模型后端 编辑 .env ，至少完成下面一种配置： - 设置 SILICONFLOW API KEY ； - 设置 MAGICK API KEY 、服务地址和模型名称； - 本地启动 Ollama，并拉取 .env 中配置的模型。 密钥只保存在本地 .env 中。请勿提交真实密钥；示例配置中的 Your ... 占位符不会被识别为有效密钥。 3. 启动 Web UI 应用默认尝试 http://127.0.0.1:17995 ，端口被占用时会依次尝试 17996–17999。 4. 启动 REST API 主要接口： - GET /api/status ：运行状态与后端配置状态； - POST /api/upload ：上传并处理文档； - POST /api/ask ：基于已处理文档提问。 项目结构 测试 当前测试覆盖： - 配置和默认后端选择； - TXT、Markdown 和不支持格式的文档加载行为； - BM25 与混合检索合并； - 未配置 API Key 时不发起外部请求并返回明确错误。 所有 Pull Request 都会通过 GitHub Actions 执行源码编译和测试。 配置说明 完整示例见 example.env 。常用变量包括： 变量 作用 --- --- SILICONFLOW API KEY SiliconFlow API 密钥 SILICONFLOW MODEL NAME SiliconFlow 模型 ID MAGICK API KEY OpenAI-compatible 服务密钥 MAGICK API URL 服务 base URL 或完整 Chat Completions URL MAGICK MODEL NAME 服务端模型 ID OLLAMA MODEL NAME 本地 Ollama 模型名称 SERPAPI KEY 可选联网搜索密钥 RERANK METHOD cross encoder 或 llm 已知边界 - PDF 采用文本层提取，不包含通用 OCR；扫描件需要先做 OCR。 - Excel 与 PPT 的解析以文本提取","default_branch":null,"files":null,"tree":[],"storefront":"/r/weiwill88","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/weiwill88/Local_Pdf_Chat_RAG/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}