资讯动态

AI大模型必备知识|什么是检索增强生成(RAG)?看完这一篇你就懂了!!

发布时间:2026/8/27 14:38:26 来源:尧图企业网站定制
前言像GPT-4这样的大型语言模型LLM虽然能生成强大且通用的自然语言但也严重受限于训练数据的边界。为解决这一问题近期业界热议基于RAG检索增强生成的系统——但究竟什么是RAG它能做什么为何值得关注本文将深入解析RAG的核心原理如何实现基于RAG的LLM应用附完整代码示例什么是RAG检索增强生成Retrieval Augmented Generation, RAG是一种自然语言处理技术它使ChatGPT等大型语言模型LLM能够生成超出其训练数据范围的自定义输出。没有RAG的LLM应用就如同要求ChatGPT总结一封邮件却不提供邮件原文作为上下文。RAG系统由两大核心组件构成检索器和生成器。检索器负责从知识库中搜索与输入最相关的信息片段生成器则基于预定义的提示模板利用检索结果构造提示词序列最终生成与输入连贯且相关的响应。优秀的RAG系统是优秀检索器与生成器协同工作的产物——这也是当前大多数LLM评测指标专注于评估检索器或生成器的根本原因。以下是RAG架构的示意图一个典型的RAG架构在多数场景中知识库由存储于向量数据库如ChromaDB中的向量嵌入Vector Embeddings构成。检索器的工作流程如下在运行时将用户输入编码为高维向量如使用OpenAI的text-embedding-3-small模型在向量空间中检索与输入向量最相关的Top-K结果注K为可调超参数通常取5-10根据余弦相似度或欧氏距离对结果进行排序距离越小相关性越高检索结果随后被处理成提示词序列传递至生成器——即你选用的LLM如GPT-4、LlaMA 2等。一个检索器对于技术上想了解的更加深入的用户下面是检索器用于提取高相关性结果的常用模型及其原理\1.神经网络嵌入模型如OpenAI/Cohere的嵌入模型通过将文档映射到多维向量空间基于向量位置邻近度对文档排序。该方法能理解输入文本与文档库之间的语义关联及相关性。\2.最佳匹配25BM25一种提升文本检索精度的概率检索模型。通过结合词频term frequency和逆文档频率inverse document frequency量化词项重要性确保常见词与罕见词均影响相关性排序。\3.词频-逆文档频率TF-IDF计算词项在单个文档中的重要性相对于整个语料库。通过对比词项在文档中的出现频率与其在语料库中的稀缺性生成全面的相关性排序。\4.混合搜索Hybrid Search为不同方法如神经网络嵌入、BM25、TF-IDF分配差异化权重优化搜索结果的相关性。应用场景检索增强生成RAG通过结合文本检索与生成能力提升响应质量已在多个领域实现广泛应用。基于Confident公司与多家企业合作开发LLM应用的经验以下是排在前四的应用场景客户支持/用户引导聊天机器人从内部文档中检索数据生成个性化回复。数据提取从PDF等文档中提取关键信息。销售支持从LinkedIn个人资料及邮件历史中检索数据生成个性化外联消息。内容创作与优化基于历史对话数据生成建议回复。在接下来的章节中我们将构建一个通用问答QA机器人你可通过调整以下两个核心组件将其功能定制为前文所述的任意场景。项目配置我们将基于你的专属知识库打造一个智能问答QA聊天机器人。本文暂不涉及知识库的索引构建后续会单独详解重点聚焦机器人核心功能的实现。我们将使用PythonChromaDB作为向量数据库OpenAI负责生成文本向量嵌入及对话补全整个项目将基于你指定的维基百科页面构建聊天机器人。准备工作第一步新建项目目录并安装必要依赖库mkdir rag-llm-app cd rag-llm-app python3-m venv venv source venv/bin/activate你的控制台现在应该是这样(venv)安装依赖pip install openai chromadb新建main.py文件项目的核心入口touch main.py获取API密钥\1. 访问 OpenAI平台获取API密钥如果还没有。\2. 在终端中设置环境变量export OPENAI_API_KEY你的OpenAI_API密钥构建基于RAG的LLM应用首先创建一个检索器类Retriever用于根据用户问题从ChromaDB中检索最相关的数据。操作步骤\1. 打开main.py文件\2. 粘贴以下代码importchromadbfromchromadb.utilsimportembedding_functionsimportopenai clientchromadb.Client()client.heartbeat()classRetriver:def__init__(self):passdefget_retrieval_results(self,input,k):openai_efembedding_functions.OpenAIEmbeddingFunction(api_keyyour-openai-api-key,model_nametext-embedding-ada-002)collectionclient.get_collection(namemy_collection,embedding_functionopenai_ef)retrieval_resultscollection.query(query_texts[input],n_resultsk,)returnretrieval_results[documents][0]此处的openai_ef是 ChromaDB 内部使用的嵌入函数用于将输入文本转化为向量。当用户向聊天机器人发送问题时系统会通过 OpenAI 的text-embedding-ada-002模型生成该问题的向量嵌入随后在 ChromaDB 的collection向量空间已包含你的知识库数据本教程默认你已完成数据索引中执行向量相似性搜索。此过程可检索出与输入最相关的 Top K 条结果。在定义完检索器后粘贴以下代码创建生成器classGenerator:def__init__(self,openai_modelgpt-4):self.openai_modelopenai_model self.prompt_template Youre a helpful assistant with a thick country accent. Answer the question below and if you dont know the answer, say you dont know. {text} defgenerate_response(self,retrieval_results):prompts[]forresultinretrieval_results:promptself.prompt_template.format(textresult)prompts.append(prompt)prompts.reverse()responseopenai.ChatCompletion.create(modelself.openai_model,messages[{role:assistant,content:prompt}forpromptinprompts],temperature0,)returnresponse[choices][0][message][content]在generate_response方法中我们基于检索器提供的retrieval_results构建了多级提示模板。这些提示被发送至 OpenAI 接口驱动大模型生成最终回答。通过RAG 架构你的问答机器人能够融合检索结果与生成能力输出高度定制化的响应现在将所有组件整合形成完整流程classChatbot:def__init__(self):self.retriverRetriver()self.generatorGenerator()defanswer(self,input):retrieval_resultsself.retriver.get_retrieval_results(input)returnself.generator.generate_response(retrieval_results)# Creating an instance of the Chatbot classchatbotChatbot()whileTrue:user_inputinput(You: )# Taking user input from the CLIresponsechatbot.answer(user_input)print(fChatbot:{response})你已成功构建首个基于RAG检索增强生成的聊天机器人。总结通过本文你已掌握\1.RAG的核心原理融合检索与生成能力提升模型表现\2.RAG的典型应用场景客户支持、数据提取、销售支持等\3.RAG应用开发全流程从向量数据库搭建到生成逻辑集成不过你可能已发现自主构建RAG应用涉及复杂工程如数据索引、检索优化这并非易事。幸运的是现有开源框架如LangChain和LlamaIndex能大幅简化开发流程助你快速实现本文演示的所有功能。最后的最后感谢你们的阅读和喜欢作为一位在一线互联网行业奋斗多年的老兵我深知在这个瞬息万变的技术领域中持续学习和进步的重要性。为了帮助更多热爱技术、渴望成长的朋友我特别整理了一份涵盖大模型领域的宝贵资料集。这些资料不仅是我多年积累的心血结晶也是我在行业一线实战经验的总结。这些学习资料不仅深入浅出而且非常实用让大家系统而高效地掌握AI大模型的各个知识点。如果你愿意花时间沉下心来学习相信它们一定能为你提供实质性的帮助。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】大模型知识脑图为了成为更好的 AI大模型 开发者这里为大家提供了总的路线图。它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。经典书籍阅读阅读AI大模型经典书籍可以帮助读者提高技术水平开拓视野掌握核心技术提高解决问题的能力同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说阅读经典书籍是非常有必要的。实战案例光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。面试资料我们学习AI大模型必然是想找到高薪的工作下面这些面试题都是总结当前最新、最热、最高频的面试题并且每道题都有详细的答案面试前刷完这套面试题资料小小offer不在话下640套AI大模型报告合集这套包含640份报告的合集涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师还是对AI大模型感兴趣的爱好者这套报告合集都将为您提供宝贵的信息和启示。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价