logo
58
4
Login
docs: 修复 README.md 中未完成的 Docker Compose 说明部分

RAG 知识库应用项目

📋 项目背景

在前面的课程中,我们已经:

  • ✅ 学习了 RAG 的基础理论和技术背景
  • ✅ 从 0 到 1 动手实现了一个 RAG 知识库

而本项目阶段的目标是:将 RAG 知识库与 LangGraph 结合,应用到真实场景中

我们将直接调用 CNB 知识库 API(基于 CNB 知识库,只需上传 markdown 到指定 Git 仓库,即可自动构建知识库并提供 API 接口)

本项目还将使用 LangGraph 作为核心工作流引擎:

  • LangGraph:用于构建复杂的 AI 工作流和状态管理
  • 优势:支持多步骤推理、条件分支、循环处理等复杂逻辑
  • 应用:非常适合实现 RAG 检索、多轮对话、深度研究等场景

🎯 项目任务

你将得到什么

我会提供一个基础 Demo,包含:

  • ✅ 前端:基础的 Chat 对话 UI 界面(React)
  • ✅ 后端:Python + LangGraph 工作流
  • ✅ 集成:CNB 知识库 API 调用示例
  • ✅ 功能:简单的一问一答对话

你需要做什么

在 Demo 基础上,选择以下场景之一(或多个)进行开发:


🚀 应用场景选择

难度表示,⭐ 越多表示难度越大。

场景 1:基于当前的 Demo 仓库增强对话功能 ⭐⭐

要求: 在 Demo 基础上增强对话功能

核心功能:

  • 支持前端切换知识库(也就是不同的 Git 仓库 ,如 cnb/docs , 或者是你自己的仓库),可以先查阅 CNB 知识库 API 文档 了解如何使用 API 获取知识库列表和内容。
    • 建议可以简单搞成一个输入框可以输入不同的仓库名字即可。
  • 引用来源角标展示,点击角标可以跳转到对应的文档页面 (CNB知识库接口支持返回元数据metadata包含文档标题、path、url 等)
引用.png

场景 2:基于知识库的 DeepResearch 网页对话 ⭐⭐⭐

要求: 在 Demo 基础上实现深度研究功能

核心功能:

  • 多轮检索和推理(不是简单的一问一答)
  • 结构化输出研究报告
  • 实时流式输出
  • 支持显示当前步骤(可选,加分项,例如: Searching 等)
  • 支持不同的模型做不同事情,例如 query 生成使用一个模型,Reflection 使用一个模型,最终 Answer 使用一个模型 (可选,加分项)
  • 引用来源和溯源能力 (可选,加分项)

与普通对话的区别:

  • 普通对话:问一次 → 检索一次 → 回答
  • DeepResearch:问一次 → 拆解问题 → 多次检索 → 整合信息 → 生成报告
Deep Research

资料:


场景 3:企业微信 Bot / 客服号 ⭐⭐⭐⭐

要求: 接入企业微信,实现自动问答机器人

核心功能:

  • 接入企业微信 API
  • 处理用户消息回调
  • 保持多轮对话的上下文
  • 支持文本、图片等多种消息类型

场景 4:VuePress 等文档站点的插件 ⭐⭐⭐⭐

要求: 将 CNB 知识库嵌入到文档站点中(如 VuePress 等)

核心功能:

  • 使用 CNB 知识库插件,扫描当前使用 VuePress 仓库搭建的文档站点,自动构建知识库
  • 在 VuePress 文档页面中添加问答组件
  • VuePress 插件请求业务后台(需要开发)进行 Chat,业务后台调用 CNB 知识库 API 进行问答, P.S. LLM 可使用本地 ollama

场景 5:语音对话知识库 ⭐⭐⭐⭐⭐

要求: 实现语音交互的知识库问答

核心功能:

  • 可以使用语音对话方式与知识库进行问答

技术方案参考:

  • 简单方案:Whisper (STT) + 本地 ollama LLM + TTS
  • 高级方案:集成 VITA 等多模态模型

场景 6:其他创新应用 ⭐⭐⭐ ~ ⭐⭐⭐⭐⭐

自由发挥,但需要包含知识库检索能力,并且具有创新性,例如:

  • 智能音箱
  • 小程序
  • 移动端 App
  • VSCode 插件(在 IDE 中直接问答)
  • ...(其他你能想到的场景)

🛠 技术栈

必须使用

  • 前端: Next.js
  • 后端: Python + LangGraph
  • 知识库: CNB API(只需调用 query 接口)
  • LLM: 本地 ollama(或远程 API)
  • 开发环境:
    • CNB 云原生开发环境 (一键启动模型、开发环境等)
    • Docker Compose

技术说明

LangGraph 的作用:

  • 编排复杂的工作流(检索 → 判断 → 再检索 → 整合)
  • 管理对话状态和上下文
  • 实现条件分支和循环逻辑

CNB 知识库 API:

  • 你只需在指定 Git 仓库上传 markdown 文档
  • CNB 自动构建知识库并提供 API
  • 调用 API 的 query 接口即可检索知识

