在知识库(Knowledge Base)系统中,尤其是结合检索增强生成(RAG,Retrieval-Augmented Generation)的场景下,搜索策略决定了从知识库中检索相关文档或片段的方式。这些策略主要用于处理用户查询,从海量非结构化数据(如文档、文本)中找出最相关的上下文,以供大语言模型(LLM)生成更准确的回答。
以下是三种常见搜索策略的详细解释:
1. 语义搜索(Semantic Search)
- 含义:基于文本的含义和上下文进行检索,而不是单纯匹配关键词。它使用机器学习模型(如嵌入模型,Embeddings)将查询和知识库中的内容转换为高维向量(dense vectors),然后通过向量相似度计算(例如余弦相似度)找出最相似的项。
- 核心技术:向量数据库(如Pinecone、Weaviate、Milvus)中的ANN(近似最近邻)搜索。
- 优势:
- 处理同义词、近义表达、多语言、模糊查询(如“苹果手机”能匹配“iPhone”相关内容)。
- 理解用户意图,即使查询没有精确关键词。
- 缺点:可能忽略特定专有名词、精确术语或罕见关键词(如产品代码、专有名称)。
- 适用场景:自然语言查询、概念相关检索、RAG中的语义理解(如聊天机器人问答)。
2. 混合搜索(Hybrid Search)
- 含义:结合语义搜索和全文/关键词搜索的优势,同时执行两种检索,并通过融合算法(如Reciprocal Rank Fusion, RRF,或相对分数融合)合并结果。通常可调节权重(alpha参数:0为纯关键词,1为纯语义)。
- 核心技术:稀疏向量(sparse vectors,如BM25)+稠密向量(dense vectors)的联合索引。主流向量数据库(如Pinecone、Weaviate、Elastic)均支持。
- 优势:
- 兼顾精确匹配(关键词)和语义理解。
- 提升召回率和准确性,尤其在复杂查询或领域专有术语场景。
- 解决单一策略的局限(如语义搜索漏掉精确ID,全文搜索忽略上下文)。
- 缺点:计算开销稍高,需要调优权重。
- 适用场景:企业级RAG知识库、产品搜索、支持专有名词+自然语言的问答系统。目前被视为RAG检索的最佳实践。
3. 全文搜索(Full-Text Search)
- 含义:传统的关键词匹配搜索,也称为关键字搜索或词汇搜索。基于倒排索引(inverted index),计算查询词在文档中的频率(TF-IDF或BM25算法),返回包含精确或模糊匹配关键词的结果。
- 核心技术:BM25排名算法,支持分词、模糊匹配、布尔查询等。
- 优势:
- 精确、高效处理特定术语、姓名、代码、日期等。
- 对专有词汇和短查询表现优秀。
- 缺点:无法理解语义(如“苹果”可能匹配水果而非公司),对同义词、拼写错误容忍低。
- 适用场景:精确查询、日志搜索、传统搜索引擎(如Elastic的默认模式)。
三者比较(表格形式)
| 策略 | 核心机制 | 优势 | 缺点 | 典型应用场景 |
|---|---|---|---|---|
| 语义搜索 | 向量相似度(dense embeddings) | 理解含义、意图、同义词 | 可能忽略精确关键词 | 自然语言问答、推荐系统 |
| 混合搜索 | 语义 + 关键词融合 | 精确 + 语义,最高准确率 | 计算稍复杂,需要调参 | RAG知识库、企业搜索 |
| 全文搜索 | 关键词匹配(BM25/sparse) | 精确匹配专有术语、高速 | 无语义理解,易受词序影响 | 精确检索、日志/文档搜索 |
在实际知识库构建中(如使用向量数据库),混合搜索越来越成为主流,因为它能显著提升RAG系统的整体性能。如果你的知识库涉及专有领域或混合查询,推荐优先使用混合策略,并通过实验调整权重以优化效果。欢迎评论区留言交流!!!