wordpress电影站主题网站建设 培训班 成都

张小明 2026/1/12 0:54:31
wordpress电影站主题,网站建设 培训班 成都,编程入门先学什么scratch,怎样搭建一个网站一、RAG基本知识什么是RAG呢#xff1f;RAG#xff08;Retrieval-Augmented Generation#xff09;#xff1a;是检索增强生成#xff0c;是一种结合信息检索技术和AI内容生成的混合架构#xff0c;可以解决大模型的知识时效性限制和幻觉问题。Spring AI框架实现RAG的两种…一、RAG基本知识什么是RAG呢RAGRetrieval-Augmented Generation是检索增强生成是一种结合信息检索技术和AI内容生成的混合架构可以解决大模型的知识时效性限制和幻觉问题。Spring AI框架实现RAG的两种方式1、Spring AI本地知识库2、Spring AI云知识库服务RAG工作流程核心重要主要包含以下4个步骤1、文档收集和切割2、向量转换和存储3、文档过滤和检索4、查询增强和关联文档收集和切割文档收集从各种来源收集原始文档网页、PDF、数据库文档预处理清洗、标准化文本格式文档切割将长文档分割成适当大小的片段chunks----基于固定大小、语义边界、递归分割策略来分割向量转换和存储向量转换通过Embedding嵌入模型将文本块转换为高维向量表示可以捕获到文本的语义特征向量存储将生成的向量和对应的文本存储到向量数据库支持高效的相似性搜索文档过滤和检索查询处理将用户的问题也转换为向量表示过滤机制基于元数据、关键词、自定义规则进行过滤相似度搜索在向量数据库中查找与问题向量最相似的文档块常用的相似度搜索算法有余弦相似度、欧式距离等上下文组装将检索到的多个文档块组装成连贯的上下文通过Rank模型进行精排然后TopK最相关的文档切片查询增强和关联提示词组装将检索到的相关文档和用户问题组合成增强提示上下文融合大模型基于增强提示生成回答源引用在回答中添加信息来源引用后处理格式化、摘要、其他处理来优化最终输出Embedding模型嵌入模型Embedding Model是一种将复杂的非结构化数据如文本、图像、音频等转换为机器可处理的低维向量表示的技术。通过这种方式嵌入模型能够捕捉数据的语义信息使得相似的数据在向量空间中具有相近的位置。在这个空间中向量的距离表示相似度方向则反映语义关系例如“猫”和“狗”的嵌入向量在空间中距离较近表示它们语义相似。向量数据库并不是只有向量数据库才能存储向量数据只不过和传统数据库不同向量数据库优化了高维向量的存储和检索向量数据库如Milvus、Pinecone一些传统数据库也可以通过安装插件实现向量存储和检索如PGVector、Redis Stack的RediSearch等。粗排、精排、Dify支持混合检索。二、RAG实战Spring AI本地知识库1、文档准备 2、文档读取 3、向量转换和存储 4、查询增强文档准备可以利用AI生成提示词如下帮我生成 3 篇 Markdown 文章主题是【旅游常见问题和回答】3 篇文章的问题分别针对旅游前、旅游中、旅游后内容形式为 1 问 1 答每个问题标题使用 4 级标题每篇内容需要有至少 5 个问题要求每个问题中推荐一个相关的课程附带课程链接在resources目录下新建一个document目录将准备的文档粘贴进去读取文档对准备好的知识库文档进行处理然后保存到向量数据库里。这个过程俗称ETL抽取、转换、加载Spring AI提供了对ETL的支持参考Spring AI的官方文档介绍ETL 管道有三个主要组件按照顺序读取1、DocumentReader实现SupplierListDocument读取文档得到文档列表2、DocumentTransformer实现FunctionListDocument, ListDocument转换文档得到处理后的转换文档3、DocumentWriter实现ConsumerListDocument将文档列表保存到存储中Spring AI提供了很多种DocumentReaders用于加载不同类型的文件我们这边使用MarkdownDocumentReader来读取我们准备的文档。首先引入依赖官方没提可以在Maven中央仓库找到dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-markdown-document-reader/artifactId version1.0.0-M6/version /dependency在dogaiagent包下新建一个rag包在包下建一个TravelAppDocumentLoader类编写以下代码Component Slf4j class TravelAppDocumentLoader { private final ResourcePatternResolver resourcePatternResolver; TravelAppDocumentLoader(ResourcePatternResolver resourcePatternResolver) { this.resourcePatternResolver resourcePatternResolver; } public ListDocument loadMarkdowns() { ListDocument allDocuments new ArrayList(); try { // 这里可以修改为你要加载的多个 Markdown 文件的路径模式 Resource[] resources resourcePatternResolver.getResources(classpath:document/*.md); for (Resource resource : resources) { String fileName resource.getFilename(); MarkdownDocumentReaderConfig config MarkdownDocumentReaderConfig.builder() .withHorizontalRuleCreateDocument(true) .withIncludeCodeBlock(false) .withIncludeBlockquote(false) .withAdditionalMetadata(filename, fileName) .build(); MarkdownDocumentReader reader new MarkdownDocumentReader(resource, config); allDocuments.addAll(reader.get()); } } catch (IOException e) { log.error(Markdown 文档加载失败, e); } return allDocuments; } }生成单元测试进行Debug测试一下SpringBootTest class TravelAppDocumentLoaderTest { Resource private TravelAppDocumentLoader travelAppDocumentLoader; Test void loadMarkdowns() { travelAppDocumentLoader.loadMarkdowns(); } }注意如果下面这行代码报错说明你引入的Document类引错了正确的应该引的是Spring AI的类allDocuments.addAll(reader.get());向量转换和存储将document写入向量数据库在rag包下新建一个TravelAppVectorStoreConfig类编写以下代码Configuration public class TravelAppVectorStoreConfig { Resource private TravelAppDocumentLoader travelAppDocumentLoader; Bean //注意这里的EmbeddingModel导入的是Spring AI的 VectorStore travelAppVectorStore(EmbeddingModel dashscopeEmbeddingModel){ SimpleVectorStore simpleVectorStore SimpleVectorStore.builder(dashscopeEmbeddingModel).build(); ListDocument documentList travelAppDocumentLoader.loadMarkdowns(); simpleVectorStore.add(documentList); return simpleVectorStore; } }查询增强Spring AI通过Advisor特性提供了开箱即用的RAG功能主要是QuestionAnswerAdvisor问答拦截器和RetrievalAugmentationAdvisor检索增强拦截器前者简单易用后者灵活强大。根据Spring AI官方文档引入依赖然后在TravelApp编写以下代码//知识库问答功能 Resource private VectorStore travelAppVectorStore; /** * RAG知识库进行对话 * param message * param chatId * return */ public String doChatWithRag(String message,String chatId){ ChatResponse chatResponse chatClient .prompt() .user(message) .advisors(spec - spec.param(CHAT_MEMORY_CONVERSATION_ID_KEY,chatId) .param(CHAT_MEMORY_RETRIEVE_SIZE_KEY,10)) //开启日志顾问观察效果 .advisors(new MyLoggerAdvisor()) //应用RAG知识库进行问答 .advisors(new QuestionAnswerAdvisor(travelAppVectorStore)) .call() .chatResponse(); String content chatResponse.getResult().getOutput().getText(); log.info(content: {},content); return content; }接着生成单元测试进行测试一下这边的message需要根据前面写的markdown文档特定设计一下测试是否会根据向量知识库回答测试代码如下Test void doChatWithRag() { String chatId UUID.randomUUID().toString(); String message 我的预算不多只有500块钱怎么规划才能穷游3天; String answer travelApp.doChatWithRag(message, chatId); Assertions.assertNotNull(answer); }Spring AI云知识库服务1、准备云知识库 2、RAG开发准备云知识库用别人的知识库平台相比于我们本地的知识库能帮我们拆分切片在阿里云百炼的知识库中创建知识库注意在创建知识库时里面有一个metadata抽取一定要打开它其实就相当于标签打上标签后搜索会更准确比如向量数据库的两个向量一样但是文本内容不一样如果没打上关键字的标签会把两个文本内容都检索到而不是我们要的那个。然后呢要在创建知识库时就打开因为创建完后就开不了了好吧。RAG开发可以根据Spring AI Alibaba文档的Document Retriever有相关介绍和步骤接下来让我们来实现吧在rag包下新建TravelAppRagCloudAdvisorConfig类编写以下代码/** * 自定义基于阿里云知识库服务的 RAG 增强顾问 */ Configuration Slf4j public class TravelAppRagCloudAdvisorConfig { Value(${spring.ai.dashscope.api-key}) private String dashScopeApiKey; Bean public Advisor loveAppRagCloudAdvisor() { DashScopeApi dashScopeApi new DashScopeApi(dashScopeApiKey); final String KNOWLEDGE_INDEX AI旅游规划大师; DocumentRetriever dashScopeDocumentRetriever new DashScopeDocumentRetriever(dashScopeApi, DashScopeDocumentRetrieverOptions.builder() .withIndexName(KNOWLEDGE_INDEX) .build()); return RetrievalAugmentationAdvisor.builder() .documentRetriever(dashScopeDocumentRetriever) .build(); } }注意这边的Value注解是用的字段级别注解不是lombok的类级别注解然后在TravelApp里调用Bean管理的travelAppRagCloudAdvisor补充后的代码如下Resource private Advisor travelAppRagCloudAdvisor; public String doChatWithRag(String message,String chatId){ ChatResponse chatResponse chatClient .prompt() .user(message) .advisors(spec - spec.param(CHAT_MEMORY_CONVERSATION_ID_KEY,chatId) .param(CHAT_MEMORY_RETRIEVE_SIZE_KEY,10)) //开启日志顾问观察效果 .advisors(new MyLoggerAdvisor()) //本地RAG和云知识库开启一个就好了 //应用本地RAG知识库进行问答 .advisors(new QuestionAnswerAdvisor(travelAppVectorStore)) //应用RAG检索增强服务基于阿里云知识库服务进行问答 .advisors(travelAppRagCloudAdvisor) .call() .chatResponse(); String content chatResponse.getResult().getOutput().getText(); log.info(content: {},content); return content; }最后Debug测试运行一下重点总结RAG整个工作流程首先建立原始文档收集处理切割然后进行向量转换存到向量数据库中用户提问时候将用户的问题通过Embedding模型转换成向量再通过一些相似度搜索或条件搜索从向量数据库中把相关的文档检索出来然后通过Rank模型等进行一个排序取出最相关的知识点最后把相关的知识点和用户的问题结合在一起变成一个提示词再输入给AI大模型得到最终的回答。三、RAG知识库进阶RAG核心特性进一步详解1、文档收集和切割整个过程俗称ETL抽取、转换、加载ETL流程通过Document Reader文档读取器读取源文件再通过Document Transformer文档转换器根据需求转换成适合后续处理的格式最后通过Document Writer文档写入器来写入向量数据库等存储Spring AI的文档是个Document对象能存额外的信息Tika是Apache的一个多格式转换库可以把各种文档进行读取加载更灵活Spring AI集成了它引入依赖使用文档读取器不用记了解即可要用到的时候去搜就可以另外Spring AI Alibaba社区也是提供了很多的文档读取器2、向量转换和存储Document Transformer有多种实现类主要分3种1、TextSplitter文本分割器TokenTextSplitter是它的实现类 2、MetadataEnricher元数据增强器 3、ContentFormatter内容格式化工具官方介绍很少Document Writer接口实现了ConsumerListDocument接口Spring AI提供了两种内置的DocumentWriter实现1、FileDocumentWriter将文档写入文件系统 2、VectorStoreWriter将文档写入向量数据库基于PGVector实现向量存储它是一个插件是经典数据库PostgreSQL的扩展为PostgreSQL提供了存储和检索高维向量数据能力。准备PostgreSQL数据库在自己本地或服务器安装这边因为我们是学习就不用准备数据库的这种方法了直接使用现成的云数据库来实操。参考Spring AI官方文档引入依赖版本号到Maven中央仓库找首先进入阿里云PostgreSQL官网的产品搜索云数据库RDS PostgreSQL版开通Serverless版本选择基础版它是按照使用量计费对学习很友好。步骤创建实例--创建账号--创建数据库--安装vector插件--进入数据库连接开通外网地址--打开idea进入Database的PostgreSQL进行登录连接或者直接在云平台的登录数据库直接登录也可以测试一下。dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-starter-vector-store-pgvector/artifactId version1.0.0-M7/version /dependencyyml中编写配置建立数据库连接spring: datasource: url: jdbc:postgresql://改为你的公网地址/yu_ai_agent username: 改为你的用户名 password: 改为你的密码 ai: vectorstore: pgvector: index-type: HNSW dimensions: 1536 distance-type: COSINE_DISTANCE max-document-batch-size: 10000 # Optional: Maximum number of documents per batch注意这里的datasource:url、username、password写到application-local.yml中不然git开源提交会暴露出去然后呢就是这个dimensions是向量维度值越高越精确如果不指定会默认建表前一定要选择好因为建完后就不能改了不过使用这种方式会报错因为我们前面注入了ollama和dashscope两个大模型VectorStore依赖EmbeddingModel对象有两个EmbeddingModel的Beanspring不知道注入哪个。所以我们不用上面那个自动整合的方法使用下面这个更灵活的手动整合的方法来初始化VectorStore!-- 手动整合向量数据库-- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-jdbc/artifactId /dependency dependency groupIdorg.postgresql/groupId artifactIdpostgresql/artifactId scoperuntime/scope /dependency dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-pgvector-store/artifactId version1.0.0-M6/version /dependency引入依赖后在rag包下新建一个PgVectorVectorStoreConfig类根据官方文档编写以下代码Configuration public class PgVectorVectorStoreConfig { Resource private TravelAppDocumentLoader travelAppDocumentLoader; Bean public VectorStore pgVectorVectorStore(JdbcTemplate jdbcTemplate, EmbeddingModel dashscopeEmbeddingModel){ PgVectorStore vectorStore PgVectorStore.builder(jdbcTemplate, dashscopeEmbeddingModel) .dimensions(1536) // Optional: defaults to model dimensions or 1536 .distanceType(COSINE_DISTANCE) // Optional: defaults to COSINE_DISTANCE .indexType(HNSW) // Optional: defaults to HNSW .initializeSchema(true) // Optional: defaults to false .schemaName(public) // Optional: defaults to public .vectorTableName(vector_store) // Optional: defaults to vector_store .maxDocumentBatchSize(10000) // Optional: defaults to 10000 .build(); return vectorStore; } }然后创建对应单元测试复制粘贴官方给的代码测试的代码如下SpringBootTest class PgVectorVectorStoreConfigTest { Resource private VectorStore pgVectorVectorStore; Test void pgVectorVectorStore() { ListDocument documents List.of( new Document(我是小楼很高兴认识你, Map.of(meta1, meta1)), new Document(旅游如何预订景点), new Document(有什么美食推荐, Map.of(meta2, meta2))); // 添加文件 pgVectorVectorStore.add(documents); // 相似度查询 ListDocument results this.pgVectorVectorStore.similaritySearch(SearchRequest.builder().query(我是谁阿巴阿巴).topK(3).build()); } }注意启动时会自动加载PGVectorStore会出现需要1个但是找到2个情况的报错这里需要给启动类如下添加来配合使用SpringBootApplication(exclude { // 为了便于大家开发调试和部署取消数据库自动配置需要使用 PgVector 时把 DataSourceAutoConfiguration.class 删除 DataSourceAutoConfiguration.class }) public class DogAiAgentApplication { public static void main(String[] args) { SpringApplication.run(DogAiAgentApplication.class, args);} }然后如果你要用这个PGVector向量存储来替代原本的本地VectorStore就按以下操作调用然后将TravelApp类里之前的基于本地和基于云知识库服务注释掉Resource private VectorStore pgVectorVectorStore; //本地RAG和云知识库开启一个就好了 //应用本地RAG知识库进行问答 // .advisors(new QuestionAnswerAdvisor(travelAppVectorStore)) //应用RAG检索增强服务基于阿里云知识库服务进行问答 // .advisors(travelAppRagCloudAdvisor) //应用RAG检索增强服务基于PGVector向量存储 .advisors(new QuestionAnswerAdvisor(pgVectorVectorStore))接着在PgVectorVectorStoreConfig类中加上两行加载文档的代码即可//载入文档 ListDocument documents travelAppDocumentLoader.loadMarkdowns(); vectorStore.add(documents); return vectorStore;这里由于没有花钱去开通PGVector给大家演示一下项目里我都注释掉了就不用了就继续用之前的云知识库服务了。了解批处理策略Spring AI实现了批处理策略Batching Strategy将大量文档分解为较小的批次使其适合嵌入模型的最大上下文窗口还可以提高性能更有效的利用API速率限制。3、文档过滤和检索Spring AI官方提供了一个“模块化”的RAG架构就是把整个文档过滤检索拆为检索前、检索时、检索后然后针对每个阶段提供了可自定义的组件1、预检索优化用户查询查询转换-查询重写、查询转换-查询翻译、查询转换-查询压缩查询扩展-多查询扩展2、检索提高查询相关性查询搜索、文档合并3、检索后文档处理优化4、查询增强和关联QuestionAnswerAdvisor和RetrievalAugmentationAdvisor三、RAG最佳实践和调优技巧1、文档收集和切割1、优化原始文档内容结构化、内容规范化、格式标准化2、文档切片结合智能分块算法和人工二次校验让我们的来试试自定义基于token的切词器Spring AI的RAG的ETL Pipeline内提供了在rag包下新建MyTokenTextSplitter类编写以下代码/** * 自定义基于token的切词器 */ Component class MyTokenTextSplitter { public ListDocument splitDocuments(ListDocument documents) { TokenTextSplitter splitter new TokenTextSplitter(); return splitter.apply(documents); } public ListDocument splitCustomized(ListDocument documents) { TokenTextSplitter splitter new TokenTextSplitter(200, 100, 10, 5000, true); return splitter.apply(documents); } }然后在TravelAppVectorStoreConfig类里调用加上这个切词器最终代码如下Resource private MyTokenTextSplitter myTokenTextSplitter; Bean VectorStore travelAppVectorStore(EmbeddingModel dashscopeEmbeddingModel){ SimpleVectorStore simpleVectorStore SimpleVectorStore.builder(dashscopeEmbeddingModel).build(); //加载文档 ListDocument documentList travelAppDocumentLoader.loadMarkdowns(); //自主切分文档 ListDocument splitDocuments myTokenTextSplitter.splitCustomized(documentList); simpleVectorStore.add(splitDocuments); return simpleVectorStore; }当然了这种切词器不好切出来的一整段会被分开不完整。如果使用云服务推荐在创建知识库时使用阿里云百炼的智能切分。3、元数据标注1、在文档手动添加元信息 2、利用DocumentReader批量添加元信息 3、自动添加元信息利用DocumentReader批量添加元信息在TravelAppDocumentLoader类中添加状态标签即可//提取文档状态作为标签 String status filename.substring(filename.length() - 6, filename.length() - 3); MarkdownDocumentReaderConfig config MarkdownDocumentReaderConfig.builder() .withHorizontalRuleCreateDocument(true) .withIncludeCodeBlock(false) .withIncludeBlockquote(false) .withAdditionalMetadata(filename, filename) .withAdditionalMetadata(status, status)4、自动添加元信息Spring AI提供了生成元信息的Transformer组件可以基于AI自动解析关键词并添加到元信息中在rag包下新建MyKeywordEnricher类编写以下代码Component public class MyKeywordEnricher { Resource private ChatModel dashscopeChatModel; ListDocument enrichDocuments(ListDocument documents){ KeywordMetadataEnricher enricher new KeywordMetadataEnricher(this.dashscopeChatModel,5); return enricher.apply(documents); } }然后在TravelAppVectorStoreConfig类里使用它将前面的token自动切分文档注释掉最终代码如下Bean VectorStore travelAppVectorStore(EmbeddingModeldashscopeEmbeddingModel){ SimpleVectorStore simpleVectorStore SimpleVectorStore.builder(dashscopeEmbeddingModel).build(); //加载文档 ListDocument documentList travelAppDocumentLoader.loadMarkdowns(); //自主切分文档// ListDocument splitDocuments myTokenTextSplitter.splitCustomized(documentList); //自动补充关键词元信息 ListDocument enrichedDocuments myKeywordEnricher.enrichDocuments(documentList); simpleVectorStore.add(enrichedDocuments); return simpleVectorStore; }最后Debug测试一下2、向量转换和存储1、向量存储配置2、选择合适的嵌入模型3、文档过滤和检索1、多查询扩展演示多查询扩展在demo包下新建一个rag包再新建一个MultiQueryExpanderDemo类编写以下代码Component public class MultiQueryExpanderDemo { private final ChatClient.Builder chatClientBuilder; public MultiQueryExpanderDemo(ChatModel dashscopeChatModel) { this.chatClientBuilder ChatClient.builder(dashscopeChatModel); } public ListQuery expand(String query) { MultiQueryExpander queryExpander MultiQueryExpander.builder() .chatClientBuilder(chatClientBuilder) .numberOfQueries(3) .build(); ListQuery queries queryExpander.expand(new Query(谁是小楼)); return queries; } }然后编写对应的单元测试进行测试SpringBootTest class MultiQueryExpanderDemoTest { Resource private MultiQueryExpanderDemo multiQueryExpanderDemo; Test void expand() { ListQuery queries multiQueryExpanderDemo.expand(谁是小楼搞快点回答我谢谢); Assertions.assertNotNull(queries); } }获得多查询后可以用于检索文档、或者提取查询文本来改写提示词不过不建议使用多查询扩展这种优化方式因为会增加查询次数和成本不易于量化评估。2、查询重写和翻译查询重写可参考Spring AI Alibaba官方文档实现查询重写器在rag下新建一个QueryRewriter类编写以下代码/** * 查询重写器 */ Component public class QueryRewriter { private final QueryTransformer queryTransformer; public QueryRewriter(ChatModel dashscopeChatModel) { ChatClient.Builder builder ChatClient.builder(dashscopeChatModel); queryTransformer RewriteQueryTransformer.builder() .chatClientBuilder(builder) .build(); } public String doQueryRewriter(String prompt){ Query query new Query(prompt); //执行查询重写 Query transformedQuery queryTransformer.transform(query); //输出重写后的查询 return transformedQuery.text(); } }然后在TravelApp中使用调用查询重写器最终代码如下Resource private QueryRewriter queryRewriter; public String doChat(String message,String chatId){ //查询重写 String rewrittenMessage queryRewriter.doQueryRewriter(message); ChatResponse chatResponse chatClient .prompt() //使用改写后的查询信息 .user(rewrittenMessage)最后Debug测试一下当然要是在云服务中创建时可以勾选多轮会话改写自动将用户的提示词转换为更完整的形式。检索器配置1、在云服务平台创建时设置合理的相似度阈值2、在云服务平台的应用管理中控制返回文档数量召回片段数topK即选相似度最高的K个3、配置文档过滤规则根据场景不同可以为文档添加标签或提取元数据实现配置文档过滤在rag包下新建一个TravelAppRagCustomAdvisorFactory类编写以下代码/** * 创建自定义RAG检索增强顾问工厂 */ public class TravelAppRagCustomAdvisorFactory { public static Advisor createTravelAppRagCustomAdvisorFactory(VectorStore vectorStore, String status){ //过滤特定状态的文档 Filter.Expression expression new FilterExpressionBuilder() .eq(status, status) .build(); DocumentRetriever documentRetriever VectorStoreDocumentRetriever.builder() .vectorStore(vectorStore) .filterExpression(expression) // 过滤条件 .similarityThreshold(0.5) // 相似度阈值 .topK(3) // 返回文档数量 .build(); return RetrievalAugmentationAdvisor.builder() .documentRetriever(documentRetriever) // .queryAugmenter() .build(); } }然后在TravelApp类里添加上RAG检索增强顾问工厂代码如下.advisors( TravelAppRagCustomAdvisorFactory.createTravelAppRagCustomAdvisorFactory( travelAppVectorStore,钱 )最后Debug测试一下。4、查询增强和关联1、错误处理机制主要包括允许空上下文查询即处理边界情况、提供友好的错误提示、引导用户提供必要信息空上下文查询边界情况处理可以使用Spring AI的ContextualQueryAugmenter上下文查询增强来实现或者未启用“允许空上下文”选项系统找不到相关文档会默认改写用户的userTextThe user query is outside your knowledge base.Politely inform the user that you cant answer it.因此我们需要运用工厂模式自定义处理逻辑首先将TravelAppRagCustomAdvisorFactory类的.queryAugmenter()开启然后在rag包下新建一个TravelAppContextualQueryAugmenterFactory类编写以下代码public class TravelAppContextualQueryAugmenterFactory { public static ContextualQueryAugmenter createInstance(){ PromptTemplate emptyContextPromptTemplate new PromptTemplate(你应该输出下面的内 容 抱歉我只能回答旅游规划相关的问题别的没办法帮到您嘞请见谅有问题可以联系人工客服 ); return ContextualQueryAugmenter.builder() .allowEmptyContext(false) .emptyContextPromptTemplate(emptyContextPromptTemplate) .build(); } }如果这里找不到相关的问题时要让它继续按大模型回答就把false改成true。然后在TravelAppRagCustomAdvisorFactory类的.queryAugmenter()运用它代码如下.queryAugmenter(TravelAppContextualQueryAugmenterFactory.createInstance())最后Debug测试一下看看是否回答的是我们设定的结果。测试的结果抱歉我只能回答旅游规划相关的问题别的没办法帮到您嘞请见谅有问题可以联系人工客服。如果项目不用它可以将下面这段代码注释掉// advisors( // TravelAppRagCustomAdvisorFactory.createTravelAppRagCustomAdvisorFactory( // travelAppVectorStore,钱 // )建议除了上述的优化策略外还可以选择合适的大模型、优化提示词模板、开启拒识功能限制只基于知识库回答、调整大模型参数来优化。四、RAG高级知识1、混合检索策略并行混合检索、级联混合检索、动态混合检索2、大模型幻觉事实性幻觉、逻辑性幻觉、自洽性幻觉3、RAG应用评估4、高级RAG架构自纠错RAG、自省式RAG、检索树RAG、多智能体RAG系统创作不易希望能够帮助到你谢谢支持。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

