Command Palette

Search for a command to run...

0
Blog
PreviousNext

Agent 的 RAG 不只是向量搜索:混合检索架构实践

> Skill 检索本身就是一个 RAG 系统——用检索到的 skill 增强 agent 的生成能力。

Skill 检索本身就是一个 RAG 系统——用检索到的 skill 增强 agent 的生成能力。

1. 双路检索

Query
  │
  ├─→ Structural Recall (结构化召回)
  │   ├─ 实体匹配:query 中的关键词 vs skill 的 provides/requires/tags
  │   ├─ 实体扩展:seed entity → cosine 近邻 → 候选集
  │   └─ 评分:base_score + overlap_weight × min(entity_overlap, cap)
  │
  └─→ Vector Recall (向量召回)
      ├─ Query embedding (384d) vs 所有 skill embeddings
      ├─ Cosine similarity > threshold → 候选集
      └─ 评分:similarity × vector_weight
  │
  └─→ Fusion
      ├─ Both paths hit → structural + vector + both_boost
      ├─ Only structural → structural score
      └─ Only vector → vector score
      └─ Sort by score → top-k

2. Embedding 方案

# 模型:paraphrase-multilingual-MiniLM-L12-v2 (384维,CPU 可跑)
# 文本构建:name + description + tags + triggers + body_preview
text = f"{skill['name']} {skill['description']} {' '.join(skill['tags'])} ..."
embedding = model.encode(text, normalize_embeddings=True)
 
# 降级策略:sentence-transformers 不可用 → hash-based embedding
# MD5 分桶 + 符号位 → 384 维稀疏向量 → cosine 仍可用

3. 为什么是"混合"而非"纯向量"

场景纯向量混合
"部署服务器" → server-operations✅ 语义匹配✅ + tag 精确匹配
"code-review" → code-review✅ 但可能匹配 code-style✅ provides 精确命中
"查错 debug" → debugging-toolkit✅ + when_to_apply 匹配
拼写错误 "dubug" → debugging❌ embedding 偏移✅ 结构化召回兜底

结论:结构化召回处理精确匹配和容错,向量召回处理语义泛化,两者互补。