LangChain实战:新手手撸RAG全记录(一)
1.1 为什么做这个项目
学习大模型应用开发时,我遇到了几个头痛的问题:
第一次动手,代码越写越乱。代码文件膨胀到1000多行,找一个函数要滚动半天。更迷茫的是,项目到底该由哪些文件构成?每个文件负责什么?要留出怎样的接口?
折腾了小半月,终于搞出来一套比较完整的方案,想着既然踩了这么多坑,不如整理出来分享给大家。这个项目就是一个端到端的RAG(检索增强生成)系统,可以帮助大模型依据知识库更好的回答用户问题,从原始文档到智能问答,把整个流程都串起来了
1.2 系统架构设计
整个项目我分了五个模块,各司其职:
-
llms.py:模型统一管理,封装大语言模型和嵌入模型的调用接口
-
data_preprocess.py:数据预处理,负责从各种格式的文档中读取、清洗、切分、提取数值,最终存为JSON格式
-
vector_store.py:向量数据库管理,把处理好的文本转成向量存到Chroma里,提供检索功能
-
qa_chain.py:问答流程实现,包括问题处理、提示词模板、答案生成这些核心逻辑
-
main.py:应用集成,把前面四个模块串起来,加个命令行界面,让用户可以直接用
-
main依赖llms和qa_chain,qa_chain依赖vector_store,vector_store又依赖llms,各个文件形成一个清晰的调用链
1.3 技术选型
-
LLM:DeepSeek —— 便宜好用,上下文够长,通过LangChain统一接口调用
-
向量库:Chroma —— 轻量级,持久化方便,适合本地部署
-
嵌入模型:BGE-large-zh-v1.5 —— 中文效果好,完全本地运行,不用调API
-
文档处理:pdfplumber + python-docx + pandas —— 各种类型文档通吃
-
框架:LangChain —— 应用广泛,生态完善
-
环境管理:python-dotenv —— 配置和密钥分离,安全又方便
1.4 核心流程
原始文档→数据预处理→向量化存储→用户提问→检索相关文档→LLM生成答案→返回结果
这个流程看着简单,真的做起来也有不少坑要踩,这一章先交代项目的总体结构,接下来的章节,我会深入到每个代码文件,展开讲讲具体实现。
更多推荐




所有评论(0)