Local_Pdf_Chat_RAG
原生Python实现的透明化RAG学习框架,8个独立模块完整展示从文档到答案的全链路
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
原生Python实现的透明化RAG学习框架,8个独立模块完整展示从文档到答案的全链路
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你在处理一份 300 页的设备维修手册,遇到问题时不用逐页翻查,只要问一句 AI 就能从手册中找到最相关的段落给你准确答案。weiwill88/Local_Pdf_Chat_RAG 正是这样一个本地 RAG 系统的完整实现。
当前 RAG(检索增强生成)框架层出不穷,但大多数是黑盒:你上传文档、提问、得到答案,中间的检索逻辑、排序策略、重排序机制全部隐藏在框架内部。当检索结果不理想时,开发者往往束手无策。
这个项目的核心价值在于教学导向的全链路透明实现:8 个独立模块完整覆盖 RAG 流水线的每个环节,代码注释详尽,学习者可以亲眼看到、亲手修改每一个处理步骤。这是专为 RAG 新手设计的学习框架,而非追求工程化的生产级系统。
图1:项目 Web UI 界面,基于 Gradio 构建,支持文档上传、问答和分块可视化
本项目作者韦东东是一位长期从事企业大模型应用落地的工程师,在实践中积累了丰富的 RAG 实战经验。他发现,市面上大多数 RAG 教程要么过于理论化、缺乏可运行代码,要么过度依赖 LangChain 等框架,底层逻辑对学生不透明。
因此他决定从零手写一个完整的 RAG 系统,采用纯原生 Python 实现(仅依赖基础数据科学库),让学习者能够真正理解每一行代码背后的原理。作者还出版了《RAG落地之道》一书,并配套推出视频课程,形成了书+代码+课程的完整学习闭环。项目自发布以来获得近 920 颗 GitHub Stars,171 次 Fork,印证了其在 RAG 学习社区中的实用价值。
项目采用模块化流水线设计,每个核心模块对应 RAG 流程的一个步骤,按顺序学习可以建立完整的系统认知:
| 步骤 | 模块 | 核心技术 | 功能说明 |
|---|---|---|---|
| 1 | document_loader.py | pdfminer.six / python-docx | 多格式文档文本提取(PDF、Word、PPT、TXT等) |
| 2 | text_splitter.py | langchain-text-splitters | 递归字符分割,400字符分块+40字符重叠 |
| 3 | embeddings.py | sentence-transformers | 文本向量化,使用中文语义嵌入模型 |
| 4 | vector_store.py | faiss-cpu | FAISS 索引构建,支持 IVF/PQ 等索引类型 |
| 5 | bm25_index.py | rank_bm25 + jieba | BM25 稀疏检索,中文分词支持 |
| 6 | retriever.py | 混合检索逻辑 | FAISS 语义 + BM25 关键词融合(alpha=0.7) |
| 7 | reranker.py | sentence-transformers CrossEncoder | 交叉编码器重排序,精排 top5 |
| 8 | generator.py | Ollama / SiliconFlow API | Prompt 构建 + LLM 调用生成 |
混合检索策略是本项目的一大亮点:项目同时维护 FAISS 向量索引和 BM25 倒排索引,检索时将两者结果按加权融合(语义权重 70%)合并,再通过交叉编码器重排序。这一设计显著提升了检索的召回率和准确率:FAISS 擅长捕捉语义相似性,BM25 擅长关键词精确匹配,两者互补。
项目对新手极为友好,全程只需三步:
# 1. 创建虚拟环境
python3 -m venv rag_env && source rag_env/bin/activate
# 2. 安装依赖
pip install -r requirements.txt
# 3. 配置并启动
cp example.env .env # 编辑填入 SiliconFlow API Key
python rag_demo.py # 自动打开浏览器 http://127.0.0.1:17995
系统会自动检测可用 LLM 后端:优先使用 SiliconFlow 云端 API(无需 GPU),也可切换到本地 Ollama(需要本地部署)。首次运行自动下载向量化模型(约 80MB)。
项目在 features/ 目录下提供了三个扩展模块:
本项目代表了 RAG 学习类项目的一个趋势:从会用框架到理解原理的转变。随着 LangChain、LlamaIndex 等框架的普及,很多开发者陷入调 API 的困境,底层检索逻辑反而成了黑箱。这个项目通过全链路手写实现,帮助开发者建立对 RAG 本质的理解。
项目已形成较完整的学习生态(代码+书籍+视频+社群),对于真正想入门的 AI 爱好者来说,是一个值得投入时间的起点。
图2:配套视频课程,覆盖 15 个企业大模型落地案例
项目地址:weiwill88/Local_Pdf_Chat_RAG Stars: 919 | Forks: 171 | 语言: Python | 许可证: MIT