
手把手完整搭建一个 RAG 知识库助手从文档到问答界面【免费下载链接】llm-universe本项目是一个面向小白开发者的大模型应用开发教程在线阅读地址https://datawhalechina.github.io/llm-universe/项目地址: https://gitcode.com/GitHub_Trending/ll/llm-universe你有没有这样的经历资料存了一大堆可真正要用时却翻不到重点llm-universe 是一个面向零基础开发者的动手教程项目它带你用 LangChain 加向量数据库搭出 RAG 知识库助手让自己的文档直接变成可以提问的对象。一、它解决什么问题大模型很会说话但它不知道你公司、你自己文档里写了什么。直接提问它可能一本正经地编答案。RAG检索增强生成的思路很直白先从你的知识库里搜出相关片段再把这些片段塞给大模型让它基于证据回答。搜不到就说不知道幻觉问题能压下去不少。和零散教程比这个项目的差别在于三点不做理论堆砌。全部内容围绕个人知识库助手这一个项目推进你跟着做就有产出。API 统一封装。OpenAI、百度文心、讯飞星火、智谱 GLM 都按同一套方式接入换模型只改初始化代码。不挑硬件。全程调用云端 API本地一台普通电脑就能学完不需要 GPU。适合谁会基本 Python 语法、想做出一个能用知识库问答的完整 Demo 的开发者。二、最快上手路径 整个环境准备只需四步全程不超过十分钟git clone https://gitcode.com/GitHub_Trending/ll/llm-universe conda create -n llm-agent python3.10 conda activate llm-agent cd llm-universe pip install -r requirements.txt然后在项目根目录建一个 .env 文件把你申请的模型密钥写进去比如 ZHIPUAI_API_KEY 或 OPENAI_API_KEY。这张图是整个项目的路线图文档从左边进来经加载、切分、向量化后存入向量库你的问题同样被向量化按相似度取回相关片段拼进提示词最后由大模型给出回答。仓库里的 notebook 目录按章节排好了代码从 notebook/C2 使用 LLM API 开发应用/C2.ipynb 开始跑先让模型开口说话再依次进入知识库和问答链的环节。三、核心能力逐个拆开看1. 知识库搭建把文档变成可检索的向量库是什么把 PDF、Markdown 等文档读进来切成小段再逐段转成向量存进 Chroma 这类轻量向量数据库。为什么要切模型一次塞不进整本书切片让每段内容都能被单独命中。怎么用跟 notebook/C3 搭建知识库/C3.ipynb 走一遍即可。切片参数 chunk_size 和 chunk_overlap 控制每段长度和相邻段的重叠量重叠部分能避免把一句话拦腰截断。适合谁手里有文档资产、想先建起检索底座的每个人。仓库里 data_base/ 目录放的就是教程使用的示例文档和建好的向量库。2. 检索与生成RAG 的两段式流水线是什么前半段用向量相似度找回候选片段后半段把片段拼进提示词模板交给大模型。LangChain 的 LCEL 语法用竖线把组件串起来一条链就是检索器 | 提示词 | 模型 | 输出解析器。怎么用在 docs/C4/C4.md 对应章节里从加载向量库、写检索链到组装问答链每一步都有可直接运行的代码。适合谁想把会检索升级成会答得准的应用开发者。系统提示词里加一句不知道就说不知道能有效约束模型胡编。3. 评估与迭代错误是找出来的不是猜出来的是什么先人工过几个样本记下答错的 Bad Case针对性改提示词或调检索参数再把答错的样本攒成验证集最后做自动评估。改一处验证集要整体回归防止按下葫芦浮起瓢。怎么用notebook/C5 系统评估与优化/C5.ipynb 给了量化打分和用大模型当评审的两种做法。适合谁Demo 跑通后想让它真正可靠的团队。很多应用停在人工看过几例没问题就上线了这一章就是补上工程化的最后一块。四、一个场景从头走到尾拿仓库里的真实演示走一遍你先问西瓜书是什么它答对了。紧接着问南瓜书跟它有什么关系——注意这个它单独拿去检索根本搜不到东西。完整链路是这样运转的输入新问题加上一段聊天记录一起进链。处理RunnableBranch 判断有没有历史有就先让大模型把它补全成周志华老师的《机器学习》再拿补全后的问题查向量库取回南瓜书前言等片段连同历史一起填入提示词。输出模型基于检索到的原文回答两者关系答得又快又稳。result qa_history_chain.invoke({ input: 南瓜书跟它有什么关系, chat_history: [ (human, 西瓜书是什么), (ai, 西瓜书是指周志华老师的《机器学习》一书。), ], }) print(result[answer])想在浏览器里看到效果在项目根目录执行 streamlit run notebook/C4 构建 RAG 应用/streamlit_app.py聊天界面就出来了。界面逻辑和问答链都在 notebook/C4 构建 RAG 应用/streamlit_app.py 里不到两百行值得逐段读完。五、容易踩的坑坑 1加载 Chroma 时刷一大片黄色警告现象LangChainDeprecationWarning提示 Chroma 类将在 1.0 移除。 原因你从旧的 langchain 主包导入官方已把它拆到独立包。 解法pip install -U langchain-chroma然后改用 from langchain_chroma import Chroma。坑 2调百度文心报 IamSignatureInvalid 加 403现象请求直接失败日志里写找不到凭证。 原因QIANFAN_AK、QIANFAN_SK 没写进 .env或者 AK 对应了错误的 SK。 解法核对 .env 里两个密钥是否成对有效改完重启进程再试。坑 3多轮对话第二句开始失忆现象用户说介绍一下它检索结果风马牛不相及。 原因带指代词的问题语义不全直接拿去查向量库必然偏。 解法检索前先做一次问题压缩让大模型结合历史把指代补全教程里用 RunnableBranch 的两个分支实现得很干净。坑 4模型答得自信但答案是编的现象问内部文档问题模型给出流畅但错误的回答。 原因没接检索纯靠模型记忆硬答。 解法务必走 RAG 链路并在系统提示词里明确要求不知道就说不知道。坑 5换 Embedding 后检索质量骤降现象同一批文档向量库像被洗了脑命中全乱。 原因Chroma 要求建库和查库必须用同一个 Embedding 模型向量空间对不上。 解法加载时固定使用建库时的同款 Embedding切换模型就重建向量库。六、资料与进阶入门总览docs/C1/C1.md先花半小时把概念理顺知识库代码notebook/C3 搭建知识库/问答链代码notebook/C4 构建 RAG 应用/C4.ipynb进阶技巧notebook/C7 高级 RAG 技巧/涵盖多类型文档处理、分块优化、向量模型选择与微调完整案例解析docs/C6/案例1个人知识库助手.md跑通第一个 Demo 后把知识库里的示例文档换成你自己的材料你就有了一个真正属于你的知识库助手。建议今天就把 .env 配好先让流式问答在浏览器里转起来。【免费下载链接】llm-universe本项目是一个面向小白开发者的大模型应用开发教程在线阅读地址https://datawhalechina.github.io/llm-universe/项目地址: https://gitcode.com/GitHub_Trending/ll/llm-universe创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考