我把运维知识库接入了大模型,然后发现 RAG 没那么简单
我们团队积累了好几年的运维文档故障复盘、架构变更记录、上线 checklists、各种中间件的配置最佳实践……分散在 Confluence、飞书文档和 Markdown 仓库里。这些文档的价值很大但问题也很明显没人看。新人来了不知道去搜什么老人遇到问题想查个以前踩过的坑但我记得好像在哪看到过——然后花了半小时翻文档最后还是去问同事了。我的想法很直接把这些文档喂给大模型做一个运维问答机器人。第一次尝试文档切碎丢进去from langchain.text_splitter import MarkdownHeaderTextSplitterfrom langchain_community.vectorstores import Chromafrom langchain_community.embeddings import OpenAIEmbeddings class OpsKnowledgeBase: def __init__(self, docs_dir: str): self.docs_dir docs_dir self.embeddings OpenAIEmbeddings(modeltext-embedding-ada-002) self.vector_store None self._load_documents() def _load_documents(self): all_chunks [] for root, dirs, files in os.walk(self.docs_dir): for f in files: if not f.endswith(.md): continue with open(os.path.join(root, f), r, encodingutf-8) as fp: content fp.read() splitter MarkdownHeaderTextSplitter( headers_to_split_on[(#, h1), (##, h2)] ) all_chunks.extend(splitter.split_text(content)) self.vector_store Chroma.from_documents( documentsall_chunks, embeddingself.embeddings)看起来没问题但一用就发现各种翻车。翻车现场翻车 1问到具体的配置参数答案张冠李戴用户问“Nginx 的 keepalive_timeout 应该设多少”知识库里有两份文档一份说 65 秒给 Web 前端用的一份说 300 秒给内网反向代理用的。语义搜索把两个都找到了LLM 把 65 秒和 300 秒混在一起回答。教训不加场景标签的文档检索出来也是噪音。翻车 2新旧版本冲突知识库里同时存在K8s 1.20 迁移记录和K8s 1.26 升级文档关于 Ingress 的配置方式完全不一样。用户问 Ingress 的问题旧版本的文档优先级更高LLM 给了过时的答案。教训没有版本标记知识库就是时间的垃圾场。翻车 3检索到错误片段有一篇踩坑记录里面记录了某个错误的配置方式以及后来怎么改的。用户问配置方法检索到了踩坑部分LLM 把错误的配置当成了正确答案。教训文档里的反例如果不标注会被 LLM 当成正例学习。第二次尝试结构化知识库1. 给文档加上元数据class KnowledgeDocument: def __init__(self, filepath: str): self.filepath filepath self.metadata self._parse_metadata() def _parse_metadata(self) - dict: # 文档格式YAML front matter # --- # title: Nginx 配置最佳实践 # tags: [nginx, 配置, 性能优化] # version: v2.1 # deprecated: false # --- with open(self.filepath, r, encodingutf-8) as f: content f.read() if content.startswith(---): parts content.split(---, 2) metadata {} for line in parts[1].strip().split(/n): if : in line: k, v line.split(:, 1) metadata[k.strip()] v.strip().strip(/) return metadata return {}2. 检索时做两轮过滤class ImprovedRAG: def query(self, question: str, context: dict None) - str: # 第一轮向量检索 TOP20 docs self.vector_store.similarity_search(question, k20) # 第二轮元数据过滤 filtered [] for doc in docs: m doc.metadata if m.get(deprecated) true: continue filtered.append(doc) context_docs filtered[:5] # ... 拼接后给 LLM3. 回答时标注置信度def generate_answer(self, question: str, docs: list) - str: if not docs: return 知识库中未找到相关信息 avg_score sum(d.metadata.get(relevance_score, 0.5) for d in docs) / len(docs) if avg_score 0.4: disclaimer 以下信息仅供参考 elif avg_score 0.7: disclaimer 以下信息可能部分相关建议结合实际验证 else: disclaimer 根据知识库记录 answer self._llm_answer(question, docs) return f{disclaimer}/n{answer}做完之后的感受折腾了一圈准确率从第一版的 60% 提升到了 85% 以上。但我最大的感受是RAG 的瓶颈从来不在 LLM 和 Embedding而在知识库本身。如果你文档里写的都是大概、可能、也许这种模糊描述或者同一个问题在不同文档里互相矛盾再好的检索也救不了。在做 RAG 之前先做一件事给你的知识库做一次数据治理。该删的删、该更新的更新、该打标签的打上标签。这个过程枯燥但必要——因为 LLM 只会在你给的数据上工作它不会自己变出正确答案。 如果你想系统学习 AIOps推荐这个课程51CTO 明星讲师授课崔皓前惠普中国系统架构师、20年IT经验 韩先超K8s架构师、50万学员课程内容1AI 大模型开启智能运维新时代2AI 智能解析慢查询自动诊断 SQL 并给出优化方案3自动化巡检实战Dify Prometheus DeepSeek4AIOps 闭环实践基于大模型的对话式运维OpenClaw 微信 Jenkins5DeepSeek RAG构建 K8s 智能故障分析平台6企业级 AI 助手实时分析 EFK 错误日志7智能运维新范式AI 故障预测与决策辅助8零基础也能入门用 AI 智能体实现运维智能化 点击文末「阅读原文」立即报名微信后台已配置https://edu.51cto.com/surlCFqX11这里给大家精心整理了一份全面的AI大模型学习资源包括AI大模型全套学习路线图从入门到实战、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等资料免费分享扫码免费领取全部内容1. 成长路线图学习规划要学习一门新的技术作为新手一定要先学习成长路线图方向不对努力白费。这里我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。2. 大模型经典PDF书籍书籍和学习文档资料是学习大模型过程中必不可少的我们精选了一系列深入探讨大模型技术的书籍和学习文档它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。书籍含电子版PDF3. 大模型视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的大模型视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。4. 2026行业报告行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。5. 大模型项目实战学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。6. 大模型面试题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我们将提供精心整理的大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。7. 资料领取全套内容免费抱走学 AI 不用再找第二份不管你是 0 基础想入门 AI 大模型还是有基础想冲刺大厂、了解行业趋势这份资料都能满足你现在只需按照提示操作就能免费领取扫码免费领取全部内容