究竟什么是混合搜索?
混合搜索是一种检索技术,它结合了向量搜索(语义搜索)和关键字搜索(词汇搜索)的优点,以查找查询最相关结果。- 向量搜索使用嵌入(密集向量)来捕获文本的语义含义,使系统能够找到意义上相似的结果,即使确切的单词不匹配。
- 关键字搜索(BM25、TF-IDF 等)根据查询中确切单词或短语的出现频率进行匹配。
关键字搜索 vs 向量搜索 vs 混合搜索
特征 | 关键字搜索 | 向量搜索 | 混合搜索 |
---|---|---|---|
基于 | 词汇匹配 (BM25, TF-IDF) | 嵌入相似度 (余弦, 点积) | 两者都有 |
优势 | 精确匹配,相关性 | 上下文含义 | 相关性 + 含义的均衡 |
劣势 | 无语义理解 | 错过精确关键字 | 计算量略大 |
示例匹配 | ”chicken soup” = chicken soup | ”chicken soup” = hot broth with chicken | 字面意思和相关概念都匹配 |
最佳用例 | 法律文档,结构化数据 | 聊天机器人,问答,语义搜索 | 多模态,真实的混乱用户查询 |
为什么混合搜索可能更适合您的应用-
- 提高召回率: 捕获纯关键字或向量搜索遗漏的更多相关结果。
- 平衡的精确度: 精确匹配获得优先,同时也包括语义上相关的结果。
- 对歧义具有鲁棒性: 处理拼写变体、同义词和模糊的用户意图。
- 两全其美: 关键字在应该的时候起作用,含义在需要的时候起作用。
Agno 中支持混合搜索的 Vector DB
以下向量数据库通过原生支持或配置支持混合搜索:数据库 | 混合搜索支持 |
---|---|
pgvector | ✅ 是 |
milvus | ✅ 是 |
lancedb | ✅ 是 |
qdrantdb | ✅ 是 |
weaviate | ✅ 是 |
mongodb | ✅ 是 (Atlas Vector Search) |