🎯 Intent Search 意图搜索

搜索技术 NLP OpenClaw

"用户说'我想吃点好的',关键词搜索给你返回了'好吃的定义'——而 Intent Search 会问你'中餐还是西餐?人均多少?附近有什么忌口?'。这就是懂你和懂字面的区别。"

📖 什么是 Intent Search?

Intent Search(意图搜索)是一种超越关键词匹配的搜索技术。它不是简单地在文档中查找包含查询词的文本,而是试图理解用户搜索背后的真正意图,然后返回最符合用户需求的结果。

核心能力

  • 语义理解 - 理解查询的深层含义,而非字面匹配
  • 意图分类 - 判断用户是想学习、购买、比较还是导航
  • 查询扩展 - 自动补充相关词、同义词、上下位词
  • 个性化适配 - 基于用户历史调整搜索结果

⚙️ 工作原理

1. 传统搜索 vs 意图搜索

用户查询 传统搜索返回 意图搜索返回
"Python 生成器" 包含"生成器"和"Python"的所有文档 Python generator 教程、示例代码、最佳实践
"便宜的笔记本电脑" 标题含"便宜"的产品页 按价格排序的笔记本列表 + 性价比推荐
"怎么治头疼" 含"治"和"头疼"的页面 症状分析 + 可能原因 + 建议就医

2. 意图分类体系

搜索意图分类(Search Intent Taxonomy):

├── 信息型(Informational)
│   ├── 学习型:如何、教程、指南
│   ├── 事实型:是什么、定义
│   └── 研究型:对比、评测、排名
│
├── 导航型(Navigational)
│   ├── 品牌导航:官网、登录页
│   └── 功能导航:特定功能页面
│
├── 交易型(Transactional)
│   ├── 购买型:价格、下单、优惠
│   ├── 下载型:软件、资源
│   └── 预约型:订餐、挂号
│
└── 商业调查型(Commercial Investigation)
    ├── 对比型:A vs B
    ├── 评测型:值得买吗
    └── 推荐型:哪个好

3. 技术实现流程

用户查询: "OpenClaw 怎么配置定时任务"
        ↓
┌─────────────────────────────────────┐
│  Step 1: 意图识别                     │
│  - 分类:信息型 - 学习型               │
│  - 实体:OpenClaw, 定时任务           │
│  - 动作:配置                         │
└─────────────────────────────────────┘
        ↓
┌─────────────────────────────────────┐
│  Step 2: 查询理解与扩展               │
│  - 同义词:cron, schedule, 定时执行   │
│  - 相关词:automation, workflow      │
│  - 纠错:OpenClaw → OpenClaw         │
└─────────────────────────────────────┘
        ↓
┌─────────────────────────────────────┐
│  Step 3: 语义检索                     │
│  - Embedding 向量化                  │
│  - 向量数据库检索                    │
│  - 相似度排序                        │
└─────────────────────────────────────┘
        ↓
┌─────────────────────────────────────┐
│  Step 4: 结果重排                     │
│  - 意图匹配度打分                    │
│  - 新手友好度提升                    │
│  - 时效性加权                        │
└─────────────────────────────────────┘
        ↓
返回:OpenClaw Cron 配置教程 + 代码示例 + 最佳实践

🔧 OpenClaw 实战应用

OpenClaw Intent Search Skill

OpenClaw 内置了意图搜索能力,可用于构建智能助手、知识库搜索、RAG 系统等:

// OpenClaw Intent Search 示例
const { intentSearch, rag } = require('openclaw');

// 配置意图搜索引擎
const search = intentSearch.create({
    // 意图分类模型
    classifier: {
        model: 'intent-classifier-v2',
        categories: ['informational', 'navigational', 'transactional']
    },
    
    // 语义检索配置
    retriever: {
        provider: 'pinecone',
        index: 'knowledge-base',
        topK: 10,
        threshold: 0.7
    },
    
    // 重排策略
    reranker: {
        model: 'cross-encoder',
        factors: ['relevance', 'freshness', 'popularity']
    }
});

// 执行搜索
async function searchKnowledge(query, userContext) {
    // 1. 意图分析
    const intent = await search.classify(query);
    console.log('识别意图:', intent);
    // { type: 'informational', subType: 'tutorial', entities: ['OpenClaw', '定时任务'] }
    
    // 2. 查询扩展
    const expanded = await search.expand(query, intent);
    console.log('扩展查询:', expanded);
    // ['OpenClaw cron 配置', 'OpenClaw 定时任务教程', 'OpenClaw schedule']
    
    // 3. 语义检索
    const results = await search.retrieve(expanded, {
        filter: { project: userContext.project },
        topK: 5
    });
    
    // 4. 重排序
    const ranked = await search.rerank(results, {
        userLevel: userContext.level, // 'beginner' | 'advanced'
        preferRecent: true
    });
    
    return ranked;
}

意图分类器训练

# 使用 OpenClaw 训练自定义意图分类器
from openclaw.skills import IntentClassifier

# 准备训练数据
training_data = [
    {"query": "OpenClaw 怎么安装", "intent": "informational/tutorial"},
    {"query": "OpenClaw 价格", "intent": "transactional/price"},
    {"query": "OpenClaw 官网", "intent": "navigational/brand"},
    {"query": "OpenClaw 和 LangChain 对比", "intent": "commercial/compare"},
    # ... 更多样本
]

# 训练分类器
classifier = IntentClassifier()
classifier.train(
    data=training_data,
    model="distilbert-base-uncased",
    epochs=10,
    output_path="./models/my-intent-classifier"
)

# 部署到 OpenClaw
classifier.deploy(
    name="my-product-intent",
    endpoint="intent-classification"
)

⚡ 最佳实践

1. 意图识别 + RAG 结合

先识别意图,再选择合适的知识库检索:

  • 信息型 → 教程文档库
  • 交易型 → 产品/价格数据库
  • 导航型 → 站点地图索引

2. 多意图处理

一个查询可能包含多个意图:

"OpenClaw 定时任务怎么做,有免费的吗?"
↓
意图 1: 学习定时任务配置(信息型)
意图 2: 了解价格/免费方案(商业调查型)

→ 返回:教程 + 免费套餐信息
⚠️ 常见坑点:
  • 过度纠错:用户可能就是想搜索"Pythn"这个品牌,不是拼错
  • 意图误判:把购买意图当成信息查询,错过转化机会
  • 忽视上下文:同一个词在不同场景有不同意图
  • 冷启动问题:新用户没有历史,意图判断可能不准

📊 技术栈对比

方案 准确率 延迟 成本
关键词匹配 低(~60%) 极低(<10ms) 免费
BM25 + 规则 中(~75%) 低(~50ms)
Embedding 检索 高(~85%) 中(~100ms)
LLM 意图分析 极高(~95%) 高(~1s)
混合方案 最优(~90%+) 中高 中高

🔗 相关链接