Claude Code 提示词:RAG 智能问答系统(入门级)
使用方式:在 Claude Code 终端中,将下方提示词整段复制粘贴给 Claude,它会从零开始帮你搭建完整项目。
技术栈:Vue 3 + FastAPI + LangChain + Milvus Lite + OpenAI
提示词正文(复制以下全部内容)
请帮我从零创建一个 RAG(检索增强生成)智能文档问答系统的完整项目。
这是一个入门级教学项目,请确保代码简洁、注释充分、结构清晰。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
一、项目目录结构
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
请严格按照以下结构创建所有文件:
rag-knowledge-base/
├── backend/
│ ├── main.py # FastAPI 主入口
│ ├── rag_engine.py # RAG 核心引擎(LangChain + Milvus)
│ ├── config.py # 配置管理(API Key、模型、Milvus 连接)
│ ├── requirements.txt # Python 依赖
│ ├── .env.example # 环境变量模板
│ └── docs/ # 存放待检索的知识库文档
│ └── sample.md # 示例文档(关于 RAG 的基础知识介绍)
│
├── frontend/
│ ├── index.html # Vue 3 单文件应用(CDN 模式,无需 npm)
│ └── style.css # 科技风格样式
│
├── README.md # 项目说明文档
└── start.bat # Windows 一键启动脚本
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
二、后端要求(FastAPI + LangChain + Milvus)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【main.py — FastAPI 主入口】
- 使用 FastAPI 框架,配置 CORS 允许前端跨域
- 提供以下 3 个 API 端点:
1. POST /api/upload
- 接收前端上传的 .txt 或 .md 文件
- 调用 rag_engine 进行文档切分 → 向量化 → 存入 Milvus
- 返回:{ "status": "success", "chunks": 切片数量, "filename": 文件名 }
2. POST /api/chat
- 接收 JSON:{ "question": "用户的问题" }
- 调用 rag_engine 检索相关文档片段 + LLM 生成回答
- 返回:{
"answer": "LLM 生成的回答",
"sources": [
{ "content": "相关片段内容", "score": 相似度分数 }
]
}
3. GET /api/status
- 返回系统状态:向量库中的文档数量、是否就绪
- 启动时自动加载 docs/ 目录下的所有 .txt 文件作为默认知识库
- 添加 lifespan 事件:启动时初始化 Milvus 连接和默认文档
【rag_engine.py — RAG 核心引擎】
- 使用 LangChain 框架构建 RAG 管道
- 文档加载:使用 LangChain 的 TextLoader
- 文本切分:使用 RecursiveCharacterTextSplitter
- chunk_size=500, chunk_overlap=50
- Embedding 模型:使用 OpenAI 的 text-embedding-3-small
- 向量数据库:使用 Milvus Lite(本地文件模式)
- URI 设为 "./milvus_rag.db"(无需安装 Docker)
- 使用 langchain_milvus 的 Milvus 类
- LLM:使用 OpenAI 的 gpt-4o-mini 模型
- RAG 链:使用 LCEL(LangChain Expression Language)构建
- Prompt 模板要求 LLM 只基于检索到的上下文回答
- 如果上下文中没有相关信息,要诚实回答"我不确定"
- 提供以下方法:
- add_documents(file_path): 加载文档并存入向量库
- query(question): 执行 RAG 检索 + 生成,返回答案和来源
- get_doc_count(): 返回向量库中的文档数量
【config.py — 配置管理】
- 使用 pydantic-settings 从 .env 文件读取配置
- 配置项:OPENAI_API_KEY、OPENAI_BASE_URL(可选,用于代理)、
MILVUS_URI、CHUNK_SIZE、CHUNK_OVERLAP、LLM_MODEL
【requirements.txt】
- 包含所有依赖及版本:
fastapi, uvicorn, python-dotenv, pydantic-settings,
langchain, langchain-core, langchain-community,
langchain-openai, langchain-text-splitters,
langchain-milvus, milvus-lite,
python-multipart(文件上传用)
【docs/sample.txt — 示例知识库文档】
- 写一篇 800 字左右的中文文档,主题是"RAG 技术入门指南"
- 内容涵盖:什么是 RAG、RAG 的工作流程(文档切分→向量化→检索→生成)、
RAG 的优势(减少幻觉、知识可更新)、常见应用场景
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
三、前端要求(Vue 3 + 科技风格)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【技术方案】
- 使用 Vue 3 的 CDN 模式(直接在 HTML 中引入 vue.global.js)
- 不需要 npm、不需要 Node.js、不需要构建工具
- 所有逻辑写在一个 index.html 文件中
- 样式单独放在 style.css 中
【科技风格 UI 设计要求】
- 整体色调:深色主题(#0a0e1a 深蓝黑底色)
- 主色调:青蓝色(#00d4ff)和紫色(#7c3aed)渐变
- 背景效果:
- 用纯 CSS 实现一个动态科技感粒子网格背景
- 使用 CSS @keyframes 动画让背景有缓慢流动/闪烁的效果
- 可以用伪元素 + radial-gradient 模拟光晕效果
- 卡片样式:半透明毛玻璃效果(backdrop-filter: blur)
- 边框用 1px 的青蓝色细线,带微弱发光(box-shadow glow)
- 按钮:渐变色背景,hover 时有发光脉冲动画
- 输入框:深色背景 + 青蓝色聚焦边框
- 文字:白色主文字 + 灰色辅助文字
- 字体:使用等宽字体(如 'JetBrains Mono' 或 monospace)作为标题字体,
正文用系统默认 sans-serif
- 滚动条:自定义为细窄的青蓝色风格
【页面布局】
整个页面分为三个主要区域:
1. 顶部导航栏
- 左侧:项目 Logo(用 SVG 或 Unicode 符号 ⚡ 代替)+ 项目名"RAG Knowledge Base"
- 右侧:系统状态指示灯(绿色 = 就绪 / 红色 = 未连接)+ 文档数量
2. 左侧面板(文档管理 - 占 30% 宽度)
- 文件上传区域:拖拽上传或点击选择 .txt/.md 文件
- 上传进度条(用 CSS 动画模拟科技感进度效果)
- 已上传文档列表(显示文件名 + 切片数量)
3. 右侧主区域(对话区 - 占 70% 宽度)
- 顶部:大标题 "Ask Your Knowledge Base"
- 中间:聊天记录区域(消息气泡样式)
- 用户消息:右对齐,紫色渐变背景
- AI 回答:左对齐,深灰色背景,带引用来源折叠面板
- AI 回答底部可展开"参考来源",显示检索到的文档片段和相似度分数
- 底部:输入框 + 发送按钮(固定在底部)
- 输入框支持 Enter 发送、Shift+Enter 换行
- 发送按钮在请求中时显示加载动画(旋转的科技感圆环)
【交互细节】
- 页面加载时自动调用 /api/status 检查后端状态
- 上传文件后显示成功提示(带科技感的 toast 通知)
- 发送问题时,AI 回答区域显示"思考中..."的打字机闪烁效果
- 聊天记录自动滚动到底部
- 空状态提示:"上传文档后,开始向知识库提问吧 🚀"
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
四、README.md
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
写一份简洁的中文 README,包含:
- 项目简介(一句话说明)
- 技术栈清单
- 快速启动步骤(3 步:配置 .env → 安装依赖 → 启动服务)
- 项目截图占位符
- API 接口文档(简要说明 3 个端点)
- 常见问题(如何更换模型、如何使用代理地址)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
五、start.bat — Windows 一键启动脚本
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
写一个 Windows 批处理脚本:
- 检查 Python 是否安装
- 自动创建虚拟环境(如果不存在)
- 安装 requirements.txt 依赖
- 启动 FastAPI 服务(uvicorn main:app --reload --port 8000)
- 自动在浏览器中打开前端页面
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
六、关键约束和注意事项
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 使用 Milvus Lite(本地文件模式),不要 Docker,对入门用户友好
2. 所有 Python 代码必须有中文注释,解释每一步在做什么
3. 前端不依赖 npm/Node.js,纯 CDN 引入 Vue 3
4. .env.example 中的 API Key 用占位符,提醒用户替换
5. 错误处理要完善:后端每个接口都要 try-except,前端要有友好的错误提示
6. 代码风格:Python 用 PEP8,HTML/CSS 缩进用 2 空格
7. 这是入门级项目,请不要过度设计,保持代码量在合理范围内
请现在开始创建所有文件。先从后端开始,然后是前端,最后是配置和说明文件。使用说明
第一步:在 Claude Code 中执行
bash
# 进入你想创建项目的目录
cd D:\projects
# 启动 Claude Code
claude
# 把上面提示词正文(```之间的内容)整段粘贴给 Claude第二步:Claude 会自动创建的文件
Claude 会逐个创建所有文件,你只需要在它每次请求写入权限时点"允许"。最终你会得到一个完整的项目目录。
第三步:配置并启动
bash
# 1. 复制环境变量模板并填入你的 OpenAI API Key
cd rag-knowledge-base/backend
copy .env.example .env
# 编辑 .env,填入 OPENAI_API_KEY=sk-xxxx
# 2. 安装依赖
pip install -r requirements.txt
# 3. 启动后端
uvicorn main:app --reload --port 8000
# 4. 用浏览器打开前端
# 直接双击 frontend/index.html 即可项目架构图
用户浏览器(Vue 3 前端)
│
│ HTTP 请求
▼
FastAPI 后端(main.py)
│
├── POST /api/upload ──→ 文档切分 → 向量化 → 存入 Milvus
│
├── POST /api/chat ──→ 问题向量化 → Milvus 检索 → LLM 生成回答
│
└── GET /api/status ──→ 返回系统状态
│
▼
RAG 引擎(rag_engine.py)
│
├── LangChain TextSplitter ──→ 文档切片
├── OpenAI Embeddings ──→ 向量化
├── Milvus Lite ──→ 向量存储与检索
└── OpenAI GPT-4o-mini ──→ 答案生成