资讯详情

第二章:4、RAG基础入门指南

📅 2026/10/13 10:14:15 | 华诺云谱 👁 阅读
第二章:4、RAG基础入门指南
一、RAG完整链路流程概览RAGRetrieval-Augmented Generation的主要流程如下Indexing Pipeline离线文档处理文档加载文本分块Embedding向量化存入向量库Retrieval检索增强用户提问问题向量化相似度检索召回相关文档Generation生成检索结果拼入 Prompt大模型生成答案二、RAG完整流程示意用户提问↓问题向量化Embedding↓向量库相似度检索↓召回 TopK 相关文档↓拼入 Prompt上下文 问题↓大模型生成答案三、RAG实现方式1. 手动编排开发者需自行完成检索、拼接上下文、调用大模型三个步骤。2. 自动编排Spring AI 推荐方式Spring AI 2.0 提供 RetrievalAugmentationAdvisor自动编排检索和增强流程。四、关键代码示例1. pom.xml 依赖Spring AI BOMdependencyManagement dependencies dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-bom/artifactId version2.0.1/version typepom/type scopeimport/scope /dependency /dependencies /dependencyManagementRAG所需依赖dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-rag/artifactId /dependency dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-starter-model-openai/artifactId /dependency2. 手动编排配置Configuration public class PromptClientConfiguration { Bean(ragManualChatClient) public ChatClient ragManualChatClient( ChatClient.Builder chatClientBuilder, VectorStore vectorStore) { String promptTemplate 你是一个知识库助手请根据以下参考资料回答用户问题。 参考资料 {context} 问题{question} ; return chatClientBuilder.build(); } // 检索文档并拼接上下文 private String retrieveAndBuildContext(String question) { ListDocument docs vectorStore.similaritySearch( SearchRequest.builder().query(question).topK(5).build() ); StringBuilder sb new StringBuilder(); for (Document doc : docs) { sb.append(doc.getText()).append(\n\n); } return sb.toString(); } }3. 自动编排配置Configuration public class PromptClientConfiguration { Bean(ragAutoChatClient) public ChatClient ragAutoChatClient(ChatClient.Builder chatClientBuilder, VectorStore vectorStore) { RetrievalAugmentationAdvisor ragAdvisor RetrievalAugmentationAdvisor.builder() .documentRetriever(VectorStoreDocumentRetriever.builder() .vectorStore(vectorStore) .topK(5) .build()) .build(); return chatClientBuilder .defaultAdvisors(ragAdvisor) .build(); } }4. 手动编排调用GetMapping(value /ask) public String ask(RequestParam String question) { // Step 1: 从向量库检索相关文档 ListDocument relevantDocs knowledgeService.search(question, 5, 0.6); // Step 2: 把检索到的文档拼接成上下文 StringBuilder context new StringBuilder(); for (int i 0; i relevantDocs.size(); i) { Document doc relevantDocs.get(i); context.append(String.format(\n【参考资料%d】来源%s\n%s, i 1, doc.getMetadata().getOrDefault(source, 未知), doc.getText())); } // Step 3: 构建增强Prompt发送给大模型 String prompt String.format( 参考资料 %s 用户问题%s 请根据上述参考资料回答问题。如果参考资料中没有相关信息请明确告知。 , context, question); return ragManualChatClient.prompt() .user(prompt) .call() .content(); }5. 自动编排调用GetMapping(/ask-auto) public String askAuto(RequestParam String question) { return ragAutoChatClient.prompt() .user(question) .call() .content(); }五、两种编排方式适用场景1.手动编排 - 学习 RAG 原理理解分块、检索、增强、生成的完整链路。 - 调试检索效果单独观察召回、重排序、Prompt 增强等环节。 - 需要自定义混合检索、元数据过滤、多路召回、RRF 合并、Rerank。 - 需要精细控制 Embedding、分块策略、上下文窗口和溯源信息。 - 业务系统已有自己的检索服务、权限体系或数据管道。 2.自动编排 / Advisor - 标准 RAG 问答希望快速集成。 - 使用 QuestionAnswerAdvisor、RetrievalAugmentationAdvisor 等组件一键装配检索增强流程。 - 需要组合多种 Advisor例如记忆管理、RAG 检索、工具调用、权限过滤。 - 团队希望减少管线胶水代码把重心放在数据质量、评估和 Prompt 设计上。 - 原型验证、内部知识库、客服问答等标准化场景。 3.生产环境怎么选 生产环境不能简单说“推荐 Advisor”或“推荐手动编排”更合理的判断是 - 优先自动编排 / Advisor场景较标准、检索逻辑不复杂、希望快速上线和统一维护。 - 优先手动编排需要混合检索、重排序、多源召回、复杂权限控制、自定义评估链路或深度性能优化。 常见折中方案用 Advisor 做基础编排同时替换其中的检索器、Joiner、Ranker、QueryTransformer 等组件。六、RAG Advisor流程总结RetrievalAugmentationAdvisor 内部流程QueryTransformers查询改写可选DocumentRetriever文档检索DocumentPostProcess文档后处理器重排或过滤检索结果如Rerank可选QueryAugmenter查询增强将检索结果拼入 PromptChatClient 调用大模型生成答案七、参考与补充RAG Advisor 扩展能力QueryTransformer查询改写器提升检索效果DocumentPostProcessor文档后处理器支持重排或过滤QueryAugmenter查询增强器将检索结果拼入 Prompt
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