news 2026/10/1 2:36:33

从 0 到 1 搭建大模型 RAG 知识库问答助手:llm-universe 新手实操教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从 0 到 1 搭建大模型 RAG 知识库问答助手:llm-universe 新手实操教程

从 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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 2:36:15

微信聊天记录导出 3 步指南:免费把几年对话完整搬进本地硬盘

微信聊天记录导出 3 步指南:免费把几年对话完整搬进本地硬盘 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we…

作者头像 李华
网站建设 2026/10/1 2:35:57

浏览器网页视频下载指南:猫抓 3 步把 M3U8 分片合并成 mp4

浏览器网页视频下载指南:猫抓 3 步把 M3U8 分片合并成 mp4 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 右键网页视频只看到「复制链…

作者头像 李华
网站建设 2026/10/1 2:35:50

网络安全知识图谱构建指南:从本体设计到实战应用

1. 打破“零散式”学习困局:为什么网络安全需要一张全景地图我入行网络安全这些年,见过太多人把学习这件事做成了一场“救火行动”。今天看到某厂商报了新的漏洞,赶紧去搜一波分析文章;明天刷到某个大佬的渗透测试视频&#xff0c…

作者头像 李华
网站建设 2026/10/1 2:35:06

Git冲突标记<<<<<<< HEAD全解读:从崩溃到从容解决

说实话&#xff0c;第一次在代码文件里看到<<<<<<< HEAD那一排箭头时&#xff0c;我比那些新人程序员好不到哪去——脑子里闪过的第一个念头是&#xff1a;完蛋了&#xff0c;文件被什么东西搞坏了。那是入职第一个月的事&#xff0c;当时的我连git statu…

作者头像 李华
网站建设 2026/10/1 2:34:20

谷歌Lighthouse命令行工具高级参数详解

参数名功能说明示例用法--only-categories仅运行指定类别的审计&#xff0c;可指定多个类别--only-categoriesperformance,accessibility--preset使用预设配置集合&#xff0c;支持"mobile"、"desktop"、"performance"等预设--presetmobile--thr…

作者头像 李华
网站建设 2026/10/1 2:32:41

Excel乱序数据匹配:四套实战方案解决行数不等、重复歧义问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华