本周我们将进入进阶特性与真实业务逻辑的开发阶段。为了帮你顺利产出项目的第二版我为你梳理了三大方向的进阶实操指南 方向 AAI 原生简易 RAG 开发本周的核心是给机器人装上“本地知识库”实现检索增强生成RAG。1. 核心流程与依赖准备RAG 的本质是把本地文档切块并转化为向量存入数据库 - 用户提问时先检索相关文档 - 把文档和提问一起交给大模型生成答案。首先安装必要的依赖库pip install langchain langchain-community langchain-chroma sentence-transformers pypdflangchain-chroma轻量级本地向量数据库无需额外部署服务。sentence-transformers用于加载开源的中文嵌入模型如 BGE将文本转化为向量。pypdf用于解析本地 PDF 文档。2. 实操简易 RAG 代码实现将以下代码保存为rag_bot.py并在同级目录下放一个test.pdf文档from langchain_community.document_loaders import PyPDFLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_chroma import Chroma from langchain_community.embeddings import HuggingFaceEmbeddings from langchain_ollama import OllamaLLM from langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser # 1. 文档加载与智能分块 loader PyPDFLoader(test.pdf) docs loader.load() # 按500个字符切分重叠50个字符以保持语义连贯 splitter RecursiveCharacterTextSplitter(chunk_size500, chunk_overlap50) splits splitter.split_documents(docs) # 2. 向量化并存入 Chroma 数据库 # 使用针对中文优化的 BGE 开源嵌入模型 embeddings HuggingFaceEmbeddings(model_nameBAAI/bge-small-zh-v1.5) vectorstore Chroma.from_documents(documentssplits, embeddingembeddings) # 3. 构建 RAG 检索与生成链 llm OllamaLLM(modelqwen:7b) retriever vectorstore.as_retriever(search_kwargs{k: 3}) # 每次检索最相关的3个片段 # 定义严格的提示词模板要求模型仅基于上下文回答 prompt ChatPromptTemplate.from_template( 请严格基于以下检索到的上下文信息回答问题。 如果上下文中没有相关信息请直接回答“根据现有资料无法回答”。 上下文信息 {context} 用户问题{question} ) rag_chain ( {context: retriever, question: lambda x: x[question]} | prompt | llm | StrOutputParser() ) # 4. 运行问答 query input(请输入关于文档的问题) print(rag_chain.invoke({question: query}))☁️ 方向 B云原生后端中间件与编排本周重点在于引入 Redis 缓存并使用 Docker Compose 编排多容器服务。1. 接口增加 Redis 缓存在 Go 项目中引入 Redis 客户端如github.com/redis/go-redis/v9。在查询接口中先查缓存缓存未命中再查数据库并将结果回写缓存// 伪代码示例带缓存的查询逻辑 val, err : rdb.Get(ctx, user_key).Result() if err redis.Nil { // 缓存未命中查询 MySQL user : queryUserFromMySQL(id) // 将结果写入 Redis并设置过期时间如 10 分钟 rdb.Set(ctx, user_key, user, 10*time.Minute) return user } else if err ! nil { return err } return val2. Docker Compose 编排多容器在项目根目录创建docker-compose.yml一键编排 Go 服务、MySQL 和 Redis。Docker 会自动创建内部网络你可以直接使用服务名如mysql、redis作为连接的主机名version: 3.8 services: # Go 后端服务 backend: build: . ports: - 8080:8080 depends_on: - mysql - redis environment: - DB_HOSTmysql - REDIS_HOSTredis # MySQL 数据库 mysql: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: root_password MYSQL_DATABASE: my_app_db volumes: - mysql_data:/var/lib/mysql # Redis 缓存 redis: image: redis:7-alpine command: redis-server --requirepass my_secure_password # 生产环境务必设置密码 volumes: - redis_data:/data volumes: mysql_data: redis_data:执行docker-compose up -d即可在本地一键拉起整套微服务环境。 方向 CTypeScript 全栈管理页面与样式本周聚焦于中后台核心组件表单、表格的开发并引入 Tailwind CSS 提升样式开发效率。1. Tailwind CSS 快速样式开发Tailwind 采用“效用优先”的理念直接在 JSX/HTML 标签上写原子化的类名如bg-blue-600 text-white p-4 rounded无需在 CSS 文件和组件间反复跳转极大提升了开发速度。2. 管理页面与组件封装数据展示表格封装一个通用的Table /组件接收columns列定义和dataSource数据源作为 Props。结合 React/Vue 的状态管理处理分页、排序和加载状态。数据录入表单封装Form /组件实现表单的双向绑定与参数校验。在提交时统一处理接口的请求加载态Loading和成功/失败反馈。权限基础利用高阶组件HOC或自定义 Hook如usePermission封装权限逻辑。例如当用户没有编辑权限时自动隐藏或禁用页面上的“编辑”和“删除”按钮。 本周产出按上述指南推进本周结束时你的项目将具备完整的业务逻辑雏形AI 机器人能基于本地文档精准问答后端接口具备了缓存加速与容器化编排能力前端则拥有了标准的管理后台交互界面。记得将迭代后的代码提交到 GitHub并记录下本周在向量检索、Redis 缓存或组件封装中遇到的“坑”与解决方案