Linux第33篇:RAG知识库实战:用本地大模型+向量数据库打造运维智囊

一句话定义:本文系统讲解如何基于本地大模型(Ollama)与向量数据库(Milvus/Qdrant)构建RAG(检索增强生成)运维知识库,让AI Agent在决策时能够检索历史故障案例与运维文档,实现从“每次从头推理”到“站在经验上思考”的智能化升级。

一、引言:AI Agent的“经验”从何而来?

在第28篇中,我们构建了AI Agent自动化运维平台——它能自主分析告警、调用工具、执行修复操作。看起来已经很智能了,但有一个核心问题始终存在:Agent的“经验”是空的

每次遇到故障,Agent都要从头推理——分析日志、思考根因、制定方案。如果遇到一个之前处理过的类似问题,它依然要重复走一遍完整的推理链路,耗时耗力,还可能因为推理偏差给出次优方案。

这就好比一个新手运维工程师,每次都要翻书查资料才能处理故障,而不是像老手一样“一看就知道问题在哪”。

RAG(检索增强生成)就是来解决这个问题的。

RAG的本质是给大模型外挂一个“知识U盘”。它允许Agent在回答问题或做出决策前,先从知识库中检索与当前问题最相关的历史案例和文档,将这些“参考资料”连同问题一起喂给大模型,让模型基于真实经验来生成回答。

RAG的威力在运维场景中已经被验证:某省气象数据中心基于RAG构建了智能运维问答系统,实现了运维故障的智能诊断与自动处置;在数据库运维场景中,RAG技术将故障处理效率提升了40%以上;监控易的AI知识库模块借助RAG+LLM,将排障效率提升了60%。

在Java SaaS部署的全链路中(第32篇AI Agent → 第33篇RAG知识库 → 第34篇AIOps全景架构),RAG是从“AI辅助”走向“AI智能”的最后一公里。掌握了RAG,你的AI Agent就不再是“一张白纸”,而是拥有丰富经验的“运维老兵”。

二、RAG核心原理:大模型的“开卷考试”

为什么这样写:在动手部署之前,先搞清楚RAG的工作原理——知道“数据怎么进去、怎么出来”,后面的配置才不会一头雾水。

2.1 什么是RAG?

RAG(Retrieval-Augmented Generation)是一种将信息检索大语言模型生成相结合的技术框架。它的核心工作流程分为三个阶段:

阶段做什么关键技术
离线阶段:知识入库将运维文档、历史故障案例切分成小块,转换为向量,存入向量数据库文档解析、文本分块、Embedding模型
在线阶段:检索将用户问题(或告警信息)也转换为向量,在数据库中检索最相似的Top-K文档向量相似度检索(余弦相似度)
生成阶段:增强回答将检索到的文档片段 + 原始问题一起输入大模型,生成基于“参考资料”的精准回答Prompt工程、LLM生成

简单理解:传统大模型回答问题像是“闭卷考试”——全靠模型训练时记住的知识。RAG则像是“开卷考试”——先翻书(检索知识库),找到相关章节,再结合书本内容作答。

2.2 为什么RAG特别适合运维场景?

运维场景有三个特点,让RAG成为天然的最佳选择:

  1. 经验高度可复用:同样的故障(如“数据库连接池耗尽”)在不同时间、不同服务上反复出现。把每次的处理过程记录下来,下次遇到就能快速参考。

  2. 知识分散且动态:运维文档散落在各处——操作手册、故障报告、监控配置、架构文档。RAG能将它们统一整合,并通过语义检索让知识“活起来”。

  3. 对准确性要求极高:大模型直接回答运维问题时容易“幻觉”(编造不存在的解决方案)。RAG通过检索真实的历史案例来约束模型的回答,显著降低了幻觉率。

三、系统架构设计

为什么这样写:理解整体架构是成功的一半。知道“数据从哪来、存到哪、怎么用”,部署时才能有的放矢。

3.1 四层架构

┌─────────────────────────────────────────────────────────────────┐
│                    第1层:数据源层                              │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐         │
│  │ 故障报告  │ │ 操作手册  │ │ Runbook  │ │ 监控配置  │         │
│  │ (Markdown)│ │ (PDF/Word)│ │ (YAML)   │ │ (文档)   │         │
│  └──────────┘ └──────────┘ └──────────┘ └──────────┘         │
└─────────────────────────┬───────────────────────────────────────┘
                          │ ETL(提取-转换-加载)
