1. 项目概述
"黑马程序员RAG/Agent课程笔记"是一套持续更新的技术学习资料,主要围绕当前AI领域最热门的RAG(检索增强生成)和Agent(智能代理)两大技术方向展开。这套笔记源自黑马程序员在B站等平台发布的系列课程,内容涵盖从基础概念到企业级落地方案的全套知识体系。
作为一套开源技术笔记,它的核心价值在于:
- 系统化整理了RAG和Agent开发的知识脉络
- 提供了基于LangChain等主流框架的实战代码示例
- 包含了企业级应用场景的解决方案
- 持续更新最新技术动态和最佳实践
2. 技术架构解析
2.1 RAG技术体系
RAG(Retrieval-Augmented Generation)是当前最主流的AI知识库解决方案,其核心架构包含三个关键组件:
-
知识处理流水线:
- 文档解析:支持PDF、Word、Excel等多种格式
- 文本分块:采用滑动窗口算法,典型块大小为512-1024token
- 向量化处理:使用text-embedding-3-small等嵌入模型
- 索引构建:基于FAISS或Chroma等向量数据库
-
检索增强模块:
python复制# 典型检索代码示例 from langchain.retrievers import MultiQueryRetriever retriever = MultiQueryRetriever.from_llm( llm=llm, vectorstore=vectorstore, search_kwargs={"k": 5} ) -
生成优化策略:
- 查询重写(Query Rewriting)
- 结果重排(Re-ranking)
- 上下文压缩(Context Compression)
2.2 Agent开发框架
Agent技术栈主要包含以下核心层:
| 层级 | 组件 | 说明 |
|---|---|---|
| 基础层 | LLM | 使用GPT-4、Claude等大模型作为推理引擎 |
| 控制层 | LangChain | 提供基础Agent构建模块 |
| 扩展层 | LangGraph | 支持多Agent协作工作流 |
| 工具层 | Tools | 集成搜索引擎、API等外部能力 |
典型Agent开发模式:
python复制from langchain.agents import AgentExecutor, create_react_agent
agent = create_react_agent(
llm=llm,
tools=tools,
prompt=prompt_template
)
agent_executor = AgentExecutor(agent=agent, tools=tools)
3. 核心实战内容
3.1 RAG知识库构建
完整实现流程包含以下关键步骤:
-
文档预处理:
- 使用Unstructured库处理非结构化数据
- 采用递归字符文本分割器(RecursiveCharacterTextSplitter)
- 处理中文时的特殊考虑:按标点符号分块
-
向量化方案选型:
- 轻量级方案:Sentence-Transformers/all-MiniLM-L6-v2
- 生产级方案:text-embedding-3-large
- 中文优化方案:bge-small-zh-v1.5
-
检索优化技巧:
python复制# 混合检索策略示例 from langchain.retrievers import EnsembleRetriever keyword_retriever = BM25Retriever.from_texts(texts) vector_retriever = vectorstore.as_retriever() ensemble_retriever = EnsembleRetriever( retrievers=[vector_retriever, keyword_retriever], weights=[0.7, 0.3] )
3.2 Agent系统开发
企业级Agent开发的关键考量:
-
工具集成规范:
- 工具描述必须包含清晰的参数说明
- 每个工具应实现输入验证
- 工具执行需要超时控制
-
记忆管理策略:
- 短期记忆:ConversationBufferWindowMemory
- 长期记忆:VectorStoreRetrieverMemory
- 结构化记忆:Entity Memory
-
工作流设计:
python复制# LangGraph多Agent协作示例 from langgraph.graph import Graph workflow = Graph() workflow.add_node("researcher", research_agent) workflow.add_node("writer", writer_agent) workflow.add_edge("researcher", "writer") workflow.set_entry_point("researcher")
4. 企业级落地实践
4.1 多租户权限控制
基于Spring AI的企业级解决方案:
-
架构设计:
- 租户隔离:数据库schema分离
- 权限模型:RBAC+ABAC混合
- 审计日志:记录所有API调用
-
关键实现:
java复制// Spring Security集成示例 @PreAuthorize("hasPermission(#tenantId, 'RAG_ACCESS')") public RAGResponse queryRAG(@PathVariable String tenantId, @RequestBody QueryRequest request) { // 业务逻辑 } -
性能优化:
- 向量索引分片存储
- 缓存检索结果
- 异步处理机制
4.2 生产环境部署
容器化部署方案要点:
-
基础设施:
- 向量数据库:Qdrant集群
- LLM服务:vLLM推理引擎
- 应用服务:Kubernetes部署
-
监控指标:
- 检索延迟(P99 < 500ms)
- 生成质量(ROUGE-L评分)
- 系统吞吐量(QPS)
-
扩缩容策略:
- 基于请求量的自动伸缩
- GPU资源动态分配
- 冷热数据分离存储
5. 学习路线建议
5.1 技术栈掌握路径
分阶段学习建议:
| 阶段 | 内容 | 耗时 |
|---|---|---|
| 基础 | Python/LangChain基础 | 2周 |
| 进阶 | RAG核心原理与优化 | 3周 |
| 高级 | Agent系统设计 | 4周 |
| 实战 | 企业级项目开发 | 持续 |
5.2 常见问题解决方案
高频问题处理指南:
-
中文处理不佳:
- 使用专门的中文嵌入模型
- 调整文本分块策略
- 增加查询改写步骤
-
检索结果不相关:
python复制# 查询扩展示例 from langchain.retrievers import QueryExpansionRetriever expanded_retriever = QueryExpansionRetriever( base_retriever=vectorstore.as_retriever(), llm_chain=llm_chain ) -
Agent逻辑混乱:
- 优化提示工程
- 限制工具调用顺序
- 增加验证步骤
6. 技术选型对比
6.1 框架选择指南
主流技术对比分析:
| 维度 | LangChain | LangGraph | Dify |
|---|---|---|---|
| 定位 | 基础框架 | 工作流引擎 | 低代码平台 |
| 优点 | 灵活度高 | 复杂流程支持 | 开箱即用 |
| 缺点 | 学习曲线陡 | 概念复杂 | 定制性差 |
| 适用场景 | 深度定制 | 多Agent系统 | 快速原型 |
6.2 部署方案选型
不同规模企业的选择建议:
-
初创团队:
- Ollama本地运行模型
- Chroma轻量级向量库
- FastAPI后端服务
-
中型企业:
- vLLM推理集群
- Qdrant向量数据库
- Kubernetes编排
-
大型系统:
- 混合云架构
- 多模型网关
- 分级存储方案
7. 前沿技术追踪
7.1 Agentic RAG演进
新一代RAG技术趋势:
-
核心改进:
- 动态检索策略
- 迭代式查询优化
- 自我修正机制
-
实现示例:
python复制# Agentic RAG工作流 agent = initialize_agent( tools=[retriever_tool, generator_tool], llm=llm, agent=AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION, verbose=True ) -
性能对比:
- 准确率提升30-50%
- 响应时间增加20%
- 适合高价值场景
7.2 多模态扩展
未来发展方向:
-
技术融合:
- 图像检索增强
- 语音交互界面
- 视频内容理解
-
架构调整:
- 多模态嵌入模型
- 跨模态索引
- 混合生成引擎
-
应用场景:
- 医疗影像分析
- 工业质检
- 教育内容生成