南宁市网站设计建立企业门户网站

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果…

张小明 2026/1/1 9:26:13 网站建设

什么网站专门做自由行的做网站买域名就行了吗

第一章:嵌入式系统量子安全威胁全景随着量子计算技术的快速发展,传统加密体系面临前所未有的挑战。嵌入式系统作为工业控制、物联网设备和智能终端的核心组件,广泛依赖RSA、ECC等公钥密码算法保障通信安全。然而,Shor算法在量子计…

张小明 2026/1/1 12:14:46 网站建设

wordpress 赏排名优化seo

摘要:本文介绍了某金融机构在信创改造与云原生演进过程中,面临全栈可观测性数据复杂、性能瓶颈定位困难、系统扩展性不足等挑战,通过引入 DeepFlow 可观测性分析平台,构建统一采集、全栈国产化适配、函数级性能剖析与智能分析于一…

张小明 2026/1/1 17:09:55 网站建设

网站生成wap专业 网站建设

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 构建一个企业级文档管理系统中的Docx预览模块,需要:1. 与现有系统集成 2. 支持权限控制 3. 保持文档格式 4. 添加水印功能 5. 记录预览日志。请生成完整的解…

张小明 2026/1/11 11:36:43 网站建设

哈尔滨设计优化公司江门网站建设优化

关于【AI邪修破壁行动】 使用AI打破各种知识壁垒,让技术回归通俗。人生有限,别搞弯弯绕,享受简洁之美! 今天我们干翻领域驱动设计。 原文:领域驱动设计(DDD) 1. AI翻译打破语言壁垒 以下是您…

张小明 2026/1/9 10:26:17 网站建设

网站商城定制网站建设图片制作教程

本地系统管理全攻略 在系统管理中,常常会遇到用户和管理员因安装新应用、删除文件以及打乱文件系统,逐渐破坏精心创建的驱动器映像的情况。本文将介绍如何重新组织混乱的系统、保障系统安全以及执行更新,以维持系统和服务器的健康与整洁。 常见位置 微软采用统一的组织结…

张小明 2026/1/9 17:23:09 网站建设