┌─────────────────────────▼───────────────────────────────────────┐
│                    第2层:知识加工层                            │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │  ① 文档解析(Tika)→ ② 文本分块(按语义/Token)        │   │
│  │  → ③ 向量化(Embedding模型)→ ④ 存入向量数据库         │   │
│  └──────────────────────────────────────────────────────────┘   │
└─────────────────────────┬───────────────────────────────────────┘
                          │ 向量 + 元数据
┌─────────────────────────▼───────────────────────────────────────┐
│                    第3层:存储层                                │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │              向量数据库(Milvus / Qdrant)              │   │
│  │  ┌─────────┐  ┌─────────┐  ┌─────────┐               │   │
│  │  │ 向量索引 │  │ 元数据  │  │ 版本管理 │               │   │
│  │  └─────────┘  └─────────┘  └─────────┘               │   │
│  └──────────────────────────────────────────────────────────┘   │
└─────────────────────────┬───────────────────────────────────────┘
                          │ 相似度检索
┌─────────────────────────▼───────────────────────────────────────┐
│                    第4层:应用层                                │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │          AI Agent(第28篇)+ RAG检索增强                │   │
│  │  用户问题/告警 → 向量检索 → 检索结果 → LLM生成答案      │   │
│  └──────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────┘

踩过的坑

  • 坑1:文档分块(Chunking)策略不当——分块太大导致检索精度下降,分块太小丢失上下文
  • 坑2:Embedding模型与向量数据库的维度不匹配,导致向量无法写入

注意事项

  • RAG系统的瓶颈从来不在大模型,而在于知识库质量——高质量的知识入库是RAG成功的前提

四、向量数据库选型

为什么这样写:向量数据库是RAG的“记忆仓库”。选型对了事半功倍,选型错了后面全是坑。

4.1 主流向量数据库对比

数据库特点适用场景部署方式
Milvus功能最全面,支持十亿级向量,GPU加速生产级大规模RAGDocker / K8s / 云服务
Qdrant轻量级,Rust编写,性能优异中小规模、快速部署Docker(一条命令)
Redis Stack基于Redis,Java开发者友好已有Redis基础设施的团队Docker
Chroma轻量级,Python原生原型验证、开发测试pip install

4.2 选型建议

  • 生产环境大规模RAG(百万级+文档)→ Milvus,支持分布式部署和多种索引优化
  • 中小规模快速上线Qdrant,Docker一键启动,资源开销小
  • 已有Redis的Java团队Redis Stack,复用现有基础设施
  • 原型验证阶段Chroma,零配置快速上手

💡 本文推荐:对于大多数Java SaaS团队的运维知识库场景(文档数量在万级到十万级),Qdrant是最务实的选择——部署简单、性能优秀、API友好。下面以Qdrant为例进行实战演示。

五、部署向量数据库(Qdrant)

为什么这样写:Qdrant的部署极其简单——一条Docker命令就能启动。先让数据库跑起来,再考虑数据写入和查询。

踩过的坑

  • 坑1:忘记挂载持久化存储卷,容器重启后所有数据丢失
  • 坑2:端口映射配置错误,应用无法连接Qdrant

代码块:Docker部署Qdrant

# 1. 拉取Qdrant镜像
docker pull qdrant/qdrant

# 2. 创建持久化存储目录
mkdir -p /data/qdrant_storage

# 3. 启动Qdrant容器(挂载持久化卷)
docker run -d \
  --name qdrant_server \
  -v /data/qdrant_storage:/qdrant/storage \
  -p 6333:6333 \
  -p 6334:6334 \
  --restart unless-stopped \
  qdrant/qdrant

# 4. 验证Qdrant是否正常运行
curl http://localhost:6333/collections
# 应返回:{"result":{"collections":[]},"status":"ok","time":...}

# 5. 访问Web UI(可选)
# 浏览器打开:http://localhost:6333/dashboard

执行后说明-p 6333:6333暴露了Qdrant的HTTP API端口,-p 6334:6334暴露了gRPC端口(高性能场景使用)。-v /data/qdrant_storage:/qdrant/storage确保数据持久化——即使容器删除重建,知识库数据也不会丢失。curl返回"status":"ok"说明数据库已就绪。

