从 0 到 1 搭建大模型 RAG 知识库问答助手:llm-universe 新手实操教程
【免费下载链接】llm-universe本项目是一个面向小白开发者的大模型应用开发教程,在线阅读地址:https://datawhalechina.github.io/llm-universe/项目地址: https://gitcode.com/GitHub_Trending/ll/llm-universe
llm-universe 是一套面向零基础开发者的动手学大模型课程。跟着它走一遍,你会用 LangChain 框架接上大模型 API,用 RAG(检索增强生成,就是回答前先翻资料再作答)技术把私有文档变成问答知识库,最后做出一个可以演示、可以扩展成 AI 智能体的完整应用。整条路线不要求算法背景,会基础 Python 就能跟上。
先看清楚要做什么,再动手,效率最高。下面这张图就是课程规划的整体开发流程:从需求到数据、从索引到部署,每一步都有对应的 notebook 可以照着敲。
先想清楚:你要解决的问题长什么样
从"模型答不上来"到"基于自己的文档作答"
直接用大模型 API 聊天,它只能依赖训练时的公共知识。你的产品手册、公司制度、读书笔记,它一概不知。RAG 解决的就是这个缺口:把文档切块、向量化后存进向量库(可以理解为专门存"语义坐标"的数据库),用户提问时先按语义相似度捞出最相关的几段,再把原文片段塞进提示词,让模型"看着资料回答"。这样答案有据可查,也大幅减少编造。
这套思路在第一章文档里有完整推导,包括为什么选 Chroma 这种轻量向量库、为什么不急着上重型数据库。
课程交付的终点:一个能对话的知识库助手
课程的练手项目是个人知识库助手:丢进几份 PDF 和 Markdown,就能像聊天一样提问,比如"《南瓜书》的作者是谁"。多轮对话、流式输出、网页界面都包含在内。先记住这个画面,后面每一步都在为它服务。
环境准备:三步把工具链跑起来
克隆仓库并安装依赖
全程用 API 服务,本地不需要 GPU。命令如下:
git clone https://gitcode.com/GitHub_Trending/ll/llm-universe conda create -n llm-universe python=3.10 -y conda activate llm-universe cd llm-universe pip install -r requirements.txt依赖清单很短,LangChain 固定为 0.3.0,照着装即可。没有 conda 也可以用 venv,效果一样。
大模型 API 密钥怎么配
课程统一把密钥放进项目根目录的.env文件,代码通过python-dotenv自动读取,避免把密钥写死在代码里。国内的文心、星火、智谱 GLM 和 OpenAI 的调用方式都给了现成封装,选一个有密钥的厂商就能开工。各家申请流程和配置细节在 C2 文档 里有分步截图,跟着点就行。
核心原理一次讲透:RAG 的四个环节
分块、向量化与向量库怎么配
原始文档太长,不能整篇丢给模型,所以要切块。课程默认用 LangChain 的递归字符分割器,参数chunk_size控制块长,chunk_overlap控制相邻块的重叠,防止一句话被拦腰截断。每块文本再交给 Embedding 模型转成一串数字(向量),连同原文一起存进 Chroma。切块参数怎么影响召回,仓库里专门做了对照实验:
分块和向量库的完整搭建代码在 C3 示例 Notebook,从文档加载到入库一个环节不少。
检索结果如何进入提示词
提问进来后,向量库按语义相似度返回 Top-K 片段,这些片段会拼进一段系统提示词,连同用户问题一起发给模型。LangChain 把"检索器 + 提示词模板 + 模型"包装成可拼接的组件,用 LCEL 语法一行管道符就能串成完整链路,这正是它成为主流大模型开发框架的原因:
动手搭建:一条真正能跑的问答链
用 LangChain 组装检索问答链
原理讲完,代码其实很少。加载向量库、取出检索器、绑定模型,问答链就组装好了:
qa_chain = ( RunnablePassthrough().assign(context=combine_docs) | qa_prompt | llm | StrOutputParser() )上面这段来自仓库现成的部署脚本,combine_docs负责把检索片段拼成上下文,qa_prompt规定了"不知道就说不知道"的输出边界。多轮对话里还有一个巧妙设计:先让模型把带历史的新问题压缩成独立问题,再去检索,避免指代不清导致召回跑偏。完整带注释的版本在 C4 示例 Notebook。
用 Streamlit 把应用发布成网页
想让助手有界面,不用写前端。仓库里的streamlit_app.py只做了三件事:初始化问答链、维护session_state里的对话历史、把流式输出逐字渲染到聊天框。运行一条命令就能得到这样的页面:
脚本入口在 notebook/C4 构建 RAG 应用/streamlit_app.py,对照着改提示词、换模型,都是十分钟级别的改动。
部署与调优:回答质量怎么迭代
检索命中率怎么调
答非所问时,先判断是"没检索到"还是"检索到了但没答好",再对症下药:
- 没检索到:调大 Top-K、缩短 chunk_size、检查文档是否被切散,进阶手段(混合检索、查询改写)在 C7 高级 RAG 技巧 里有成体系的实验;
- 检索到了但答不好:改系统提示词,明确"只依据给定材料回答",并压一压
temperature。
建立小样本验证集,用 Bad Case 驱动迭代
大模型应用不需要等数据标注齐了再测试。课程的做法是:先攒十几个真实问题,人工跑一遍打分;把答错的记成 Bad Case 加进验证集,每轮优化后重跑全量,确认老问题没被改坏。验证集慢慢变大后,再引入自动打分。这套"小样本起步、滚动扩充"的节奏在 C5 文档 里讲得很细,评估流程如下图:
学完之后的方向:把助手升级成智能体
Prompt 工程与进阶 RAG 两条路线
助手跑通之后,往上走有两条明确路径。一条是横向变强:学 C2 的 Prompt 技巧,用角色设定、少样本示例把同一个问答链的输出打磨得更稳;另一条是纵向变深:C7 章节覆盖分块策略、向量模型选择与微调,把检索这一环的天花板抬上去。
给助手挂上工具,它就向智能体靠拢
LangChain 的 Tool 机制允许把任意 Python 函数注册成工具,模型会自己决定何时调用。给知识助手加一个"查日历"或"建工单"函数,它就从"被动答题"变成"能办事"的 AI 智能体。C4 文档还配了自定义 LLM 封装的补充讲解,附 LangChain 自定义 LLM 可以对照着读。
下一步行动很明确:把仓库克隆下来,装好依赖,先跑通 C3 的向量库搭建,再进 C4 接上问答链。两三个小时之后,你就有一个真正属于自己、能用自然语言提问的知识库助手了。
【免费下载链接】llm-universe本项目是一个面向小白开发者的大模型应用开发教程,在线阅读地址:https://datawhalechina.github.io/llm-universe/项目地址: https://gitcode.com/GitHub_Trending/ll/llm-universe
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考