首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >知识就是力量!|RAG 让 Agent 变成真正的"IT 专家"

知识就是力量!|RAG 让 Agent 变成真正的"IT 专家"

作者头像
不吃草的牛德
发布2026-05-06 12:48:12
发布2026-05-06 12:48:12
2340
举报
文章被收录于专栏:RustRust

一、没有 RAG 的 Agent 会怎样?

假设用户问了一个问题:

"公司内网的 VPN 连接不上,错误代码 807,怎么办?"

没有 RAG 的回答

Agent:您好,VPN 连接问题可能有多种原因,建议您:

  1. 1. 检查网络连接
  2. 2. 重启 VPN 客户端
  3. 3. 联系 IT 部门

如需更多帮助,请提供详细信息。

问题: 这个回答太泛泛了,没有针对错误代码 807 给出具体解决方案。

有 RAG 的回答

Agent:您好!错误代码 807 通常表示 VPN 连接超时。根据公司 IT 手册,建议您: 解决方案:

  1. 1. 检查防火墙设置,确保允许 VPN 连接
  2. 2. 尝试切换网络(如从 Wi-Fi 切换到有线网络)
  3. 3. 如果使用的是公司 VPN 客户端 v2.3,请更新到最新版本 v2.5

参考文档: IT 手册第 3 章 - VPN 故障排查 如果以上方法都不行,我可以帮您开一个工单。

区别: 有 RAG 的 Agent 能从知识库中找到具体的解决方案,回答更准确、更有用!


二、RAG 是什么?

RAG = Retrieval-Augmented Generation(检索增强生成)

简单说,就是让 AI 在回答问题之前,先去"查资料"。

工作流程

代码语言:javascript
复制
用户提问
    │
    ▼
┌─────────────┐
│  1. 检索    │  ← 在知识库中查找相关内容
└─────────────┘
    │
    ▼
┌─────────────┐
│  2. 整合    │  ← 把找到的内容整合成上下文
└─────────────┘
    │
    ▼
┌─────────────┐
│  3. 生成    │  ← 基于上下文生成回答
└─────────────┘
    │
    ▼
  回答用户

为什么需要 RAG?

问题

RAG 的解决方案

AI 可能"胡说八道"

有知识库支撑,回答有据可查

AI 不知道公司内部信息

把公司文档加入知识库

信息可能过时

更新知识库即可,不用重新训练模型


三、向量检索:怎么"找"到相关内容?

通俗理解

想象你在图书馆找书:

  • 传统方式:按书名、分类找,效率低
  • 向量检索:告诉图书管理员"我要找关于 VPN 错误 807 的内容",他会帮你找到所有相关的书

技术原理

  1. 1. 把文字变成向量
    • • 用 Embedding 模型把文字转换成一串数字(向量)
    • • 相似的内容,向量也相似
  2. 2. 计算相似度
    • • 用户问题和知识库内容都变成向量
    • • 找到最相似的几条内容
  3. 3. 返回结果
    • • 把最相关的内容返回给 Agent

图示

代码语言:javascript
复制
用户问题:"VPN 错误 807 怎么办?"
         │
         ▼
    [Embedding 模型]
         │
         ▼
    问题向量 [0.2, 0.8, 0.1, ...]
         │
         ▼
┌─────────────────────────────────────┐
│           知识库向量存储             │
│  ┌─────────────────────────────┐   │
│  │ VPN 错误 807 解决方案 [0.21, 0.79, 0.12, ...] │ ← 相似度高!
│  │ VPN 配置指南 [0.5, 0.3, 0.7, ...]            │
│  │ 打印机故障排查 [0.1, 0.2, 0.9, ...]          │
│  └─────────────────────────────┘   │
└─────────────────────────────────────┘
         │
         ▼
    返回最相关的内容

四、IT 知识库怎么搭建?

第 1 步:收集数据

需要收集的内容:

数据类型

示例

IT 手册

VPN 配置指南、打印机使用说明

故障记录

历史故障及解决方案

FAQ

常见问题及答案

操作文档

软件安装步骤、系统配置

第 2 步:文档分块

把长文档切成小块,方便检索:

代码语言:javascript
复制
原始文档(5000 字)
    │
    ▼
