RAG系列:从零搭建企业级RAG系统实战

张开发
2026/5/31 12:44:53 15 分钟阅读
RAG系列:从零搭建企业级RAG系统实战
1. 技术栈选择在搭建具体的流程前我们需要确定使用的开发框架和模型。开发框架LangChain (Python/JS)或LlamaIndex。这两者是 RAG 领域的“Spring Boot”提供了丰富的文档加载、分块、检索和 Prompt 拼装组件。这里我们以 LangChain 概念为主进行讲解。Embedding 模型负责把文字变成数字。推荐使用 OpenAI 的text-embedding-3-small便宜且强大或者开源界的扛把子BAAI/bge-m3支持多语言极其适合中文企业知识库可本地私有化部署。向量数据库这里我们选择极其轻量、对开发者友好的Qdrant单机 Docker 部署即可支持百万级文档的极速检索或者本地可持久化的Chroma。LLM 接口如果我们要测试 RAG 生成可以使用任何支持 Function Calling 的大模型如 GPT-4o, Claude 3.5 Sonnet 或本地部署的 Llama 3。2. 搭建离线数据管道Data Pipeline这里的工作通常是周期性的如每天晚上将云效已解决工单同步到向量库。2.1 数据加载与解析Loaders你需要从各种数据源Markdown 目录云效 API 接口Confluence抓取数据。在 LangChain 中有很多预置的 Document Loaderfrom langchain_community.document_loaders import JSONLoader# 或者从 Markdown 加载from langchain_community.document_loaders import DirectoryLoader2.2 文本切块Chunking长文档必须切碎才能被准确检索并放入 LLM。切得太小缺乏上下文切得太大容易混入无关信息且超出 Token 限制。最推荐使用的是递归字符文本拆分器RecursiveCharacterTextSplitter。它会尝试按双换行段落、单换行句子、空格等优先级一层层切割尽可能保持一个段落的完整性。from langchain.text_splitter import RecursiveCharacterTextSplittertext_splitter RecursiveCharacterTextSplitter( chunk_size1000, # 每个数据块的 token 长度或字符长度限制 chunk_overlap200, # 相邻块之间保留 200 个重复字符保证边缘语意不断层 separators[\n\n, \n, , ])chunks text_splitter.split_documents(documents)2.3 向量化与建立索引Embed Store我们将切分好的chunks和挑选好的 Embedding 模型一并丢给 Qdrant 等向量数据库from langchain_community.embeddings import HuggingFaceBgeEmbeddingsfrom langchain_qdrant import Qdrant# 使用本地免费的 BGE-M3 模型embeddings HuggingFaceBgeEmbeddings(model_nameBAAI/bge-m3)# 初始化并持久化存储到 Qdrant (或者本地的一个文件目录)vectorstore Qdrant.from_documents( documentschunks, embeddingembeddings, location:memory:, # 仅作测试。生产可填 URL 如 http://localhost:6333 collection_nameyunxiao_knowledge_base)至此我们的知识已经静静地躺在高维向量空间中了。每一个“工单解决方案”都变成了一个坐标点。3. 搭建在线检索生成服务Retrieval Generation如果是传统的 Web 应用我们可能会在这个阶段写死 Prompt然后直接调用 LLM 返回答案。但我们的 Agent 架构不同我们希望把检索能力提供给 Agent如云效问题分析 Agent让 Agent 结合云效 OpenAPI 的实时数据自己去做决策。3.1 将 RAG 封装为 MCP Server 工具我们将创建一个遵循 MCP 协议的 Server向 Agent 暴露一个名为search_similar_issues的 Tool。当 Agent 发现某个工单毫无头绪时它就会调用这个 Tool。这里我们以 Node.js/TypeScript 配合modelcontextprotocol/sdk为例写出伪代码核心逻辑import { McpServer } frommodelcontextprotocol/sdk/server/mcp.js;import { z } fromzod;// 引入对应的向量检索库或自定义 API 客户端const server new McpServer({ name: Yunxiao-Knowledge-RAG, version: 1.0.0,});// 核心注册名为 search_similar_issues 的工具供大模型调用server.tool(search_similar_issues,当你在分析一个工单报错或流水线失败时可以通过该工具在知识库中检索历史相似问题的解决方案, { query: z.string().describe(描述遇到的报错信息、现象或日志片段), project_id: z.string().optional().describe(如果不为空则限定在该项目下的历史工单中检索) },async ({ query, project_id }) { // 1. 把自然语言 Query 转为 向量 (Query Embedding) const queryVector await getEmbedding(query); // 2. 带着向量去 Qdrant / Milvus 数据库里查询 Top-K并支持根据 project_id 过滤元数据 Metadata const searchResults await qdrantClient.search({ collectionName: yunxiao_knowledge_base, vector: queryVector, limit: 3, filter: project_id ? { must: [{ key: project_id, match: { value: project_id } }] } : undefined }); // 3. 把检索出来的历史工单组装成人类可读的字符串格式 const contextStr searchResults.map((res, index) { return历史相似案例 [${index 1}]:标题: ${res.payload.title}工单链接: ${res.payload.url}现象描述: ${res.payload.description}最终解决方案: ${res.payload.resolution}; }).join(\n\n); // 4. 将提取的知识返回给 Agent即 MCP Host return { content: [{ type: text, text: 找到了相关的历史案例你可以参考这些解决方案\n${contextStr} }] }; });server.connect(new StdioServerTransport());4. 全流程演示当我们在对话框中向 Agent 输入“云效流水线走到 npm run build 时抛出JavaScript heap out of memory报错该怎么处理”大模型路由Agent 内的大模型如 Claude 或 GPT-4一看这个问题立刻意识到自己没有企业内部的流水线排查经验。但它看到可用工具里有一个search_similar_issues于是它主动构造参数{query: npm run build JavaScript heap out of memory, project_id: null}。MCP 工具执行知识库 MCP Server 接收到请求将其 Embedding并在向量库中发现了历史一个极其相似的工单记录“修复流水线内存溢出问题修改 NODE_OPTIONS”。内容返回与最终生成MCP Server 将这段历史方案以文本格式返回。Agent 的大模型拿到这个方案即 Prompt 被 RAG 的检索结果 Augment 增强了最终回复给用户“你好针对JavaScript heap out of memory这个报错根据我们知识库中历史相似案例通常是因为流水线内存不足导致的。 建议的解决方案是请在你的云效流水线npm run build之前的环境变量中增加NODE_OPTIONS--max_old_space_size8192。 详情你可以参考这篇我们内部的解决案例[链接]”学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

更多文章