代码块:验证Qdrant集合操作

# 创建一个测试集合(相当于关系数据库中的"表")
curl -X PUT http://localhost:6333/collections/ops_knowledge \
  -H "Content-Type: application/json" \
  -d '{
    "vectors": {
      "size": 768,
      "distance": "Cosine"
    }
  }'

# 查看已创建的集合
curl http://localhost:6333/collections
# 应看到 ops_knowledge 在列表中

执行后说明vectors.size: 768是向量维度——必须与Embedding模型输出的维度一致(如nomic-embed-text输出768维)。distance: "Cosine"使用余弦相似度计算向量距离,是RAG场景的标配。

六、构建运维知识库

为什么这样写:向量数据库只是个“空仓库”,真正有价值的是里面的“货物”——运维知识。这一节讲的是如何把散落的运维文档变成可检索的向量数据。

6.1 知识来源与类型

运维知识库的数据来源包括:

知识类型来源格式用途
故障处理记录每次故障的复盘报告Markdown根因分析参考
Runbook/操作手册标准化运维流程文档Markdown/PDF标准化操作指引
监控告警规则说明Prometheus告警配置YAML + 注释告警上下文理解
架构设计文档系统设计文档Markdown/Confluence架构问题分析
常见问题FAQ历史问答记录Markdown快速问答

6.2 文档处理流程(ETL)

为什么这样写:原始文档不能直接存入向量数据库——需要经过“解析→分块→向量化”三步处理。

踩过的坑

  • 坑1:文档分块没有考虑语义完整性——在句子中间切断,导致检索到的片段语义不完整
  • 坑2:Embedding模型选择不当,中文文档用了英文优化的模型,检索效果差

代码块:文档ETL处理(Python示例)

import os
import hashlib
from typing import List, Dict
import requests
import json

# ============================================================
# 第一步:文档解析(支持多种格式)
# ============================================================

def parse_document(file_path: str) -> str:
    """解析文档,提取纯文本内容"""
    # 实际生产环境可使用 Apache Tika 或 unstructured 库
    # 这里以 Markdown 文件为例
    with open(file_path, 'r', encoding='utf-8') as f:
        return f.read()

# ============================================================
# 第二步:智能分块(Chunking)
# ============================================================

def chunk_document(text: str, chunk_size: int = 500, overlap: int = 50) -> List[str]:
    """
    将文档切分成重叠的块
    - chunk_size: 每块的最大字符数(建议300-500词)
    - overlap: 块之间的重叠字符数(保持上下文连贯)
    """
    chunks = []
    start = 0
    text_len = len(text)
    
    while start < text_len:
        end = min(start + chunk_size, text_len)
        # 尽量在句子边界处切分(查找最近的句号/换行)
        if end < text_len:
            # 向前查找最近的句子边界
            for i in range(end, max(start, end - 100), -1):
                if text[i] in '.!?。!?\n':
                    end = i + 1
                    break
        
        chunk = text[start:end].strip()
        if chunk:
            chunks.append(chunk)
        start = end - overlap  # 重叠部分
    
    return chunks

# ============================================================
# 第三步:向量化(调用Ollama Embedding模型)
# ============================================================

def get_embedding(text: str, model: str = "nomic-embed-text") -> List[float]:
    """调用Ollama的Embedding接口将文本转换为向量"""
    response = requests.post(
        "http://localhost:11434/api/embeddings",
        json={"model": model, "prompt": text},
        timeout=30
    )
    return response.json()["embedding"]

# ============================================================
# 第四步:存入Qdrant
# ============================================================

def ingest_to_qdrant(chunks: List[str], source: str, collection: str = "ops_knowledge"):
    """将分块后的文档存入Qdrant向量数据库"""
    points = []
    for idx, chunk in enumerate(chunks):
        vector = get_embedding(chunk)
        point = {
            "id": hashlib.md5(f"{source}_{idx}".encode()).hexdigest(),
            "vector": vector,
            "payload": {
                "text": chunk,
                "source": source,
                "chunk_index": idx,
                "doc_type": "runbook" if "runbook" in source else "incident"
            }
        }
        points.append(point)
    
    # 批量插入Qdrant
    response = requests.put(
        f"http://localhost:6333/collections/{collection}/points",
        json={"points": points}
    )
    return response.status_code == 200

