AI Agent混合搜索:关键词+向量双管齐下,召回率翻倍

📘 教程 2026-07-16 约 2 分钟阅读

向量搜索找到意思相近的结果,但可能漏掉精确匹配的关键词。混合搜索两种都用——找不到人,至少找得到字。

💡 你将学到

向量搜索找到意思相近的结果,但可能漏掉精确匹配的关键词。混合搜索两种都用——找不到人,至少找得到字。

📜 目录

一个真实案例:用户搜"MacBook Pro 2026",向量搜索返回了一堆"笔记本电脑"相关的内容——意思没错,但用户想要的只是那个特定产品页。

为什么纯向量搜索不够

向量搜索擅长找"意思相近"的内容,但不擅长"精确匹配"。搜"iPhone 15 价格"时,它可能找到"手机售价"的内容,但漏了包含精确报价的页面。

混合搜索怎么工作

用户搜索 → 同时跑两种检索
    ├─ 关键词搜索(BM25/Elasticsearch)→ 精确匹配
    └─ 向量搜索(Embedding + 相似度)→ 语义匹配
       ↓
合并结果 → 去重 → 重排序 → 给LLM

实现

# 关键词搜索
keyword_results = bm25_search(query)

# 向量搜索
vector_results = vector_store.similarity_search(query)

# 合并(加权平均)
hybrid_results = merge_results(keyword_results, vector_results, alpha=0.3)

总结

混合搜索的配置不复杂,效果却很明显。关键词部分是保险——至少能精确命中。向量部分是扩展——能找到更多相关。

权重调优

混合搜索的关键是关键词检索和向量检索的权重分配。

def hybrid_search(query, alpha=0.3):
    # alpha=0: 纯向量搜索, alpha=1: 纯关键词搜索
    keyword_results = bm25_search(query)
    vector_results = vector_search(query)

    # 加权融合
    combined = {}
    for doc, score in keyword_results:
        combined[doc['id']] = score * alpha
    for doc, score in vector_results:
        combined[doc['id']] = combined.get(doc['id'], 0) + score * (1 - alpha)

    return sorted(combined.items(), key=lambda x: -x[1])[:10]

alpha值需要根据你的数据调。一般0.2-0.4效果最好。

相关文章

相关文章
2026-07-19
AI Agent回复模板:让Agent的回答稳定可靠
2026-07-16
2026年顶级开源RAG框架对比:8大工具
2026-07-22
2026年本地大模型最佳GPU

本站文章由编辑人工撰写,收录的工具均经过实测或公开资料核验。文中链接指向工具官网或 GitHub 仓库,仅作信息参考,不构成付费推广。

💬 评论 (0)

暂无评论,来说两句吧~

登录后评论