• 正文
    • 为什么非得优化检索算法不可?
    • 传统检索方法介绍
    • Hybrid Search简介
    • Reranker:给结果来个“大洗牌”
  • 相关推荐
申请入驻 产业图谱

RAG检索不过关?试试这些优化策略,精准度飙升!

03/26 10:00
81
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

近来,RAG成了大语言模型的“救命稻草”,可让大语言模型回答更准确、更靠谱。可问题来了,很多 RAG 应用的检索系统还是有点“笨”:要么漏掉关键信息,要么抓回一堆无关紧要的“噪声”,搞得最终答案质量参差不齐。

那么,我们该怎么优化 RAG 的检索算法,让它既精准又高效呢?今天就来聊聊这个话题,带你一步步解锁 RAG 检索的“进阶玩法”!

为什么非得优化检索算法不可?

RAG 的工作流程其实很简单:

用户丢出一个问题(Query)

系统去“翻箱倒柜”找相关文档(Retriever)

把文档塞给 LLM,让它生成答案(Generator)

听起来挺顺畅,对吧?但关键就在第二步——检索。如果翻出来的文档不靠谱,哪怕 LLM 再聪明,也只能“巧妇难为无米之炊”。所以,检索算法就是 RAG 的命门,优化它,才能让整个系统“起飞”!

传统检索方法介绍

我们先来看看常见的检索方法,各自有啥优缺点:

BM25(关键词搜索)

优点:擅长精准匹配,像查字典一样适合结构化数据。

缺点:完全不理解语义,同义词、变体词一概不认,漏掉的信息可不少。

向量搜索(语义搜索)

优点:能“读懂”句子意思,非常适合非结构化数据。

缺点:有时候太“脑洞大开”,抓回一堆似是而非的东西,误召回让人头疼。

单独靠 BM25 或向量搜索,总觉得差点火候。要不信息丢了,要不噪声太多。所以,咱们得玩点更高级的——混合搜索(Hybrid Search)!

Hybrid Search简介

混合搜索就是把 BM25 和向量检索“捏”在一起,既能抓住关键词,又能理解语义,简直是“鱼和熊掌兼得”。具体怎么操作呢?

第一步:BM25 出马

根据关键词锁定一批相关文档,精准打击!

第二步:向量搜索补刀

用 Embedding 计算语义相似度,再捞一批“深藏不露”的好文档。

第三步:结果融合

加权融合:给 BM25 和向量搜索的分数加个权重,算个平均值。

交集/并集策略:要么取两者的“重合部分”(求稳),要么全收下(求全),看需求灵活调整。

Reranker:给结果来个“大洗牌”

Hybrid Search 虽然厉害,但偶尔还是会混进一些“杂牌军”。这时候,Reranker 就该登场了!它的任务是把检索结果重新排个序,让最靠谱的文档站到“C位”。

Reranker 怎么玩?

先用 BM25 和向量搜索召回一堆文档。

然后请 Reranker 出马,逐一打分,把最贴合问题的文档顶到前面。

Query Expansion:让查询更“会说话”

有时候,用户的问题太简短或模糊,检索系统“摸不着头脑”。这时候可以用 Query Expansion,帮查询“充实”一下,提高召回率。

扩展招式:

WordNet 同义词扩展:给关键词找“兄弟姐妹”,适合 BM25。

LLM 生成扩展:让大模型直接改写查询,适合语义搜索。

锦上添花的优化小技巧

除了上面的大招,还有几招“小而美”的优化方法:

MetaData 过滤:用文档的时间、分类等元数据,筛掉不相关的“路人甲”。

动态调权重:在 Hybrid Search 里,根据场景调整 BM25 和向量搜索的比重。

多轮对话优化:让用户多聊几句,提供更多上下文,查询自然更精准。

支持Hybrid Search的开源库

目前,有许多支持 Hybrid Search 的开源库,它们结合了 BM25 关键词搜索 和 向量搜索,并支持各种后处理优化(如 Reranking)。以下是几款常见的 Hybrid Search 开源库:

01、LlamaIndex

Github地址:https://github.com/run-llama/llama_index

简介:LlamaIndex 是一个流行的 RAG 框架,支持 Hybrid Search(BM25 + 向量检索),并且能够与 LLM 结合。

特点:

内置 BM25 + 向量检索融合(可调权重)

支持 FAISS、Weaviate、Qdrant、ChromaDB 等

支持 Reranker(如 Cohere Rerank)提升精准度

02、Jina AI

Github地址:https://github.com/jina-ai/serve

简介:Jina AI 提供一个强大的 Hybrid Search 解决方案,支持结合 BM25 和向量搜索,并内置多种 Reranker。

特点:

支持 FAISS、HNSW、Qdrant、Weaviate 等

可结合 Reranker 提高搜索质量

可用于 RAG、推荐系统等场景

03、Weaviate

Github地址:https://github.com/weaviate/weaviate

简介:Weaviate 是一个企业级的向量数据库,内置 Hybrid Search,允许同时使用 BM25 + 向量搜索 进行检索。

特点:

支持 OpenAI、Hugging Face 的 Embedding

内置 BM25 搜索,可进行关键词匹配

支持 GraphQL 查询,可扩展性强

04、Qdrant

Github地址:https://github.com/qdrant/qdrant

简介:Qdrant 是一个高性能的向量数据库,支持 Hybrid Search,能够结合 BM25 + 向量搜索 进行检索。

特点:

轻量级,适合本地或云端部署

支持 REST APIPython SDK

支持 Reranker

05、ElasticSearch

Github地址:https://github.com/elastic/elasticsearch

简介:ElasticSearch 结合 BM25 和 kNN 向量检索,实现 Hybrid Search,适用于企业级应用。

特点:

支持 BM25 关键词搜索 + kNN 语义搜索

可与 OpenAI、Hugging Face 的 Embedding 结合

适用于大规模数据检索

点赞
收藏
评论
分享
加入交流群
举报

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录