拯救大模型“幻觉”?Python RAG九大架构全解析

news2026/3/27 17:41:59
别让你的AI助手从“得力员工”变成“职场骗子”你是否也曾被大模型的“一本正经胡说八道”气到无语你精心部署的客服机器人自信地告诉客户“我们的退货政策是90天”——而实际上公司的规定是30天。或者它热情洋溢地介绍了一款“旗舰产品”的“革命性功能”但问题是——你的公司根本就没这款产品。这就是那个令所有AI开发者头疼的“幻觉”问题。大模型明明在胡说八道语气却无比坚定。在技术演示里这或许是个小尴尬但在生产环境中这可能意味着流失客户、损失金钱甚至承担法律风险。今天我们要聊的 RAG检索增强生成就是解决这个问题的“金钥匙”。但很多人不知道的是RAG不是单一技术而是一整个架构家族。选错了你的项目可能从一开始就走在弯路上。本文将以Python技术视角为你深入解析9种必须掌握的RAG架构并提供可直接运行的代码示例带你从“会用”到“懂选”构建真正可靠的AI系统。一、RAG究竟是什么给模型配个“档案管理员”想象一下你公司新来了一位极其聪明的员工他博闻强记口才一流。但有个致命缺点他的知识停留在入职培训那天对公司最新的项目、数据、政策一无所知。RAG 就是给这位“聪明员工”配了一位专业的“档案管理员”。当员工大模型需要回答问题时他不再凭空回忆而是先转头问档案管理员检索系统“嘿关于XX政策我们的文件里是怎么说的” 管理员迅速从档案柜知识库中找出相关文件递给他。员工基于这些真实、最新的文件组织语言给出回答。技术定义 RAG通过让大模型在生成答案前先从外部知识库如文档、数据库、知识图谱中检索相关信息从而将生成过程锚定在可验证的事实上。一、RAG是什么为什么是刚需想象一下你新招了一位天才员工他博闻强识预训练模型但记忆力极差且知识停留在去年训练数据截止。公司最新的产品手册、客户协议他一概不知。RAG就像是给这位天才配了一个随身文件柜知识库和一个高效秘书检索系统。每当员工需要回答问题时秘书会迅速从文件柜中找出相关文件员工结合这些最新资料给出准确答复。技术定义RAG通过让大模型在生成答案前检索并参考外部知识源来优化其输出。它让模型不再仅仅依赖训练时学到的“旧知识”而是能结合你提供的文档、数据库进行回答。标准流程检索将用户问题转化为向量在你的知识库中寻找最相关的文档片段。增强将这些片段作为“上下文”与原始问题一起提交给大模型。生成模型基于给定的上下文生成一个信息 grounded 的回答。下面我们从最简单、也是你必须掌握的“Hello World”版本开始。二、基础篇从“标准款”到“记忆增强款”我们将用langchain和chromadb等主流库来演示核心思想。请先安装基础环境pip install langchain langchain-openai chromadb tiktokenimg架构1标准RAGStandard RAG- 你的起点定位所有RAG的起点。简单、快速、开箱即用。假设你的检索系统是完美的适合对速度要求高、容错率相对宽松的场景。工作原理分块将文档拆解为可处理的文本片段。嵌入每个片段转换为向量并存储于数据库如Pinecone或Weaviate。检索用户查询经向量化处理通过余弦相似度提取“Top-K”最匹配片段。生成将这些片段作为“上下文”输入大型语言模型生成符合语境的回应。适用场景问答机器人、内部知识库查询等简单、明确的单轮问答。核心代码让我们实现一个最简单的标准RAG流程。# 安装必要库pip install langchain langchain-community chromadb langchain-openai tiktoken from langchain_community.document_loaders import TextLoader from langchain_text_splitters import RecursiveCharacterTextSplitter from langchain_openai import OpenAIEmbeddings, ChatOpenAI from langchain_chroma import Chroma from langchain_core.prompts import ChatPromptTemplate from langchain.chains import RetrievalQA # 1. 加载与分块文档模拟员工手册 loader TextLoader(employee_handbook.txt) # 假设有此文件 documents loader.load() text_splitter RecursiveCharacterTextSplitter(chunk_size500, chunk_overlap50) chunks text_splitter.split_documents(documents) print(f文档被切分为 {len(chunks)} 个片段) # 2. 向量化并存入数据库 embeddings OpenAIEmbeddings(modeltext-embedding-3-small) # 或使用开源embedding vectorstore Chroma.from_documents(documentschunks, embeddingembeddings, persist_directory./chroma_db) # 3. 构建RAG链 llm ChatOpenAI(modelgpt-3.5-turbo) retriever vectorstore.as_retriever(search_kwargs{k: 3}) # 检索Top-3相关片段 prompt ChatPromptTemplate.from_template( 请根据以下上下文信息回答问题。如果上下文没有提供相关信息请直接说“根据现有资料我无法回答这个问题”。 上下文{context} 问题{question} 答案 ) rag_chain RetrievalQA.from_chain_type( llmllm, chain_typestuff, # 最简单的一种链将所有上下文塞入prompt retrieverretriever, chain_type_kwargs{prompt: prompt} ) # 4. 提问测试 query 公司规定的年假有多少天 result rag_chain.invoke({query: query}) print(f问题{query}) print(f答案{result[result]})优点低于一秒的延迟。计算成本极低。调试和监控简单。缺点极易受“噪声”影响检索无关数据块。无法处理复杂的多部分问题。检索数据错误时缺乏自我纠错能力。重要原则永远从这里开始。如果标准RAG效果不好增加复杂度往往无济于事。架构2对话RAGConversational RAG- 给AI加上“记忆”定位为标准RAG添加记忆Memory。解决用户连续提问时如“它多少钱”AI不知道“它”指代什么的问题。适用场景客服聊天、多轮诊断、持续探索性对话。核心在检索前用一个LLM先对当前查询进行重写融入对话历史使其成为一个独立、完整的查询。from langchain.memory import ConversationBufferMemory from langchain.chains import ConversationalRetrievalChain # 1. 在标准RAG的基础上添加记忆模块 memory ConversationBufferMemory(memory_keychat_history, return_messagesTrue) # 2. 构建对话式RAG链 conversational_rag_chain ConversationalRetrievalChain.from_llm( llmllm, retrieverretriever, memorymemory, combine_docs_chain_kwargs{prompt: prompt} # 可使用更复杂的prompt ) # 3. 模拟多轮对话 print(--- 第一轮对话 ---) result1 conversational_rag_chain.invoke({question: 我们公司有哪些福利}) print(f用户我们公司有哪些福利) print(fAI{result1[answer]}) print(/n--- 第二轮对话依赖上下文 ---) result2 conversational_rag_chain.invoke({question: 其中医疗保险覆盖家人吗}) print(f用户其中医疗保险覆盖家人吗) # AI此时能理解“其中”指的是“福利”并能从上下文中找到医疗保险的具体条款。 print(fAI{result2[answer]})优点对话体验自然用户无需重复信息。缺点增加了Token消耗历史信息可能干扰当前检索“记忆漂移”。三、进阶篇为了“更准”与“更高效”架构3. 校正型RAGCorrective RAG, CRAG- 引入“质检员”定位为高准确性要求的场景设计如金融、医疗。它在检索后增加了一个“质检门”评估检索到的文档质量。如果质量太差它会触发备用方案如联网搜索。CRAG是一种专为高风险环境设计的架构。它引入了“决策门”机制在检索到的文档进入生成器前对其质量进行评估。若内部检索质量不佳则触发回退至实时网络的机制。在部署CRAG式评估器的团队内部基准测试中幻觉现象较原始基线显著降低。工作原理检索阶段 从内部向量存储库获取文档。评估阶段 轻量级“评分器”模型为每个文档片段赋予评分正确/模糊/错误。决策门控正确 直接进入生成器阶段错误 丢弃数据并触发外部API如谷歌搜索或Tavily合成 基于验证过的内部数据或新获取的外部数据生成答案适用场景对准确性要求极高的领域如金融、医疗、法律咨询。核心流程检索 → 评估打分→ 决策使用/丢弃/补充→ 生成。# 概念性代码展示CRAG的决策逻辑 def corrective_rag_workflow(query, vectorstore, web_search_tool): # 1. 初步检索 retrieved_docs vectorstore.similarity_search(query, k5) # 2. 评估检索结果模拟一个轻量级评估器 # 在实际中这可能是一个专门训练的微型模型或基于规则的评分器 graded_docs [] for doc in retrieved_docs: # 简单模拟通过检查与查询的相关性关键词来评分 relevance_score naive_relevance_scorer(query, doc.page_content) if relevance_score 0.7: graded_docs.append((correct, doc)) elif relevance_score 0.3: graded_docs.append((ambiguous, doc)) else: graded_docs.append((incorrect, doc)) # 3. 决策门 if any(grade correctfor grade, _ in graded_docs): # 有合格文档使用它们 context /n.join([d.page_content for g, d in graded_docs if g correct]) print([CRAG决策]使用内部知识库。) else: # 内部文档质量不佳触发备用检索 print([CRAG决策]内部知识不足启动备用检索。) context web_search_tool.search(query) # 4. 生成 final_prompt f基于以下信息回答问题/n{context}/n/n问题{query}/n答案 return llm.invoke(final_prompt) # 模拟一个简陋的相关性打分器 def naive_relevance_scorer(query, doc_content): query_words set(query.lower().split()) doc_words set(doc_content.lower().split()) overlap len(query_words doc_words) return overlap / max(len(query_words), 1) # 假设我们有一个联网搜索的工具例如 Tavily Search API 的封装 # web_search_tool TavilySearch()优点大幅降低“幻觉”实现内外知识结合。缺点延迟显著增加通常2-4秒且需管理外部API成本。架构4自适应RAGAdaptive RAG- 聪明的“资源调配者”定位“效率大师”。它用一个路由Router 判断问题复杂度然后选择最经济高效的路径简单问题LLM直接答中等问题用标准RAG复杂问题才启动多步检索。工作原理复杂度分析小型分类器模型对查询进行路由分发。路径A无需检索 适用于问候语或大型语言模型已掌握的常识性问题。路径B标准RAG 用于简单的事实查证。路径C多步智能体 处理需跨多源检索的复杂分析型问题。适用场景用户问题复杂度差异大需要兼顾响应速度与成本。路径示例路径ALLM直接答 “你好”、“谢谢” → 无需检索。路径B标准RAG “图书馆开放时间” → 简单检索。路径C复杂RAG/Agent “对比过去五年计算机和金融专业的就业率与起薪” → 启动多步检索与推理。from langchain_core.runnables import RunnableBranch # 1. 定义路由判断函数实践中可用一个小型分类器LLM def route_question(query): simple_keywords [你好, 嗨, 你是谁] complex_keywords [比较, 分析, 趋势, 总结过去五年] if any(kw in query for kw in simple_keywords): returnsimple elif any(kw in query for kw in complex_keywords): returncomplex else: returnstandard # 2. 定义不同处理分支 def simple_chain(query): 直接回答无需检索 return llm.invoke(f友好、简洁地回答用户问候或简单问题。问题{query}) def standard_chain(query): 标准RAG流程复用之前的retriever docs retriever.invoke(query) context /n.join([d.page_content for d in docs]) return llm.invoke(f根据上下文{context}/n回答问题{query}) def complex_chain(query): 复杂流程例如多步检索或调用Agent这里简化为更深的检索 print([自适应RAG]检测到复杂问题启用深度检索。) docs retriever.invoke(query, search_kwargs{k: 10}) # 检索更多片段 # 这里可以加入更复杂的处理逻辑如重排序、多查询等 context /n---/n.join([d.page_content for d in docs]) return llm.invoke(f请综合分析以下信息/n{context}/n/n问题{query}) # 3. 构建自适应路由链 branch RunnableBranch( (lambda x: route_question(x[query]) simple, lambda x: {result: simple_chain(x[query])}), (lambda x: route_question(x[query]) complex, lambda x: {result: complex_chain(x[query])}), lambda x: {result: standard_chain(x[query])} # 默认分支 ) # 4. 测试 test_queries [你好, 年假有多少天, 分析公司过去三年员工福利政策的变化趋势] for q in test_queries: response branch.invoke({query: q}) print(f问题{q}) print(f路由决策{route_question(q)}) print(f答案{response[result].content[:100]}.../n)优点极致的成本与速度优化用户体验佳。缺点路由模型若误判会导致回答失败。四、高阶篇让检索“更聪明”架构5融合RAGFusion RAG- 多角度“会诊”避免遗漏定位解决用户提问方式不佳导致的检索失败。它自动生成同一问题的多个变体并行检索然后融合结果确保高召回率。融合式RAG解决了“模糊性问题”。多数用户不擅长搜索。融合式RAG通过多角度解析单一查询确保高召回率。工作原理查询扩展生成用户问题的3-5种变体。并行检索在向量数据库中搜索所有变体。互补排序融合RRF运用数学公式重新排序结果最终排序在多次检索中排名靠前的文档将被提升至顶部。适用场景用户提问模糊、口语化或问题本身涉及多角度时。核心查询扩展 倒数排序融合 (RRF)。from langchain.retrievers import ContextualCompressionRetriever from langchain.retrievers.document_compressors import LLMChainExtractor from langchain.retrievers.ensemble import EnsembleRetriever from langchain_community.retrievers import BM25Retriever import numpy as np # 1. 创建不同类型的检索器进行“融合” # a. 稠密向量检索器 (我们已有的) dense_retriever vectorstore.as_retriever(search_kwargs{k: 5}) # b. 稀疏检索器 (BM25) - 需要将文档转为文本列表 from langchain.retrievers import BM25Retriever texts [chunk.page_content for chunk in chunks] bm25_retriever BM25Retriever.from_texts(texts) bm25_retriever.k 5 # 2. 构建集成检索器 ensemble_retriever EnsembleRetriever( retrievers[dense_retriever, bm25_retriever], weights[0.5, 0.5] # 可以调整权重 ) # 3. 可选对检索结果进行重压缩/精炼 llm_for_compression ChatOpenAI(temperature0) compressor LLMChainExtractor.from_llm(llm_for_compression) compression_retriever ContextualCompressionRetriever( base_compressorcompressor, base_retrieverensemble_retriever ) # 4. 使用融合后的检索器 rag_chain_fusion RetrievalQA.from_chain_type( llmllm, retrievercompression_retriever, # 使用融合精炼的检索器 chain_typestuff ) # 测试一个模糊的查询 query 那个关于远程办公的规则 result rag_chain_fusion.invoke({query: query}) print(f模糊查询{query}) print(f融合RAG答案{result[result][:200]}...)优点检索召回率极高对用户措辞不敏感。缺点检索成本成倍增加3-5倍延迟更高。架构6假设性文档嵌入HyDE先“脑补”答案再按图索骥定位一种非常巧妙的反向思维。它发现“问题”和“答案”在语义上并不相似。于是它先让LLM根据问题“脑补”一段假设性答案然后用这段“答案”的向量去检索真实文档。HyDE是一种反直觉却精妙的模式。它认识到“问题”与“答案”在语义上存在差异。通过先生成一个“虚假”答案它在二者之间架起了一座桥梁。工作原理假设生成大型语言模型为查询编写虚构假设性答案。向量化将虚构答案转化为向量。检索匹配利用该向量查找与虚构答案风格相似的真实文档。生成最终答案基于真实文档撰写最终回复。适用场景问题非常抽象、开放或与知识库文档表述差异大时。工作流问题 → 生成假设答案 → 向量化假设答案 → 用该向量检索 → 生成最终答案。def hyde_retrieval(query, vectorstore, llm): # 1. 假设性文档生成 (Hypothetical Document Generation) hypothetical_prompt f 请针对以下问题生成一个假设性的、理想的答案段落。 这个段落应该包含回答问题所需的关键事实和表述方式。 问题{query} 假设性答案 hypothetical_answer llm.invoke(hypothetical_prompt).content print(f[HyDE] 生成的假设性答案{hypothetical_answer[:100]}...) # 2. 使用假设性答案的向量进行检索 # 关键使用与构建索引时相同的embedding模型 embeddings OpenAIEmbeddings() hypothetical_embedding embeddings.embed_query(hypothetical_answer) # 在向量库中搜索与假设答案最相似的文档 # 注意这里演示逻辑实际需使用支持直接向量查询的接口 relevant_docs vectorstore.similarity_search_by_vector(hypothetical_embedding, k3) # 3. 基于真实文档生成最终答案 context /n.join([doc.page_content for doc in relevant_docs]) final_prompt f基于以下真实文档信息回答问题/n{context}/n/n问题{query}/n答案 final_answer llm.invoke(final_prompt) return final_answer.content # 测试一个概念性较强的问题 query 如何建立一个积极的企业文化 result hyde_retrieval(query, vectorstore, llm) print(f/n最终答案{result[:300]}...)优点对抽象、概念性问题的检索效果极佳。缺点若“脑补”方向完全错误会带偏整个检索不适用于简单事实查询。架构7自省RAGSelf-RAG- 拥有“元认知”的AI定位让AI在生成过程中自我批判、自我检查。模型被训练在输出中加入特殊的反思标记如[是否相关]、[是否有支持]当标记为“否”时模型会暂停重新检索或改写。自我RAG是一种精密架构模型经过训练可对自身推理过程进行批判。它不仅能检索信息更能生成“反思令牌”实时审核自身输出结果。工作原理检索由模型自身触发的标准搜索。token生成 模型在生成文本时同步生成特殊标记如[IsRel]是否相关、[IsSup]该论点是否得到支持和[IsUse]是否具有实用性。自我修正若模型输出[NoSup]标记则暂停操作重新检索信息并重写句子。核心需要专门微调的模型如Self-RAG-Llama在生成流中动态决策是否需要检索以及当前输出的可信度。其流程可以理解为生成 - 反思 - (必要时)检索/重写 - 继续生成。# 注意完整Self-RAG需要微调模型。此处展示其“反思”逻辑的思想。 def self_rag_style_generation(query, retriever, llm): max_steps 3 context for step in range(max_steps): # 生成阶段同时进行“反思” prompt f 问题{query} 已知上下文{context} 请生成答案的下一部分并在每个关键主张后评估其是否需要支持。 例如“公司的核心价值观是创新[需要支持是]。...” generation_output llm.invoke(prompt) # 模拟解析输出中的反思标记 if[需要支持是]in generation_output: print(f[Self-RAG 第{step1}步]检测到需要证据的主张触发检索。) # 提取需要验证的主张将其作为新查询 claim_to_verify extract_claim(generation_output) new_docs retriever.invoke(claim_to_verify) context /n /n.join([d.page_content for d in new_docs]) # 继续循环基于新上下文重新生成或修正 else: print(f[Self-RAG 第{step1}步]生成内容可信完成回答。) return generation_output return经过多次检索与验证答案如下... generation_output # 这是一个高度简化的概念演示真实Self-RAG在模型内部完成。优点事实准确性最高推理过程透明。缺点需要定制模型计算开销巨大。五、顶级架构当RAG成为“智能体”与“关系大师”架构8智能体RAGAgentic RAG- “调度专家”团队定位将RAG从“检索-生成”的被动流程转变为由智能体Agent主动规划、执行、迭代的复杂任务求解过程。智能体可以决定调用哪些工具数据库、搜索、API、是否进行多轮交互。与其盲目抓取文档它引入了一个自主智能体在生成答案前会规划、推理并决定如何及何处检索信息。它将信息检索视为研究而非简单查询。工作原理分析阶段智能体首先解析用户查询判定其属于简单查询、多步骤查询、模糊查询或实时数据需求。规划阶段将查询分解为子任务并制定策略。例如应优先进行向量搜索网页搜索调用API还是提出后续问题执行智能体调用向量数据库、网页搜索、内部API或计算器等工具执行步骤。迭代基于中间结果智能体可优化查询、获取更多数据或验证来源。生成收集充分证据后大型语言模型生成基于事实、感知上下文的最终响应。适用场景极度复杂、多步骤、需要逻辑推理或实时数据的问题。Python实现“根据公司财报、近期新闻和行业报告分析我们下一季度的主要风险并给出应对建议。”from langchain.agents import AgentExecutor, create_tool_calling_agent from langchain_core.prompts import ChatPromptTemplate from langchain.tools.retriever.tool import create_retriever_tool # 1. 将检索器包装成智能体可用的“工具” retriever_tool create_retriever_tool( retriever, company_knowledge_search, 搜索公司的内部知识库如员工手册、政策文件、产品文档等。 ) # 2. 可以定义更多工具模拟 # web_search_tool TavilySearchResults() # calculator_tool ... # 3. 创建智能体 tools [retriever_tool] # 可以加入更多工具 prompt ChatPromptTemplate.from_messages([ (system, 你是一个专业的商业分析助手。利用你手头的工具全面、准确地回答用户问题。), (human, {input}), ]) agent create_tool_calling_llm(llm, tools, prompt) agent_executor AgentExecutor(agentagent, toolstools, verboseTrue) # 4. 执行一个需要规划的任务 complex_query 我们计划推出全员居家办公政策。 请先找出公司现有的远程办公指导原则 然后分析可能面临的人力资源和IT支持挑战。 result agent_executor.invoke({input: complex_query}) print(result[output])LangGraph实现示意这是更高级的框架用于构建有状态的智能体工作流# 高级概念展示工作流 # 1. Agent分析“用户想对比五年数据这需要分步进行。” # 2. Agent规划 # - 步骤1从知识库检索“计算机专业历年报告” # - 步骤2从知识库检索“金融专业历年报告” # - 步骤3调用“数据提取工具”从报告中抓取就业率和起薪 # - 步骤4调用“计算工具”进行对比分析 # - 步骤5生成总结报告 # 3. Agent执行并循环直到得到满意结果。优点处理复杂、多步骤、开放式问题的能力极强。缺点延迟高成本高需要精细的智能体编排。架构9图RAGGraphRAG- 从“文档检索”到“关系推理”定位革命性的范式转变。它不再仅仅检索相似的文本片段而是检索知识图谱中的实体和关系。它将知识构建成图节点实体边关系通过图遍历来发现实体间的连接路径从而回答涉及多跳推理、因果关系的问题。虽然所有现有架构都基于语义相似性检索文档但GraphRAG检索的是实体及其之间的显式关系。它不再追问“哪些文本相似”而是探究“哪些元素相连如何相连”。工作原理图构建知识被建模为图结构其中节点代表实体人物、组织、概念、事件边代表关系影响、依赖于、资助于、受监管于。查询解析分析用户查询以识别关键实体和关系类型而非仅提取关键词。图遍历系统遍历图结构寻找能跨多跳连接实体的有意义路径。可选混合检索常结合图结构使用向量搜索将实体锚定于非结构化文本中。生成大型语言模型将发现的关系路径转化为结构化、可解释的答案。场景“美联储加息如何通过风险资本影响到我们公司C轮融资的估值”工作流用户查询 → 识别实体和关系 → 在图数据库中遍历路径如美联储 → 提高利率 → 影响 → 风险投资意愿 → 影响 → 初创公司估值 → 生成解释性答案。Python实现通常涉及Neo4j、NebulaGraph等图数据库以及py2neo、langchain-graph等库。代码较为复杂但其核心优势在于可解释的、基于关系的推理。# 概念性伪代码展示Graph RAG思路 def graph_rag_query(query, graph_db, llm): # 1. 从查询中提取实体和关系意图 (可使用NER模型) entities extract_entities(query) # e.g., [美联储, 加息, 公司估值] # 2. 在图数据库中查询连接这些实体的路径 # Cypher查询示例 (Neo4j): MATCH p(:Entity {name:美联储})-[:AFFECTS*..3]-(:Entity {name:公司估值}) RETURN p paths graph_db.query_relationship_paths(entities) # 3. 将发现的路径转换为文本描述 context for path in paths: context f- {path.describe()}/n # 4. 生成基于关系的答案 answer_prompt f 基于以下实体间的关联路径回答问题 {context} 问题{query} 请清晰阐述其中的因果或影响链条。 答案 return llm.invoke(answer_prompt)优点擅长因果、多跳推理输出可解释性强。缺点知识图谱构建和维护成本极高不适用于非结构化、快速变化的知识。如何选择一张决策地图给你答案面对九种架构莫慌。记住这个五步决策法无脑第一步先用标准RAG跑通全流程。基础不牢地动山摇。按需加功能需要多轮对话→ 对话型RAG用户问题五花八门有难有易→ 自适应RAG答案必须绝对准确错了后果严重→ 校正型RAG (CRAG)解决特定痛点用户总问不清楚检索老失败→ 融合RAG问题很抽象、概念化→ HyDE需要AI自我审查、高可靠报告→ 自反思RAG预算充足时应对复杂场景问题需要拆解、规划、使用多种工具→ 智能体RAG核心是分析人物、事件、事物之间的关系和影响→ 图RAG大胆做混合生产系统往往是杂交体。例如自适应路由 标准/校正双通道让95%的简单请求走高速路5%的疑难杂症走质检通道。写在最后RAG不是魔法无法拯救糟糕的数据或混乱的业务逻辑。但它确实是将大语言模型从“才华横溢的幻想家”转变为“值得信赖的专业顾问”的最关键桥梁。从简单的文档问答到复杂的商业分析与关系推理RAG的九大架构为你提供了从简到繁的全套工具箱。最好的架构永远是最适合你当前业务约束和用户需求的那一个而不是最复杂、最时髦的那一个。希望本文的解析和代码能成为你探索RAG世界的实用指南。你正在尝试哪种RAG架构在项目中遇到了哪些独特的挑战欢迎在评论区分享你的见解与经验这里给大家精心整理了一份全面的AI大模型学习资源包括AI大模型全套学习路线图从入门到实战、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等资料免费分享扫码免费领取全部内容1. 成长路线图学习规划要学习一门新的技术作为新手一定要先学习成长路线图方向不对努力白费。这里我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。2. 大模型经典PDF书籍书籍和学习文档资料是学习大模型过程中必不可少的我们精选了一系列深入探讨大模型技术的书籍和学习文档它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。书籍含电子版PDF3. 大模型视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的大模型视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。4. 2026行业报告行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。5. 大模型项目实战学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。6. 大模型面试题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我们将提供精心整理的大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。7. 资料领取全套内容免费抱走学 AI 不用再找第二份不管你是 0 基础想入门 AI 大模型还是有基础想冲刺大厂、了解行业趋势这份资料都能满足你现在只需按照提示操作就能免费领取扫码免费领取全部内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2455177.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…