# ============================================================
# 完整流程:处理单个文档
# ============================================================

def process_document(file_path: str, source_name: str):
    """处理单个文档的完整ETL流程"""
    print(f"📄 处理文档: {file_path}")
    
    # 1. 解析
    text = parse_document(file_path)
    print(f"   - 文档长度: {len(text)} 字符")
    
    # 2. 分块
    chunks = chunk_document(text, chunk_size=500, overlap=50)
    print(f"   - 分块数量: {len(chunks)}")
    
    # 3. 向量化并入库
    success = ingest_to_qdrant(chunks, source_name)
    print(f"   - 入库状态: {'✅ 成功' if success else '❌ 失败'}")
    
    return success

# 使用示例
if __name__ == "__main__":
    # 处理故障复盘报告
    process_document("/data/knowledge/incident-2026-07-15.md", "incident_db_connection_pool")
    # 处理Runbook
    process_document("/data/knowledge/runbook-restart-service.md", "runbook_restart")

执行后说明:这个ETL流程的四个步骤环环相扣:

  1. 文档解析:使用parse_document从各种格式(Markdown、PDF、Word)提取纯文本。生产环境推荐使用Apache Tikaunstructured库。

  2. 智能分块chunk_size=500(约300-500词)是RAG场景的推荐值。overlap=50让相邻块有重叠,确保跨块的语义不丢失。分块时尽量在句子边界切分,避免切断语义完整的句子。

  3. 向量化:调用Ollama的/api/embeddings接口。nomic-embed-text是轻量级Embedding模型,768维,适合本地部署。

  4. 入库:每个分块作为一个“点”(Point)存入Qdrant。payload中存储了原文、来源、类型等元数据,便于后续检索时展示上下文。

七、RAG检索与生成:让Agent“查资料”再回答

为什么这样写:知识库建好了,现在要让Agent能用起来——先检索相关文档,再基于检索结果生成回答。这是RAG的核心价值所在。

7.1 检索流程

代码块:RAG检索与生成(Python示例)

# ============================================================
# RAG检索与生成核心逻辑
# ============================================================

def rag_query(query: str, collection: str = "ops_knowledge", top_k: int = 5) -> Dict:
    """
    RAG检索增强生成
    1. 将用户问题转换为向量
    2. 在向量数据库中检索最相似的Top-K文档
    3. 将检索结果 + 用户问题一起输入大模型生成答案
    """
    # ===== 第一步:向量化用户问题 =====
    query_vector = get_embedding(query)
    
    # ===== 第二步:在Qdrant中检索相似文档 =====
    search_result = requests.post(
        f"http://localhost:6333/collections/{collection}/points/search",
        json={
            "vector": query_vector,
            "limit": top_k,
            "with_payload": True
        }
    ).json()
    
    # 提取检索到的文档内容
    retrieved_docs = []
    for point in search_result.get("result", []):
        retrieved_docs.append({
            "text": point["payload"]["text"],
            "source": point["payload"]["source"],
            "score": point.get("score", 0)
        })
    
    # ===== 第三步:构建增强Prompt =====
    context = "\n\n---\n\n".join([
        f"【来源:{doc['source']}】\n{doc['text']}" 
        for doc in retrieved_docs
    ])
    
    enhanced_prompt = f"""
你是一个SRE运维专家。请基于以下参考资料回答用户的问题。

【参考资料】
{context}

【用户问题】
{query}

【要求】
1. 如果参考资料中有相关信息,请基于参考资料回答
2. 如果参考资料不足以回答问题,请明确说明“根据现有知识库无法完全回答”,并给出建议
3. 引用参考资料时,注明来源
4. 回答要具体、可操作
"""
    
    # ===== 第四步:调用大模型生成答案 =====
    response = requests.post(
        "http://localhost:11434/api/generate",
        json={
            "model": "qwen2.5:7b",
            "prompt": enhanced_prompt,
            "stream": False,
            "options": {"temperature": 0.3}
        },
        timeout=60
    ).json()
    
    return {
        "answer": response.get("response", ""),
        "retrieved_docs": retrieved_docs,
        "top_k": top_k
    }

