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

RAG核心特性:查询增强和关联

本文为个人学习笔记整理,仅供交流参考,非专业教学资料,内容请自行甄别。

文章目录

  • 概述
  • 一、RetrievalAugmentationAdvisor
  • 二、ContextualQueryAugmenter


概述

  查询增强和关联是在RAG文档检索和过滤后执行的操作,也是RAG的核心特性之一。其利用了Spring AI的Advisor增强器的特性,主要包括了:

  • QuestionAnswerAdvisor:从向量存储中检索问题的上下文并添加到提示的用户文本中。
  • RetrievalAugmentationAdvisor:遵循模块化 RAG 体系结构实现常见检索增强生成 (RAG) 流的Advisor。提供了更多的定制选项。

  以及ContextualQueryAugmenter空上下文处理器。其中QuestionAnswerAdvisor是最常见的用法,此前的案例中都是使用该种Advisor作为向量数据库的增强器,执行文档检索和过滤的操作,本篇重点介绍后两种。

在这里插入图片描述
在这里插入图片描述

一、RetrievalAugmentationAdvisor

  RetrievalAugmentationAdvisor提供了更多的定制功能,其基本的使用案例:

/*** 测试RetrievalAugmentationAdvisor增强器** @param text* @param chatId* @return*/public String testRetrievalAugmentationAdvisor(String text, String chatId) {RetrievalAugmentationAdvisor retrievalAugmentationAdvisor = RetrievalAugmentationAdvisor.builder().documentRetriever(VectorStoreDocumentRetriever.builder().similarityThreshold(0.50).vectorStore(vectorStore).build()).build();ChatResponse response = chatClient.prompt().user(text).advisors(spec -> spec.param(CHAT_MEMORY_CONVERSATION_ID_KEY, chatId).param(CHAT_MEMORY_RETRIEVE_SIZE_KEY, 10)).advisors(new MyLogAdvisor()).advisors(retrievalAugmentationAdvisor).call().chatResponse();return response.getResult().getOutput().getText();}

  RetrievalAugmentationAdvisor还支持加入文档过滤和检索的增强,比如RewriteQueryTransformer查询重写:

    /*** 测试RetrievalAugmentationAdvisor增强器** @param text* @param chatId* @return*/public String testRetrievalAugmentationAdvisor(String text, String chatId) {RetrievalAugmentationAdvisor retrievalAugmentationAdvisor = RetrievalAugmentationAdvisor.builder().queryTransformers(RewriteQueryTransformer.builder().build()).documentRetriever(VectorStoreDocumentRetriever.builder().similarityThreshold(0.50).vectorStore(vectorStore).build()).build();ChatResponse response = chatClient.prompt().user(text).advisors(spec -> spec.param(CHAT_MEMORY_CONVERSATION_ID_KEY, chatId).param(CHAT_MEMORY_RETRIEVE_SIZE_KEY, 10)).advisors(new MyLogAdvisor()).advisors(retrievalAugmentationAdvisor).call().chatResponse();return response.getResult().getOutput().getText();}

二、ContextualQueryAugmenter

  ContextualQueryAugmenter是空上下文处理器, 默认情况下RetrievalAugmentationAdvisor是不支持检索的上下文为空的。但是如果用户想要查询到知识库以外的内容,可以通过ContextualQueryAugmenter增强器实现:

    /*** 测试ContextualQueryAugmenter增强器** @param text* @param chatId* @return*/public String testContextualQueryAugmenter(String text, String chatId) {RetrievalAugmentationAdvisor retrievalAugmentationAdvisor = RetrievalAugmentationAdvisor.builder().documentRetriever(VectorStoreDocumentRetriever.builder().similarityThreshold(0.50).vectorStore(vectorStore).build())//构建ContextualQueryAugmenter增强器,设置允许上下文为空.queryAugmenter(ContextualQueryAugmenter.builder().allowEmptyContext(true).build()).build();ChatResponse response = chatClient.prompt().user(text).advisors(spec -> spec.param(CHAT_MEMORY_CONVERSATION_ID_KEY, chatId).param(CHAT_MEMORY_RETRIEVE_SIZE_KEY, 10)).advisors(new MyLogAdvisor()).advisors(retrievalAugmentationAdvisor).call().chatResponse();return response.getResult().getOutput().getText();}

  本地RAG知识库提供的文档,都是和猫咪的选择有关的,上面的设置完成后,再去提问一个无关的问题,比如谁是狗
在这里插入图片描述
  谁是狗这样的问题,在RAG知识库中是搜索不到的。

在这里插入图片描述
  通过ContextualQueryAugmenter的增强,可以给出回答:
在这里插入图片描述
  关闭ContextualQueryAugmenter增强,则无法给出回答:
在这里插入图片描述
  ContextualQueryAugmenter也可以自定义提示模板:

        RetrievalAugmentationAdvisor retrievalAugmentationAdvisor = RetrievalAugmentationAdvisor.builder().documentRetriever(VectorStoreDocumentRetriever.builder().similarityThreshold(0.50).vectorStore(vectorStore).build())//构建ContextualQueryAugmenter增强器,设置允许上下文为空.queryAugmenter(ContextualQueryAugmenter.builder().allowEmptyContext(false).emptyContextPromptTemplate(new SystemPromptTemplate("你应该输出以下的内容:抱歉,该问题我无法回答,请另请高明")).build()).build();

在这里插入图片描述


http://www.dtcms.com/a/434756.html

相关文章:

  • Spring 中事务的实现
  • 苏州哪家公司做网站网站布局是什么
  • AI智能体在研究分析中的仿真应用:预测、生存与建构——情绪是基于趋利避害的预测机制吗?
  • 12.排序(上)
  • Java bean 数据校验
  • 级数敛散性判别:泰勒展开与等价无穷小的正确使用
  • gRPC从0到1系列【13】
  • 笔记本 光驱 的内部结构及用法: 应急系统启动 (恢复) 光盘 (DVD+R/RW)
  • DirectX Repair下载安装教程(附安装包)2025最新版(DirectX Repair V4.5增强版+dll修复工具)
  • 26考研 | 王道 | 计算机组成原理 | 二、数据的表示和运算
  • 上海网站推河北关键词排名推广
  • 游戏代练经济矩阵计算器
  • K8s学习笔记(十一) service
  • 【MCU】【STM32】基于STM32CubeMX+CLion的STM32开发环境
  • 十堰市住房和城乡建设厅官方网站王野天天
  • 【机器人】SG-Nav 分层思维链H-CoT | 在线分层3D场景图 | 目标导航
  • 全面保护隐私的开源个人知识管理工具——SiYuan
  • html5网站开发参考文献无锡网站制作哪家值得信赖
  • python简易程序跑NLPIR模型
  • GPIO 子系统和 pinctrl 子系统
  • 站酷网首页wordpress内容页显示tag
  • linux下的进程间和线程间通信
  • 网站小图片素材商务网站大全
  • Java 集合 “Map(1)”面试清单(含超通俗生活案例与深度理解)
  • 哔哩哔哩国际版分享 | 白色版 ,蓝色概念版
  • 《P2758 编辑距离》
  • unserialize反序列化漏洞
  • 美工网站设计收费网站中的动态统计图如何做
  • LabVIEW谐波失真分析
  • 秦皇岛市网站制作公司民宿可以在哪些网站做推广