LLM Zoomcamp Capstone 项目指南:从零构建端到端 RAG 与 Agent 应用
LLM Zoomcamp Capstone 项目指南从零构建端到端 RAG 与 Agent 应用【免费下载链接】llm-zoomcampLLM Zoomcamp - a free online course about real-life applications of LLMs. In 10 weeks you will learn how to build an AI system that answers questions about your knowledge base. Register here 项目地址: https://gitcode.com/GitHub_Trending/ll/llm-zoomcampLLM ZoomcampDataTalks.Club 出品的免费开源课程在 10 周内覆盖了 Agentic RAG、向量检索、编排、评估、监控与最佳实践等模块而结课项目Capstone Project则是把所有这些知识串成一条完整链路的关键环节。本文以仓库根目录的 project.md 为骨架结合课程大纲与 端到端项目示例健身助手的完整实现为你梳理课程项目从选题、构建、评估到提交评审的全部要求与可落地的技术方案。读完后你将清楚知道项目要交付什么、评分标准逐条是什么、如何组织文档与技术栈、以及一个满足全部要求的项目应该长成什么样。项目目标应用课程所学交付一个端到端应用课程项目的目标非常明确应用课程所学构建一个端到端的 RAGRetrieval-Augmented Generation或 Agent 应用。它不是一次小的练习而是把整门课程的技术点串联起来的综合考验——从数据摄入、知识库构建到检索、Prompt 组装、LLM 调用再到评估、界面、监控与容器化。在课程根目录 README.md 中这个项目被定位为 Capstone毕业设计Watch the video for each moduleComplete the homework to reinforce the conceptsBuild your capstone project applying everything end-to-end按照 README 的描述你最终要交付的东西包括可搜索的知识库选择一个数据集完成摄入、清洗与存储检索管道实现完整的 RAG 流程——检索上下文、组装 Prompt、调用 LLM、返回有依据的答案评估流程用检索指标或 LLM-as-a-Judge 衡量系统检索与回答的质量用户界面提供 Streamlit、FastAPI 等形式的 UI 或 API让其他人可以试用监控与反馈闭环跟踪查询、反馈与性能随时间的变化。问题陈述六项核心交付物project.md 对项目提出了六项明确的要求这是整个项目的验收清单选择数据集或 API 数据源挑选你感兴趣的数据集参考下文数据集一节或者连接提供数据的 API摄入数据到知识库将数据摄入知识库或者连接数据源 API实现应用流程从数据中检索上下文、可选地调用工具function calling、构建 Prompt 并发送给 LLM评估流程性能评估你的 RAG 或 Agent 流程创建应用界面为应用提供可交互的界面收集反馈并监控收集用户反馈并监控应用运行状况。其中第 3 点值得特别注意——课程项目允许你做纯 RAG 应用、Agent 应用或者两者的结合。这意味着你在 模块 1Agentic RAG 中学到的 function calling、Agentic Loop在 模块 6最佳实践 中学到的混合检索hybrid search与重排序reranking都可以成为你项目里的加分武器。不能使用的数据集一个硬性约束DataTalks.Club 各 Zoomcamp 课程的 FAQ 文档课程各模块与作业中使用的知识库不能用于你的项目需要另选语料或数据集见 project.md。项目文档决定项目成败的一环课程对文档的重视程度很高——project.md 开宗明义地写道你的项目成也文档、败也文档Your project rises or falls with its documentation。这是评审者了解你工作的主要途径具体要求包括为没有上过课的人写作不要假设读者看过课程视频要解释清楚问题、数据和流程在 README 中提及评估标准让评审者能快速定位相关部分这直接关系到评分效率适当添加截图例如 UI、监控面板、应用回答示例说明如何运行项目包含环境搭建步骤、依赖、配置与所有环境变量展示项目如何工作给出输入输出示例、常见用例或简短的操作演示可添加短视频预览如果使用 Streamlit可以从应用右上角菜单录制然后拖拽进在线编辑器的 README 中拆分长文档必要时拆成setup.md、usage.md、contributing.md等独立文件保持 README 与项目同步更新。清晰的文档不仅帮助他人也是你未来的宝贵参考资料。在模块 7 的示例项目中团队还进一步给出了 README 的实用建议见 02-evaluating-retrieval.md好的 README 至少应包含项目做什么、用了什么数据集、如何安装依赖uv sync、如何运行应用、如何运行 Jupyter notebook。甚至可以用 ChatGPT 帮忙起草 README 的问题描述部分再人工精简。技术栈选型不必局限于课程覆盖的技术project.md 明确说明你不必把自己限制在课程涵盖的技术范围内可以使用替代方案组件可选技术课程内或替代LLMOpenAI、Ollama、Groq、AWS Bedrock 等知识库任何文本、关系型或向量数据库包括课程中实现的内存版或 SQLite监控Grafana、Kibana、Streamlit、dash 等界面Streamlit、dash、Flask、FastAPI、Django 等UI 或 API 均可摄入管道Kestra、dlt、Mage、Airflow、Prefect、Python 脚本等如果你使用了课程未覆盖的工具需要在文档中说明这个工具是做什么的以及如何使用。如果对某些工具拿不准可以在 Slack 中提问。课程 README 的 Capstone 部分也印证了这一点——它推荐的知识库、检索管道、评估、界面与监控组件与 模块 1 到模块 5 的课程内容一一对应但允许你自由组合。参考实现一个完整的端到端项目长什么样为了让抽象的要求落地课程在 模块 7End-to-End Project Example 中演示了一个完整的参照项目健身助手Fitness Assistant。它虽然不是最新的课程模块但完整展示了课程项目应该包含的全部要素。这个项目的构成见 01-intro.md使用包含肌群、器械和动作说明的健身动作数据集回答关于动作、替换方案和标准姿势的问题包含检索组件、LLM 组件和评估提供 Flask API 接口使用 PostgreSQL Grafana 进行监控用 Docker 容器化。从数据集到 RAG 流程示例项目的数据集是用 LLM 生成的结构化 JSON通过 Pydantic 模型约束输出格式然后构建 minsearch 检索索引。核心的 RAG 流程只有三步检索 → 组装 Prompt → 调用 LLM见 01-intro.mddef rag(query, modelgpt-5.4-mini): search_results search(query) # 1. 从索引中检索 prompt build_prompt(query, search_results) # 2. 组装 Prompt answer llm(prompt, modelmodel) # 3. 调用 LLM return answerPrompt 模板要求 LLM 严格基于检索到的 CONTEXT 作答这正是课程反复强调的有依据的回答grounded answer模式。检索评估与参数调优项目复用了模块 04 的评估方法论见 02-evaluating-retrieval.md生成 Ground Truth用 LLM 为每个文档生成若干问题得到问题 → 相关文档 ID的标注数据计算 Hit Rate 与 MRR衡量检索结果是否命中相关文档以及命中的排名随机搜索调优 boost 参数把 Ground Truth 拆成验证集和测试集在验证集上随机搜索各字段的权重再用测试集验证。param_ranges { exercise_name: (0.0, 3.0), type_of_activity: (0.0, 3.0), # ... 每个检索字段都可以在 0.0 ~ 3.0 之间搜索最优权重 }调优后的结果应明显优于默认检索——这是检索评估评分项2 分评估多种检索方案并采用最优者的实践样板。LLM-as-a-Judge 评估答案检索评估回答的是文档找对没有而 RAG 评估回答的是答案好不好。由于无法为每个问题准备标准答案示例项目采用 LLM-as-a-Judge 方案见 03-evaluating-rag.md让评估 LLM 将生成答案分类为RELEVANT/PARTLY_RELEVANT/NON_RELEVANT并给出解释。典型结果分布大致为RELEVANT 0.85、PARTLY_RELEVANT 0.12、NON_RELEVANT 0.03。这个方案还能用来对比不同 LLM 的成本与效果——例如在同一批问题上分别用便宜模型和贵模型生成答案并评估从而用数据决定更贵的模型值不值。示例中的经验是对大多数问题更便宜的模型通常给出相似的结果。从 Notebook 到 Flask API 与监控项目从 Notebook 起步最终组织为规范的包结构见 04-interface.mdfitness_assistant/ __init__.py rag.py # RAG 流程 检索 LLM ingest.py # 把数据载入检索索引 minsearch.py # 也可以直接用 uv add minsearch 安装 app.py # Flask API db.py # 数据库函数监控阶段加入rag函数在返回答案的同时返回模型、响应时间、token 用量与成本Flask 暴露/questionPOST 端点并生成conversation_id。监控阶段见 05-monitoring.md将 LLM-as-a-Judge 直接集成进rag函数——每次回答都附带相关性判定对话记录与用户反馈feedback表取值为 1 或 -1持久化到 PostgreSQL新增/feedback端点接收用户反馈最后用 Docker Compose 编排postgres、app、grafana三个服务并通过 Grafana 面板可视化 token 用量、响应时间、相关性分布等指标。整个示例项目的 OpenAI API 总花费约为 2 美元数据生成、Ground Truth 生成、RAG 评估、调试各占约 0.5 美元这也说明课程项目并不需要昂贵的算力预算参见 06-summary.md。长文本数据的分块策略如果你的数据不是 FAQ 式的问答对而是文章、转录稿、书籍或幻灯片就需要分块chunking。课程在 etc/chunking.md 与 07-chunking.md 中给出了完整的分块方法论启发式分块固定词数200–500 词、固定时间间隔视频每 2 分钟、固定句数5–10 句、语义边界停顿、说话人切换、结构分段段落、章节标题LLM 智能分块主题建模、语义相似度聚类、层级结构LLM 自动加标题分段、意图驱动分块按可能的问题组织内容多文档场景给每篇文章分配doc_id每个分块分配唯一chunk_id如abc123_1评估时分别按文档级和分块级计算 Hit Rate并用 RAG 评估指标调优分块大小书籍级长文本把每章/每节视为独立文档尝试不同分块策略并用 LLM-as-a-Judge 对比图片与幻灯片用 GPT-4o-mini 等视觉模型描述图片每张图作为独立文档幻灯片则整份 deck 文档单页 slide 分块也可以用 CLIP embedding 直接做图片检索。评估标准逐条对照的评分细则project.md 给出了非常具体的评分细则是项目自我检查的最佳清单。核心维度均为 0/1/2 三档打分维度0 分1 分2 分问题描述未描述问题描述简短或含糊描述清晰读者明白项目解决什么问题检索流程未使用知识库或 LLM未用知识库直接查询 LLM流程中同时使用了知识库和 LLM检索评估未提供检索评估只评估了一种检索方案评估了多种检索方案并采用最优者LLM 评估未评估最终 LLM 输出只评估了一种方案如单一 Prompt评估多种方案并采用最优者界面完全无法交互CLI、脚本或 Jupyter notebookUI如 Streamlit、Web 应用如 Django或 API如 FastAPI摄入管道无摄入半自动摄入如 Jupyter notebook 或 Python 脚本用专门工具自动摄入Kestra、dlt、Airflow、Prefect 等监控无监控收集用户反馈或有监控面板收集用户反馈且有至少 5 个图表的仪表盘容器化未容器化仅主应用有 Dockerfile或仅依赖有 docker-compose全部组件都在 docker-compose 中可复现性无运行说明、数据缺失或访问方式不清说明不完整或说明完整可运行但数据缺失说明清晰、数据集可访问、代码易运行且带全量依赖版本最佳实践加分项1 分/项☐混合搜索结合文本检索与向量检索至少进行对比评估☐文档重排序Document re-ranking☐用户查询重写User query rewriting。这三项在课程 模块 6最佳实践 中有系统讲解——hybrid search 融合关键词与向量检索、reranking 用重排序模型提升精度、查询重写则用于修正用户输入。即便不采用也应至少评估其中一项再决定是否纳入。额外加分项云部署部署到云端2 分额外加分最多再给 3 分由评审者在反馈中说明授予理由用于奖励超出课程范围的内容。同行评审既是义务也是学习机会课程采用同行评审Peer Review机制见 project.md。要拿到项目分数你需要评审3 个同学的项目每完成一个评审可获得3 个额外积分。注意若未完成评审项目不能视为完整见 cohorts/2025/project.md。评审者的操作流程评审者会拿到公开的仓库链接和一个commit-hash用于查看仓库在该提交下的代码状态推荐做法是克隆仓库并在该提交处检出版本git clone 仓库地址 git reset --hard {commit-hash}评审时应逐条对照上文评估标准表格打分并在反馈中写清楚得分的理由。课程强调同行评审是互相学习的好机会——读别人如何组织项目、如何处理数据、如何设计评估往往比自己做一遍收获更大。提交与证书项目有两次提交机会Attempt #1 与 Attempt #2且提交入口通过课程平台courses.datatalks.club进行详见 cohorts/2025/project.md。证书流程的关键提醒证书上的名字取自你注册时填写的Certificate name务必在课程平台更新证书的发放条件是完成最终项目、评审 3 个同学的项目、在期限内提交见根目录 README.md;自定进度学习者self-paced无法获得证书但可以自由构建作品集项目。项目选题数据集与创意来源project.md 提供了丰富的选题方向按数据形态分类DTC 数据Slack 转储book of the week 频道、课程频道、职业问答等、DTC 网站的书目档案、DTC 播客转录稿Wiki 类任何维基子集、任何类似 wiki 的数据源、Notion 笔记文章索引一篇或多篇文章并回答问题转录稿播客转录、YouTube 视频转录可以用youtube-transcript-api程序化获取书籍科幻、虚构或非虚构书籍幻灯片与图片OCR 并索引幻灯片GPT-4o-mini 可以胜任、描述并索引图片LLM 生成数据集如果数据无法公开可以请 LLM 生成一份相似的数据集或者直接构思想要的数据集并生成它。特别提醒见 project.md数据集不一定要是 QA 形式——非结构化语料可以通过分块chunking处理详见 etc/chunking.md。README 中还列举了往届社区项目创意README.md健身与营养助手、教科书/课程笔记学习伴侣、医学 FAQ 助手、代码库问答机器人、新闻摘要与检索工具等。课程给出的标题命名建议也很有参考性DataTalksClub Zoomcamp QA system、Nutrition Facts Chat 这类能一眼看出用途的名字。最佳实践与反作弊构建项目时的两条关键建议project.md为项目创建独立的 GitHub 仓库不要与课程作业混在一起给项目一个有意义的标题。模块 7 的总结还给出了一条被反复验证的推进路径06-summary.md先跑通一个简单的 RAG 流程再逐步叠加评估、监控和容器化没有真实数据就用生成数据对课程项目来说足够README 是别人看到的第一样东西务必打磨把课程的项目评分标准当作检查清单逐项核对。关于诚信课程态度明确project.md任何形式的抄袭都是禁止的包括整体或部分照搬他人 notebook 与项目、复用其他课程/训练营的项目、在第一次尝试通过后用同一项目充当第二次尝试、复用往期课程迭代的项目。违反任一条该项目计 0 分。同时明确复用课程本身的代码片段是允许的。结语LLM Zoomcamp 的课程项目是整门课从学会到做到的桥梁。它的核心要求并不复杂——选一个数据集、建一个知识库、跑通 RAG 或 Agent 流程、评估它、给它一个界面、监控它、容器化它并用一份优秀的 README 把这一切讲清楚。评分细则把每一项都拆成了可验证的 0/1/2 三档这让做好变得有章可循检索和 LLM 评估都要对比多种方案并选出最优监控要做到用户反馈 至少 5 个图表的仪表盘全部组件放进 docker-compose依赖版本齐全保证可复现。以此为清单参考仓库中的 端到端项目示例你完全可以在两周内交付一个既拿得出手、又经得起同行评审的完整 LLM 应用。【免费下载链接】llm-zoomcampLLM Zoomcamp - a free online course about real-life applications of LLMs. In 10 weeks you will learn how to build an AI system that answers questions about your knowledge base. Register here 项目地址: https://gitcode.com/GitHub_Trending/ll/llm-zoomcamp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考