第 18 期:知识变武器 — Vector Store Tool 与 RAG Agent 实战
从索引到检索
上一期我们完成了"灌入知识"(索引),本期我们实现"提取知识"(检索)。
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:#fff1. 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:#fff2. 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 多角度检索等进阶技术。