尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

RAG 检索优化的五种常见手段及实现

RAG 检索优化的五种常见手段及实现
📅 发布时间:2026/6/21 12:14:46

概述

RAG(Retrieval-Augmented Generation)通过检索外部知识来增强大模型的生成效果。本文介绍五种常见的 RAG 检索优化手段,并通过一个纯 Python 实现的示例脚本展示其实现细节。

优化手段

1. 混合检索(Dense + Sparse)

混合检索结合了稀疏检索(如 BM25)和密集检索(如向量检索)的优点,显著提升召回率与准确率。

实现代码片段:

def hybrid_retrieve(query: str, docs: List[str], top_k: int = 3) -> List[Tuple[int, float]]:bm25 = bm25_scores(query, docs)dense = dense_scores(query, docs)fusion = [0.7 * b + 0.3 * d for b, d in zip(bm25, dense)]return sorted(enumerate(fusion), key=lambda x: x[1], reverse=True)[:top_k]

2. 查询构建(Query Construction)

查询构建技术包括拼写纠错、同义词扩展等,用于优化用户输入的查询。

实现代码片段:

def construct_query(raw_query: str) -> str:q = spell_correct(raw_query)  # 拼写纠错q = synonym_expand(q)         # 同义词扩展return q

3. 查询翻译(Query Translation)

将用户问题转化为结构化查询或另一种自然语言,提升检索效果。

实现代码片段:

def translate_to_english(query: str) -> str:mapping = {"混合检索": "hybrid retrieval", "重排序": "re-ranking"}for zh, en in mapping.items():query = re.sub(rf"\b{zh}\b", en, query, flags=re.I)return query

4. 查询路由(Query Routing)

根据查询意图将问题分发到最合适的知识库或检索子系统。

实现代码片段:

def route_query(query: str) -> str:keywords = {"混合": "hybrid", "重排序": "rerank"}lowered = query.lower()for kw, domain in keywords.items():if kw in lowered:return domainreturn "general"

5. 重排序(Re-ranking)

使用更精细的模型对初排结果再次打分,提升结果相关性。

实现代码片段:

def rerank(query: str, candidates: List[Tuple[int, float]]) -> List[Tuple[int, float]]:def tri_gram_overlap(q, d):q3 = set("".join(t) for t in zip(*[iter(q)] * 3))d3 = set("".join(t) for t in zip(*[iter(d)] * 3))return len(q3 & d3) / (len(q3 | d3) + 1e-8)new_scores = []for idx, old_score in candidates:overlap = tri_gram_overlap(query, CORPUS[idx])new_score = 0.7 * old_score + 0.3 * overlapnew_scores.append((idx, new_score))return sorted(new_scores, key=lambda x: x[1], reverse=True)

端到端 Pipeline

将上述优化手段整合为一个端到端的 RAG 检索流程:

def advanced_rag_pipeline(raw_query: str):q1 = construct_query(raw_query)          # 查询构建q2 = translate_to_english(q1)            # 查询翻译domain = route_query(q2)                # 查询路由filtered = [d for d in CORPUS if ...]   # 路由过滤candidates = hybrid_retrieve(q2, filtered)  # 混合检索reranked = rerank(q2, candidates)       # 重排序return reranked

总结

通过混合检索、查询构建、查询翻译、查询路由和重排序五种手段,可以显著提升 RAG 的检索效果。本文的示例代码展示了如何用纯 Python 实现这些优化技术,无需依赖第三方库。

完整代码:https://gitee.com/martinyesz/LearningRAG/blob/master/search_optimization/optimized_rag_demo.py

相关新闻

  • vant
  • Linux中修改主机名并立即生效的完整指南
  • 阿里云国际站NAS:阿里云NAS适合我的数据库备份需求吗? - 教程

最新新闻

  • Windows Cleaner终极指南:5分钟快速上手,彻底解决C盘爆红问题
  • IO流(二)IO流中异常捕获方式、字符集和底层实现以及出现的问题的详细讲解,字符流的详细讲解,字节和字符流的综合练习
  • Nmap数据分析实战:从扫描到安全洞察的自动化方法
  • 2026玉溪防水补漏避坑指南:卫生间/厨房/阳台/屋顶/地下室漏水检测维修全攻略,正规施工+透明报价+口碑榜靠谱服务商推荐 - 安佳防水
  • 3分钟学会在Windows上安装APK文件:告别复杂模拟器的终极指南
  • VBA技术资料498_VBA_防止宏在只读模式下运行

日新闻

  • 2026速览惠州叛逆青少年学校前十大排名名单出炉 - 武汉中职最新信息发布
  • 2026上饶白蚁消杀哪家好?15年本土2大权威白蚁防治公司推荐(金盾虫控/青蚁卫士) - 我叫一
  • 天龙八部单机版终极数据管理工具:5个技巧快速掌握游戏数据编辑

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号