CNB 云原生环境 - 一键启动开发

  • 打开浏览器即可开发,无需本地配置
  • 前后端项目、大模型服务,一键启动
  • 配合 GPU 资源,可以直接使用 Ollama 运行开源大模型

🎁 加分项(可选)

如果你想获得更高分数,可以实现:

  • 多知识库切换:支持在多个知识库之间切换查询
  • 对话历史管理:保存和查看历史对话记录
  • 用户认证系统:登录、权限管理

📦 交付要求

1. 代码

  • 完整的项目代码(基于 Demo 扩展)
  • 代码规范,有必要的注释

2. 启动方式

  • docker-compose.yml 配置文件
  • 一键启动脚本
  • 启动文档说明

3. 文档

  • README.md:快速开始指南
  • 架构设计说明
  • API 使用文档
  • 功能演示说明(配截图或视频)

4. 演示


📚 你会得到的资源

  1. Demo 源码仓库(包含前后端基础代码)
  2. CNB 知识库 API 文档和调用示例
  3. LangGraph 使用示例和最佳实践
  4. 常见问题解答

⏰ 建议时间安排(4 周)

  • Week 1:熟悉 Demo,理解 LangGraph 工作流,确定场景选择
  • Week 2-3:核心功能开发
  • Week 4:优化用户体验,完善细节

💡 常见问题

Q: 我必须做 DeepResearch 吗?
A: 不是。5 个场景任选其一即可

Q: 可以同时做多个场景吗?
A: 可以!建议先完成一个场景,再扩展其他场景。

Q: LangGraph 是什么?为什么要用它?
A: LangGraph 是用于构建复杂 AI 工作流的框架,它可以帮你编排多步骤的推理和检索流程。是当前最流行的 AI 工作流框架之一。

Q: CNB 知识库怎么用?
A: 你会得到一个 Git 仓库地址,上传 markdown 文件后,系统自动构建知识库。然后调用提供的 API 接口即可查询。 链接更多👉

Q: 必须用本地 ollama 吗?
A: 建议使用本地 ollama,因为 CNB 云原生开发环境带 GPU 资源,可以快速启动模型。

Q: Docker Compose 不熟悉怎么办?
A: Demo 会提供完整的 docker-compose.yml 配置,你只需要按需修改即可。


🎓 学习目标

完成本项目后,你将掌握:

✅ 真实企业级项目中 RAG 的应用方式
✅ LangGraph 工作流编排能力
✅ 前后端分离架构设计
✅ API 集成和调用最佳实践
✅ 云原生应用开发 ✅ 复杂 AI 应用的产品化思维


🚀 开始你的项目吧!

先让它跑起来,再让它跑得好!

如有任何问题,随时在训练营群里提问。祝你项目顺利!🎉

📚 参考资料


Docker compose 快速体验 (适合在云原生开发快速体验)

1. 前置要求

  • 需要注册 LangSmith 账号,并获取 API Key,打开 https://smith.langchain.com ,点击 API Keys -> API Key 生成 API Key
  • 需要在环境变量增加 LANGSMITH_API_KEY (注意是 export 到 环境变量上)
export LANGSMITH_API_KEY=your_api_key

2. 启动 Docker Compose

docker compose up

3. 在远程开发端口转发中,添加 8123 端口,并且访问即可, 例如:

在远程开发端口转发中,添加 8123 端口,并且访问即可
# 如果是远程开发, 注意 XXX 是转发后会在端口 Tab 中展示 https://xxx-8123.cnb.run/app/ # 如果是本地 http://localhost:8123/app/

本地开发 (适合开发)

fork 后点击云原生开发,然后选择本地 VSCode 等编辑器打开。

1. 前置要求

  • Node.js 和 npm(或 yarn/pnpm)
  • Python 3.11+
  • CNB_TOKEN:后端 agent 需要 CNB TOKEN。
    • 进入 backend/ 目录
    • 通过复制 backend/.env.example 文件创建一个名为 .env 的文件
    • 打开 .env 文件并添加你的 CNB TOKEN:CNB_TOKEN="YOUR_CNB_TOKEN"

2. 安装依赖

后端:

cd backend pip install .

前端:

cd frontend npm install

3. 运行开发服务器

后端和前端:

make dev

这将运行后端和前端开发服务器。打开浏览器并导航到前端开发服务器 URL(例如,http://localhost:5173/app)。

或者,你可以分别运行后端和前端开发服务器:

  • 后端:在 backend/ 目录中打开一个终端并运行 langgraph dev。后端 API 将在 http://127.0.0.1:2024 可用。它还会打开一个浏览器窗口到 LangGraph UI。
  • 前端:在 frontend/ 目录中打开一个终端并运行 npm run dev。前端将在 http://localhost:5173 可用。

Demo 代码运作方式说明

基本上和 CNB 知识库 一致,前端收到用户的 Query 后,会调用后端 API 进行查询,后端 API 会调用 CNB 知识库 API 进行查询,然后交给 LLM 结合 Prompt 生成答案。