SRE & AI 实践录

基于 RAG 构建企业级智能运维知识库

· 更新于 2026-07-26 ⏱️ 阅读约 2 分钟 (684 字) RAG AIOps LLM

利用 LangChain + Chroma 向量数据库,将历史 Runbook、事故报告和运维文档转化为可检索的智能知识库,实现 On-Call 场景下的快速根因定位。

一、运维知识管理的痛点

在大型组织中,运维知识往往分散在 Wiki、Runbook、Slack 记录和事故报告中。On-Call 工程师需要在多个系统间反复切换,才能定位到关键信息。RAG(Retrieval-Augmented Generation)技术为解决这一问题提供了新思路。

二、系统架构

我们基于 LangChain 框架搭建了完整的 RAG 流水线:文档经解析切分后存入 Chroma 向量数据库;当工程师提问时,系统先检索最相关的文档片段,再交由 LLM 生成回答。

三、关键技术与实现

向量嵌入模型选择 text-embedding-3-small,Chunk 大小设为 512 tokens、重叠 64 tokens。检索采用混合策略:向量相似度 + BM25 关键词加权。

LangChain RAG 流水线

python
from langchain_community.vectorstores import Chroma
from langchain_community.embeddings import OpenAIEmbeddings
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.chains import RetrievalQA
from langchain_openai import ChatOpenAI

# 文档加载与切分
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=512,
    chunk_overlap=64,
    separators=["\n\n", "\n", "。", " ", ""]
)
documents = text_splitter.split_documents(raw_docs)

# 向量存储
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
vectordb = Chroma.from_documents(
    documents=documents,
    embedding=embeddings,
    persist_directory="./chroma_db"
)

# 检索问答链路
qa_chain = RetrievalQA.from_chain_type(
    llm=ChatOpenAI(model="gpt-4o", temperature=0),
    retriever=vectordb.as_retriever(search_kwargs={"k": 5}),
    return_source_documents=True
)

# 查询示例
result = qa_chain.invoke({"query": "Redis 主从切换后老数据怎么恢复?"})
print(result["result"])

服务配置

yaml
# docker-compose.yml
version: '3.8'
services:
  chroma:
    image: chromadb/chroma:latest
    ports:
      - "8000:8000"
    volumes:
      - ./chroma_data:/chroma/chroma
    environment:
      - IS_PERSISTENT=true
      - PERSIST_DIRECTORY=/chroma/chroma
    deploy:
      resources:
        limits:
          memory: 2G

  rag-api:
    build: .
    ports:
      - "8080:8080"
    depends_on:
      - chroma
    environment:
      - OPENAI_API_KEY=${OPENAI_API_KEY}
      - CHROMA_HOST=chroma
      - CHROMA_PORT=8000

四、总结

RAG 知识库上线后,On-Call 工程师的平均故障定位时间从 45 分钟缩短到 12 分钟。后续计划加入多轮对话上下文理解与主动推荐能力。

本文作者:技术领航员 | 许可协议:CC BY-NC-SA 4.0

本文链接:https://sre-ai-blog.pages.dev/zh/posts/rag-knowledge-base/(转载请注明出处)