第 18 期:知识变武器 — Vector Store Tool 与 RAG Agent 实战

⏱ 预计阅读 8 分钟 更新于 2026/4/9

从索引到检索

上一期我们完成了"灌入知识"(索引),本期我们实现"提取知识"(检索)。

graph TB
    subgraph "Ep 17: 索引管道 (写入)"
        D[📄 文档] --> V[💾 向量数据库]
    end
    
    subgraph "Ep 18: 检索管道 (读取)"
        Q[❓ 用户提问] --> S[🔍 相似度搜索]
        S --> V
        V --> R[📑 相关段落]
        R --> LLM[🤖 LLM 生成回答]
    end
    
    style S fill:#f59e0b,stroke:#d97706,color:#fff
    style LLM fill:#ff6d5b,stroke:#e55a4e,color:#fff

1. RAG Agent 完整工作流

graph TB
    CT[💬 Chat Trigger] --> Agent[🤖 AI Agent]
    
    subgraph "Agent 子节点"
        Agent --> Model[🧠 GPT-4o]
        Agent --> Mem[💾 Window Buffer Memory]
        Agent --> VSTool[🔍 Vector Store Tool
连接 Qdrant] end subgraph "Vector Store Tool 内部" VSTool --> Emb[🧮 OpenAI Embeddings] VSTool --> QD[💾 Qdrant Vector Store
集合: knowledge-base] end style Agent fill:#ff6d5b,stroke:#e55a4e,color:#fff style VSTool fill:#22c55e,stroke:#16a34a,color:#fff

2. Vector Store Tool 配置

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// Vector Store Tool 节点配置 (作为 Agent 的子节点)
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

// 🏷️ Tool Name: "search_knowledge_base"
// 📝 Tool Description:
// """
// 在 AgentUpdate 的产品知识库中搜索信息。
// 当用户询问产品功能、定价、使用教程、故障排查等问题时使用。
// 输入用户问题的关键词或完整问题,返回最相关的文档片段。
// 不要在用户闲聊或问通用知识时使用此工具。
// """

// 🔧 Vector Store 配置:
// - Type: Qdrant Vector Store
// - Collection: "knowledge-base"      // 与索引时一致
// - Top K: 4                          // 返回最相关的 4 个文档块
// - Score Threshold: 0.7              // 相似度 < 0.7 的不返回 (过滤低相关)

// 🧮 Embedding Model (子节点):
// - Provider: OpenAI
// - Model: text-embedding-3-small     // ⚠️ 必须与索引时用的模型一致!

3. 完整对话时序

sequenceDiagram
    participant User as 👤 用户
    participant Agent as 🤖 AI Agent
    participant LLM as 🧠 GPT-4o
    participant VST as 🔍 Vector Store Tool
    participant QD as 💾 Qdrant
    
    User->>Agent: "AgentUpdate 支持哪些支付方式?"
    
    Agent->>LLM: 分析意图 + 可用工具列表
    Note over LLM: 这是产品相关问题
→ 使用 search_knowledge_base LLM-->>Agent: Tool Call: search_knowledge_base("支付方式") Agent->>VST: 执行检索 VST->>VST: "支付方式" → Embedding 向量 VST->>QD: 向量相似度搜索 (Top-4) QD-->>VST: 返回 4 个最相关文档块 Note over VST: 匹配结果:
1. "支持微信/支付宝/信用卡..." (0.92)
2. "企业客户可使用银行转账..." (0.88)
3. "定价页面说明..." (0.81)
4. "发票开具流程..." (0.73) VST-->>Agent: 返回 4 段检索结果 Agent->>LLM: 用户问题 + 检索到的 4 段文档 Note over LLM: 基于真实文档内容
生成准确回答 LLM-->>Agent: "AgentUpdate 支持以下支付方式:
1. 微信支付
2. 支付宝
3. 信用卡 (Visa/Mastercard)
企业客户还可使用银行转账。" Agent-->>User: 完整、准确的回答 ✅

4. System Prompt 中的 RAG 指令

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// RAG Agent 专用 System Prompt 增强
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

const systemPrompt = `
你是 AgentUpdate 的 AI 客服,你的知识来源于产品文档库。

## 核心规则
1. 如果知识库中有相关内容 → 基于检索结果回答
2. 如果知识库中没有 → 诚实告知"我的文档中暂时没有这方面的信息"
3. **绝对禁止**编造不存在于知识库中的信息

## 回答格式
- 先给出直接答案
- 然后引用文档来源: "根据《XX文档》..."
- 如果检索到多个相关段落,综合回答

## 检索策略
- 用户问题含关键词 → 用关键词搜索
- 用户问题比较模糊 → 尝试多次搜索,用不同角度的关键词
`;

5. RAG 质量优化技巧

优化方向 技巧 效果
提升检索精度 调高 Score Threshold (0.7→0.8) 过滤低质量匹配
增加召回率 提高 Top-K (4→8) 更多候选段落供 LLM 参考
改善分块质量 减小 Chunk Size (800→500) 更精确的语义单元
元数据过滤 检索时限定 category 缩小搜索范围
混合检索 向量搜索 + 关键词搜索 全文+语义双重匹配

下一步

Ep 19 将深入 RAG 高级优化:Hybrid Search、Re-Ranking 重排序、Multi-Query 多角度检索等进阶技术。