当前位置: 首页 > news >正文

高级RAG技术:查询扩展、自查询、过滤向量搜索与重排序的实现

引言:RAG推理流水线架构概览

在构建生产级RAG系统时,检索步骤是决定生成质量的核心。本章将深入讲解四个高级RAG技术:查询扩展(Query Expansion)、自查询(Self-Querying)、过滤向量搜索(Filtered Vector Search)和重排序(Reranking)。这些技术分别作用于预检索、检索和后检索阶段,显著提升召回率和准确率。

整个RAG推理流水线流程如下:用户输入查询 → 查询扩展(生成多个变体) → 自查询(提取作者ID等元数据) → 过滤向量搜索(对每个变体执行相似度搜索,并应用元数据过滤) → 收集所有结果(N×K个) → 重排序(交叉编码器打分,取Top-K) → 构建提示并调用LLM生成答案。

预检索优化:查询扩展

问题

传统RAG使用单个向量表示查询,只能覆盖嵌入空间的局部区域。当查询的语义不够丰富时,容易遗漏相关文档。

解决方案

利用LLM生成原始查询的多个变体,每个变体从不同角度刻画同一信息需求。嵌入这些变体后,搜索范围扩大,召回率提升。

代码实现

首先定义QueryExpansionTemplate,用于构建生成多查询的提示模板:

fromlangchain.promptsimportPromptTemplatefrom.baseimportPromptTemplateFactoryclassQueryExpansionTemplate(PromptTemplateFactory):prompt:str="""You are an AI language model assistant. Your task is to generate {expand_to_n} different versions of the given user question to retrieve relevant documents from a vector database. By generating multiple perspectives on the user question, your goal is to help the user overcome some of the limitations of the distance-based similarity search. Provide these alternative questions separated by '{separator}'. Original question: {question}"""@propertydefseparator(self)->str:return"#next-question#"defcreate_template(self,expand_to_n:int)->PromptTemplate:returnPromptTemplate(template=self.prompt,input_variables=["question"],partial_variables={"separator":self.separator,"expand_to_n":expand_to_n,},)

接着实现QueryExpansion类,继承RAGStep基类:

fromlangchain_openaiimportChatOpenAIfromllm_engineering.domain.queriesimportQueryfromllm_engineering.settingsimportsettingsfrom.baseimportRAGStepfrom.prompt_templatesimportQueryExpansionTemplateclassQueryExpansion(RAGStep):
http://www.jsqmd.com/news/1193472/

相关文章:

  • Beyond Compare 5授权逆向工程:从RSA加密到密钥生成的全链路技术解析
  • 告别尴尬时刻:5分钟搞定Windows防休眠,让你的电脑永远在线
  • 专科能申请EMBA吗?报考选购避坑攻略+主流院校横向推荐
  • 掌握AI股票分析:go-stock的K线数据与市场资讯实战指南
  • Pixhawk振动阻尼实战指南:从IMU噪声到EKF2稳定性的全链路治理
  • 上海百达翡丽中国官方售后服务网络全解析 | 官网认证地址及电话全新启用(2026 年 7 月最新) - 百达翡丽售后服务官网
  • LingBot 到底发布了什么:一文看懂 VLA、VA、World 与 Video 四条路线
  • 【STM32】F103 时钟树配置实战:从理论到代码实现
  • Reloaded-II终极解决方案:彻底根治.NET运行时环境配置失败问题
  • 重构数字工作流:构建可重复、可验证的现代开发工作区
  • 计算机毕业设计之jsp校园二手商品交易网站
  • 3分钟上手:用C++单文件库构建高性能HTTP服务器与客户端
  • 7天构建企业级AI智能体开发平台:GPT-Computer-Assistant实战指南
  • RISC-V开发板CF5010RBT60入门与物联网应用实战
  • 真力时中国官方售后服务中心|服务电话及全部网点地址权威信息公示(2026年7月最新) - 亨得利官方服务中心
  • 2026 厦门湖里探店|易奢福名包回收凭什么火?中检鉴定师坐镇 + 500 + 实体店 - 奢侈品回收实体店
  • RimSort终极指南:如何快速解决启动崩溃问题
  • 如何三步搞定Zotero中文文献管理:茉莉花插件的终极解决方案
  • 沁恒CH585开发板RISC-V物联网开发实战
  • ChatGPT技术文档翻译质量断崖式提升:基于BERTScore+人工双轨验证的72小时交付SOP(附可复用prompt模板)
  • 游戏内文字交流技术:OCR识别与实时翻译集成方案
  • 45岁读EMBA晚吗?资深高管选购避坑指南,高性价比项目推荐
  • 如何安全安装大气层系统:Switch破解的完整简单指南
  • 3DGS Render:在Blender中重塑点云渲染工作流的完整解决方案
  • 计算机毕业设计之jsp校园二手商品交易系统的设计与实现
  • 深度解析zteOnu:中兴光猫工厂模式解锁工具的技术实现与实战指南
  • EEPROM原理与应用:单片机数据存储技术详解
  • 如何彻底解决涂鸦设备云端依赖问题:Tuya-Local完整实战指南
  • 为什么你的Dify工作流图片总是显示失败?3个实战方案彻底解决Markdown图片显示难题
  • 劳力士维修售后中心珠海信息核验指南(2026年7月):如何辨别授权服务地址与非正规渠道发布的“网点汇总” - 劳力士服务维修中心