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

网站编程游戏充值网站怎么做

网站编程,游戏充值网站怎么做,深圳华强北手表,响应式网站切图SpringAI框架中的RAG模块详解及应用示例 RAG(Retrieval-Augmented Generation)可以通过检索知识库,克服大模型训练完成后参数冻结的局限性,携带知识让大模型根据知识进行回答。SpringAI框架提供了模块化的API来支持RAG&#xff0…

SpringAI框架中的RAG模块详解及应用示例

RAG(Retrieval-Augmented Generation)可以通过检索知识库,克服大模型训练完成后参数冻结的局限性,携带知识让大模型根据知识进行回答。SpringAI框架提供了模块化的API来支持RAG,主要包括QuestionAnswerAdvisorRetrievalArgumentAdvisor

QuestionAnswerAdvisor

QuestionAnswerAdvisor主要提供便捷简单的RAG流功能,只需指定一些简单的参数即可。例如,假设数据已加载到vectorStore中,可以通过以下方法进行RAG知识库检索:

QuestionAnswerAdvisor questionAnswerAdvisor = QuestionAnswerAdvisor.builder(vectorStore).searchRequest(SearchRequest.builder().similarityThreshold(0.5) // 只返回相似度高于0.5的结果.topK(3) // 只返回前三个结果.filterExpression(newFilterExpressionBuilder().eq("a", "b").build()) // 只检索 a==b 的文档.build()).build();ChatClient chatClient = ChatClient.builder(openAiChatModel).defaultOptions(OpenAiChatOptions.builder().model("gpt-3.5-turbo").build()).build();ChatResponse response = chatClient.prompt().advisors(questionAnswerAdvisor).user(u -> u.text("你好")).call().chatResponse();

如果构造advisor时未指定过滤条件,构建请求时也能动态添加:

chatClient.prompt().user(u -> u.text("hello")).advisors(a -> a.param(QuestionAnswerAdvisor.FILTER_EXPRESSION, "a==b")).call().chatResponse();

这里的lambda表达式中的a是一个AdvisorContext.Builder实例,param()用于向AdvisorContext中添加参数,这些参数在advisor链中共享,advisor会自动调用相应方法完成知识库检索和拼接。

RetrievalArgumentAdvisor

RetrievalArgumentAdvisor提供了更丰富的功能,允许程序员定义整个RAG过程的操作,包括检索前预处理、检索、检索后处理以及生成。

简单RAG实现示例

Advisor retrievalAugmentationAdvisor = RetrievalAugmentationAdvisor.builder().documentRetriever(VectorStoreDocumentRetriever.builder().similarityThreshold(0.50).vectorStore(vectorStore).build()).build();String answer = chatClient.prompt().advisors(retrievalAugmentationAdvisor).user(question).call().content();

高级RAG流程

检索前预处理
  1. CompressionQueryTransformer:对用户提问进行压缩,适用于对话历史较长且当前问题基于上下文的场景。示例:
Query query = Query.builder().text("And what is its second largest city?").history(newUserMessage("What is the capital of Denmark?"),newAssistantMessage("Copenhagen is the capital of Denmark.")).build();QueryTransformer transformer = CompressionQueryTransformer.builder().chatClientBuilder(chatClientBuilder).build();Query transformedQuery = transformer.transform(query);

也可由advisor自动完成:

CompressionQueryTransformer compressionQueryTransformer = CompressionQueryTransformer.builder().chatClientBuilder(ChatClient.builder(openAiChatModel)).build();RetrievalAugmentationAdvisor retrievalAugmentationAdvisor = RetrievalAugmentationAdvisor.builder().documentRetriever(VectorStoreDocumentRetriever.builder().build()).queryTransformers(compressionQueryTransformer).build();ChatClient.builder(openAiChatModel).build().prompt().user(u -> u.text("中国第二大的城市是哪里")).messages(newUserMessage("中国首都城市是哪里")).messages(newAssistantMessage("北京")).advisors(retrievalAugmentationAdvisor).call().chatResponse();
  1. RewriteQueryTransformer:使用大语言模型重写用户输入,适合语义模糊或冗长的查询。
QueryTransformer queryTransformer = RewriteQueryTransformer.builder().chatClientBuilder(chatClientBuilder).build();
  1. TranslationQueryTransformer:翻译用户查询为目标语言(通常为嵌入模型支持的语言)。
QueryTransformer transformer = TranslationQueryTransformer.builder().chatClientBuilder(chatClientBuilder).targetLanguage("english").build();
  1. MultiQueryExpander:多查询扩展器,将原始查询扩展为多个不同形式的查询以获取更多相关结果。
MultiQueryExpander expander = MultiQueryExpander.builder().chatClientBuilder(chatClientBuilder).numberOfQueries(3) // 生成三个查询.includeOriginal(false) // 不包含原始查询.build();
检索

负责从数据库中检索最相关文档。

VectorStoreDocumentRetriever vectorStoreDocumentRetriever = VectorStoreDocumentRetriever.builder().vectorStore(vectorStore).topK(4) // 返回最相关的4个.filterExpression(newFilterExpressionBuilder().eq("a", "b").build()) // 过滤条件:a==b.similarityThreshold(0.4) // 只返回相关度大于0.4的文档.build();List<Document> documents = vectorStoreDocumentRetriever.retrieve(newQuery("What is the main character of the story?"));

同样可以交由advisor自动完成并最终展示结果。

检索后处理

解决文档内容过多导致的信息丢失、模型上下文长度限制、内容噪声或重复问题。常见操作包括根据相关性重新排序文档、删除无关或重复文档、压缩文档内容以减少干扰。

生成

根据用户输入和最终检索到的文档生成回答。

ContextualQueryAugmenter将检索到的相关内容拼接到用户提问中,示例:

ContextualQueryAugmenter contextualQueryAugmenter = ContextualQueryAugmenter.builder().allowEmptyContext(false) // 是否允许检索提供空内容.build();
  • .allowEmptyContext(false)时,若无检索内容,模型通常不会回答或回答不知道。
  • .allowEmptyContext(true)时,即使检索内容为空,也会尝试回答。

ContextualQueryAugmenter主要做以下工作:

  • 检查检索结果是否为空
  • 非空时,拼接检索结果字符串并注入提示词模板变量(如{{retrievedDocs}}
  • 为空且.allowEmptyContext(false)时,设置空变量并指示模型“不要根据已有知识回答”
  • 为空且.allowEmptyContext(true)时,放行不插入上下文内容

以上即为SpringAI框架中RAG模块的详细介绍及使用示例,涵盖从简单到复杂的多种应用场景,帮助开发者灵活构建基于知识库的问答系统。

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

相关文章:

  • 做logo有哪些网站简单网站建设报价单
  • 建设网站要不要投资钱京东官方网上商城
  • 随州建设网站如何用国外网站做头条
  • 关于营销型网站建设的建议阳江东莞网站建设
  • 招远网站建设公司报价乔括云智能建站
  • 网站域名空间租用合同新郑做网站优化
  • 网站首页动画怎么做的一个公司做网站需要注意什么条件
  • 怎么做淘宝客手机网站兰州网站建设方案详细
  • 莆田做网站公司电话wordpress 制作portfolio
  • 东莞网站设计开发网络对企业管理的影响
  • 网站排名掉了怎么办广西壮族自治区招生考试院
  • 长春建站移动应用开发是什么
  • 在哪里申请域名西安seo关键词排名优化
  • 做网站网页的软件是绿色的图标什么云计算网站建设
  • 论坛网站模块区网站建设
  • 计算机应用技术网站建设网站设计策划书怎么写
  • 厂字型网页网站ps怎么制作网页设计
  • 企业营销网站的建设下载源码就能建网站吗
  • 成都网站建设价格表外贸公司如何运营
  • 淄博市沂源县城乡建设局网站网页编辑与网站编辑
  • 响应式网站一般做几个版本怎么给设计网站推广
  • 天河区建设网站织梦通用seo网站模板
  • 江阴企业网站制作网站建设招标书组成
  • 怎么自己免费做网站阅文集团旗下哪个网站做的最好
  • 移动端响应式网站怎么做知名品牌策划公司
  • 如何用模板建网站网站备案需要资料
  • 广告联盟网站建设爱站seo工具包官网
  • 西安酒店网站制作无锡优化网站公司
  • 怎么上传网站图片的链接网店代运营网
  • wordpress能建什么网站贝壳企业网站管理系统