分成多个小块(每块 200-500 字)
    │
    ├── 块 1:VPN 连接问题排查
    ├── 块 2:VPN 错误代码说明
    ├── 块 3:VPN 配置步骤
    └── ...

第 3 步:生成向量

用 Embedding 模型把每个块变成向量:

代码语言:javascript
复制
"VPN 错误 807 通常表示连接超时..."
         │
         ▼
    [Embedding 模型]
         │
         ▼
[0.21, 0.79, 0.12, 0.35, ...]

第 4 步:存入向量数据库

把向量和原文存入数据库(如 Qdrant、Pinecone、Chroma)。


五、效果对比

场景:用户问"打印机卡纸怎么办?"

❌ 没有 RAG

Agent:打印机卡纸是很常见的问题。建议您:

  1. 1. 打开打印机盖子
  2. 2. 小心取出卡住的纸张
  3. 3. 关闭盖子后重试

如果问题持续,请联系 IT 部门。

✅ 有 RAG

Agent:您好!根据公司 IT 手册,打印机卡纸的处理步骤如下: 公司常用打印机 HP LaserJet Pro 的处理方法:

  1. 1. 打开打印机前盖(不是顶盖)
  2. 2. 取出硒鼓,放在干燥处
  3. 3. 用双手轻轻拉出卡住的纸张,注意不要撕破
  4. 4. 检查是否有碎纸屑残留
  5. 5. 装回硒鼓,关闭前盖

注意事项:

  • • 不要用力拉扯,可能损坏打印机
  • • 如果卡纸位置在后方,请联系 IT 部门(分机 8888)

参考: IT 手册 - 打印机维护章节

区别明显: 有 RAG 的回答更具体、更实用,还包含公司特定的信息!


六、技术实现:Rust 向量存储示例

下面是用 Rust 实现简单向量存储的核心代码:

代码语言:javascript
复制
/// 文档片段
pub struct DocumentChunk {
    pub id: String,
    pub content: String,
}

/// 检索结果
pub struct RetrievalResult {
    pub chunk: DocumentChunk,
    pub score: f32,
}

/// 简单的 RAG 引擎
pub struct SimpleRagEngine {
    chunks: Vec<DocumentChunk>,
}

impl SimpleRagEngine {
    pub fn new() -> Self {
        Self { chunks: Vec::new() }
    }

    /// 添加文档到知识库
    pub fn add_document(&mut self, id: &str, content: &str) {
        self.chunks.push(DocumentChunk {
            id: id.to_string(),
            content: content.to_string(),
        });
    }

    /// 搜索相关内容
    pub fn search(&self, query: &str, top_k: usize) -> Vec<RetrievalResult> {
        // 简化版:实际项目用向量相似度计算
        let mut results = Vec::new();
        for chunk in &self.chunks {
            if chunk.content.contains(query) {
                results.push(RetrievalResult {
                    chunk: chunk.clone(),
                    score: 1.0,
                });
            }
        }
        results.truncate(top_k);
        results
    }
}

实际项目中:

  • • 使用专业的向量数据库(Qdrant、Pinecone)
  • • 使用 Embedding 模型生成向量
  • • 用余弦相似度计算相关性

七、小结

这一篇,我们学习了:

  1. 1. RAG 的作用 - 让 Agent 能查知识库,回答更准确
  2. 2. 向量检索原理 - 把文字变向量,找相似内容
  3. 3. 知识库搭建步骤 - 收集、分块、向量化、存储
  4. 4. 效果对比 - 有 RAG vs 没 RAG 的回答区别

下一篇预告:为什么选 Rust 写 Agent

我们会总结整个项目,展示完整效果,并讲解 Rust 在 Agent 场景的优势。


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-05-01,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 一、没有 RAG 的 Agent 会怎样?
    • 没有 RAG 的回答
    • 有 RAG 的回答
    • 二、RAG 是什么?
      • 工作流程
      • 为什么需要 RAG?
    • 三、向量检索:怎么"找"到相关内容?
      • 通俗理解
      • 技术原理
      • 图示
    • 四、IT 知识库怎么搭建?
      • 第 1 步:收集数据
      • 第 2 步:文档分块
      • 第 3 步:生成向量
      • 第 4 步:存入向量数据库
    • 五、效果对比
      • 场景:用户问"打印机卡纸怎么办?"
    • 六、技术实现:Rust 向量存储示例
    • 七、小结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档