# ===== 使用示例 =====
if __name__ == "__main__":
    result = rag_query("数据库连接池耗尽怎么办?")
    print("📚 检索到的参考资料:")
    for doc in result["retrieved_docs"]:
        print(f"  - {doc['source']} (相似度: {doc['score']:.3f})")
    print("\n🤖 AI回答:")
    print(result["answer"])

执行后说明:这个rag_query函数实现了完整的RAG闭环:

  1. 向量检索:用户问题被转换为向量,在Qdrant中检索最相似的Top-K文档(K=5)
  2. 上下文增强:检索到的文档片段被拼接到Prompt中作为“参考资料”
  3. 生成回答:大模型基于参考资料生成精准回答,而非凭空想象

关键参数top_k=5表示检索5个最相关的文档片段。可根据知识库大小调整——知识库越大,K值可适当增大(如10-20)。

7.2 与AI Agent集成(第28篇的升级)

为什么这样写:第28篇的AI Agent是“一张白纸”——每次都要从头推理。现在加上RAG,Agent就能“查资料”了。

代码块:带RAG的Agent决策流程

class RAGEnabledAgent(OpsAgent):
    """第28篇OpsAgent的RAG增强版"""
    
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.rag_enabled = True
    
    def analyze_alert(self, alert: Dict) -> str:
        """分析告警(带RAG检索)"""
        alert_name = alert.get("alertname", "")
        job = alert.get("job", "")
        
        # 1. 先用RAG检索历史相似案例
        query = f"{alert_name} {job} 故障处理"
        rag_result = rag_query(query, top_k=3)
        
        # 2. 构建增强的Agent Prompt(包含历史案例)
        enhanced_system_prompt = f"""
你是一个SRE运维专家。以下是历史相似故障的处理经验,请参考这些经验来处理当前告警。

【历史相似案例】
{chr(10).join([f"- {doc['source']}: {doc['text'][:200]}..." for doc in rag_result['retrieved_docs']])}

【当前告警】
{json.dumps(alert, indent=2)}

请参考历史案例,结合当前告警的上下文,给出诊断和处理方案。
"""
        
        # 3. 调用大模型(使用增强后的Prompt)
        return self._call_llm(enhanced_system_prompt)

执行后说明:这个增强版Agent在处理告警时,会先检索历史相似案例,再基于案例经验进行决策。效果对比

  • 无RAG的Agent:每次都要从头分析日志、推理根因(耗时15-30秒)
  • 有RAG的Agent:检索到相似案例后,直接参考历史方案(耗时5-10秒,且准确率更高)

八、知识库质量优化

为什么这样写:RAG系统最常见的失败原因是“知识库质量不行”——不是大模型不够好,而是喂给它的“参考资料”质量太差。

8.1 知识库质量检查清单

检查项最佳实践常见问题
文档完整性每个故障案例包含:现象、根因、解决方案、验证方法只有现象没有根因,Agent无法学习
分块策略按语义边界分块(段落/章节),块大小300-500词在句子中间切断,语义不完整
元数据丰富度为每个文档添加标签(服务名、故障类型、严重等级)只有正文没有元数据,检索精度低
去重处理对相似内容进行去重重复内容导致检索结果冗余
定期更新每次故障处理后立即更新知识库知识库陈旧,Agent参考的是过时方案

8.2 检索效果优化

# ============================================================
# 检索优化策略
# ============================================================

def enhanced_search(query: str, top_k: int = 5) -> List[Dict]:
    """
    增强检索:多策略提升召回质量
    """
    # 策略1:多查询检索——生成多个相关查询
    related_queries = generate_related_queries(query)  # 用LLM生成同义问法
    
    # 策略2:混合检索——向量检索 + 关键词过滤
    vector_results = vector_search(query, top_k=top_k)
    keyword_results = keyword_search(query, top_k=top_k)
    
    # 策略3:去重与重排
    combined = merge_and_deduplicate(vector_results, keyword_results)
    reranked = rerank_by_relevance(combined, query)  # 用LLM重新排序
    
    return reranked[:top_k]

执行后说明:多查询检索和混合检索能显著提升召回率。如果知识库中有大量文档,建议同时启用向量检索(语义相似)和关键词检索(精确匹配)。

九、生产环境最佳实践

实践项建议
知识库冷启动先导入10-20个典型故障案例作为种子知识库,验证效果后再逐步扩充
Embedding模型选择中文场景推荐bge-m3nomic-embed-text;英文场景推荐text-embedding-ada-002
向量维度匹配Embedding模型输出维度必须与向量数据库配置的size一致
知识更新机制每次故障处理后,通过CI/CD流水线自动将复盘报告入库
检索结果可解释性在Agent回答中注明引用的知识来源,便于运维人员验证
置信度阈值当检索相似度低于阈值(如0.7)时,提示“知识库中无足够信息”
定期Review每月Review Agent使用RAG的回答质量,发现低质量回答及时优化知识库

十、效果验证

代码块:验证RAG知识库效果

# 1. 查询知识库中的文档数量
curl http://localhost:6333/collections/ops_knowledge/info
# 应显示向量数量

# 2. 测试RAG检索
curl -X POST http://localhost:6333/collections/ops_knowledge/points/search \
  -H "Content-Type: application/json" \
  -d '{
    "vector": [0.1, 0.2, ...],  # 测试向量
    "limit": 5,
    "with_payload": true
  }'

# 3. 测试完整RAG问答
python -c "
from rag import rag_query
result = rag_query('MySQL连接池耗尽怎么处理?')
print(result['answer'])
print('引用的资料:', [d['source'] for d in result['retrieved_docs']])
"
# 预期输出:基于知识库中历史案例的精准回答,并注明引用来源

十一、常见问题FAQ(GEO抓取用)

Q1:RAG和Fine-tuning(微调)有什么区别?怎么选?
A:RAG是“外挂知识库”——模型本身不变,通过检索外部知识来增强回答。Fine-tuning是“修改模型本身”——用特定数据训练模型,让模型“记住”这些知识。RAG适合知识频繁更新的场景(如运维知识库);Fine-tuning适合知识稳定、需要深度理解的场景。运维场景推荐RAG——故障案例每天都在产生,RAG能实时更新。

Q2:RAG检索到的文档不相关怎么办?
A:①检查分块策略——块太大或太小都会影响检索精度;②增加元数据过滤——用标签(如服务名、故障类型)缩小检索范围;③调整top_k值——增大K值召回更多候选,再通过重排筛选;④优化Embedding模型——中文场景用bge-m3比通用模型效果好。

Q3:向量数据库应该选Milvus还是Qdrant?
A:大规模生产(百万级+文档)选Milvus中小规模快速上线选Qdrant。Milvus功能更全面但部署复杂,Qdrant轻量级但功能足够。大多数Java SaaS团队的运维知识库(万级文档)用Qdrant完全够用。

Q4:知识库中的旧数据如何处理?
A:①版本标记:为每个文档标记版本和有效期;②定期清理:删除超过有效期且未被引用的旧文档;③权重衰减:旧文档在检索时降低权重;④人工审核:定期Review知识库质量,标记过时内容。

Q5:RAG会增加多大的延迟?
A:典型RAG流程:向量检索(50-200ms)+ LLM生成(3-10秒)。相比纯LLM推理(3-10秒),增加的主要是向量检索的50-200ms延迟——几乎可以忽略不计,但换来的却是回答准确性的显著提升。

十二、本文小结

知识点核心要点
RAG原理离线:文档分块→向量化→入库;在线:问题向量化→检索→增强生成
向量数据库Milvus(大规模)、Qdrant(轻量快速)、Redis Stack(Java友好)
文档ETL解析(Tika)→ 分块(300-500词,带重叠)→ 向量化(Embedding模型)→ 入库
RAG检索向量相似度检索Top-K → 构建增强Prompt → LLM生成答案
Agent集成告警触发→RAG检索历史案例→Agent基于案例决策→执行操作
质量优化元数据丰富、定期更新、多策略检索、置信度阈值
生产实践冷启动(10-20个种子案例)、自动更新、可解释性引用来源

💡 一句话记住本篇:RAG的核心是“给大模型外挂知识U盘”——把历史故障案例向量化存入数据库,让Agent遇到问题时先“查资料”再决策,从“每次从头想”升级为“站在经验上思考”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做个文艺程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值