微信扫码
添加专属顾问
大型语言模型 (LLM) 向用户和组织展示了巨大的潜力;它们的强大功能和生成能力使它们最近广受欢迎并被广泛接受。LLM 面临的一些缺点是无法以上下文感知的方式生成或响应用户给出的提示,听起来非常通用和开放,或者有时响应的信息已经过时。如果正确实施,检索增强生成 (RAG) 已被用于解决这一挑战。
RAG(检索增强生成)最近已成为利用公开可用的 LLM 的最流行方式之一。RAG 提高了 LLM 生成的响应质量,这就是为什么许多组织在其软件系统中实施 LLM 时采用 RAG 的原因。
对能够构建高度优化的 RAG 系统以满足组织需求的专业人员的需求日益增长。根据 Grandview 的研究,去年(2023 年)RAG 市场规模估计为 10.427 亿美元;有预测称,从 2024 年到 2030 年,该领域的复合年增长率将达到 44.7%,这是由于自然语言处理 (NLP) 领域的快速发展以及对智能 AI 系统的需求。
RAG 实施的另一面是 RAG 优化;这是通过使信息检索更准确来提高 RAG 系统性能的过程,从而提高整体性能。在本教程的后面部分,您将学习几种实现此目的的技术。
阅读本文的先决条件
要完全理解这篇技术文章,您应该熟悉 LLM 及其工作原理。您还应该熟悉 Python 编程,因为本文的代码、片段和实现都是用 Python 编写的。
了解 RAG 及其组件
RAG 只是通过引用训练数据之外的外部权威知识库来优化 LLM 生成的输出信息。此权威知识库是包含特定于特定组织或领域的数据的附加信息。
LLM 通常接受大量数据的训练,这使它们能够执行语言翻译和生成问题答案等任务。
RAG 利用 LLM 的生成功能来生成自定义、机构和特定领域的响应。因此,RAG 为公开可用的 LLM 添加了额外的功能。这节省了从头开始构建自定义 LLM 以实现预期目的(例如,为企业构建聊天机器人)所需的大量时间和财务影响。
让我带您了解 RAG 系统的高级工作流程:
用户从前端界面发出提示
然后,RAG 模型确保根据收到的提示从权威知识库中检索到正确的信息
现在,从权威知识库检索到的信息用于由 LLM 生成响应,并发送回客户端
这样,您就会看到提示不会直接进入 LLM,就像没有 RAG 实现那样。尽管如此,仍会从权威知识库中检索与提示语义同步的信息。现在,LLM 的生成功能用于生成用户可以看到、理解和欣赏的响应。
RAG 加上 LLM 等于魔法。
RAG 的应用
由于其对自然语言处理领域的价值和影响,RAG 已在不同行业和用例中得到广泛采用和适用。甚至非技术人员也开始将 RAG 系统集成到他们的业务中,以提高生产力。
RAG 的一些应用范围从内容创建和摘要到对话代理和聊天机器人。功能性 RAG 系统通常由三个组件组成,它们是:
检索组件
增强组件
生成组件
检索组件
此组件处理从外部权威知识库检索相关信息。它确保检索到的信息或段落与给出的提示最密切相关。可以使用多种机制,包括基于关键字的搜索、语义相似性搜索和基于神经网络的检索方法。
可以根据适合项目的方案实施其中任何一种。
以下代码片段显示了如何在 RAG 系统中从外部知识库进行检索。
import faiss# This handles similarity searchimport numpy as npfrom transformers import AutoTokenizer, AutoModelimport torch # A pre-trained embedding model (e.g., BERT) is loadedmodel_name = "sentence-transformers/all-MiniLM-L6-v2"tokenizer = AutoTokenizer.from_pretrained(model_name)model = AutoModel.from_pretrained(model_name) # Function to encode text into embeddingsdef text_to_embedding(text):inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True)with torch.no_grad():embeddings = model(**inputs).last_hidden_state.mean(dim=1)# Mean poolingreturn embeddings.cpu().numpy() # Sample document corpus also known as the# authoritative knowledge base, in this example it is for a # bakery shopdocuments = ["We are open for 6 days of the week, on Monday, Tuesday, Wednesday, Thursday, Friday, Saturday","The RAG system uses a retrieval component to fetch information.","We are located in Lagos, our address is 456 computer Lekki-Epe Express way.","Our CEO is Mr Austin, his phone number is 09090909090"] # Encode documents and store in FAISS indexdimension = 384# Set embedding dimension based on #the model usedindex = faiss.IndexFlatL2(dimension)# Create FAISS index # Create document embeddings and add to FAISS indexdoc_embeddings = np.vstack([embed_text(doc) for doc in documents])index.add(doc_embeddings) # Query Given it by a userquery = "Where is the location of your business?"query_embedding = embed_text(query) # Retrieve top 2 documents based on similaritytop_k = 2_, indices = index.search(query_embedding, top_k)retrieved_docs = [documents[idx] for idx in indices[0]] print("Your Query:", query)print("Retrieved Documents:", retrieved_docs)上面的代码片段为您提供了实用的信息,并让您更详细地了解 RAG 检索过程的内部工作原理。
发生了三件大事:
嵌入创建:文档或权威知识库以及传递给它的查询被嵌入。不要太担心“嵌入”的新概念;您将在本文的后面部分详细了解它
使用 FAISS 进行索引:嵌入的文档存储在 FAISS 索引中,从而实现快速相似性搜索
检索:根据余弦相似度检索与用户传递的查询最相似的前 k 个文档
增强组件
检索过程成功完成后,增强过程会为检索到的信息添加更多与用户传递的提示相关的上下文含义,使其更加流畅。
生成组件
生成过程确保基于增强信息生成自然语言。它允许人类理解检索到的信息,这可以通过使用 GPT-4、GPT-5、BERTH 等预先训练的 LLM 来实现。
下面的代码片段提供了一个完整的 RAG 管道,展示了使用 Pytorch 的 RAG 系统的检索、增强和生成过程。
from sentence_transformers import SentenceTransformerfrom transformers import T5ForConditionalGeneration, T5Tokenizerimport faissimport torch# Load Sentence Transformer model for embeddings (using PyTorch)embed_model = SentenceTransformer('all-MiniLM-L6-v2')# Sample documents for retrievaldocuments = ["We are open for 6 days of the week, on Monday, Tuesday, Wednesday,Thursday, Friday, Saturday","The RAG system uses a retrieval component to fetch information.","We are located in Lagos, our address is 456 computer Lekki-Epe Express way.","Our CEO is Mr. Austin, his phone number is 09090909090"]# Embed the documentsdoc_embeddings = embed_model.encode(documents)# Use FAISS for fast similarity searchdimension = doc_embeddings.shape[1]index = faiss.IndexFlatL2(dimension)index.add(doc_embeddings)# Load T5 model and tokenizer for the generation componenttokenizer = T5Tokenizer.from_pretrained("t5-small")model = T5ForConditionalGeneration.from_pretrained("t5-small")# Define a queryquery = "How does a RAG system work in machine learning?"# Retrieve top-k relevant documentsquery_embedding = embed_model.encode([query])top_k = 2_, indices = index.search(query_embedding, top_k)retrieved_docs = [documents[idx] for idx in indices[0]]# Concatenate retrieved docs to augment the queryaugmented_query = query + " " + " ".join(retrieved_docs)print("Augmented Query:", augmented_query)# Prepare input for T5 modelinput_text = f"answer_question: {augmented_query}"input_ids = tokenizer.encode(input_text, return_tensors="pt")# Generate answer using T5with torch.no_grad():output = model.generate(input_ids, max_length=50, num_beams=5, early_stopping=True)answer = tokenizer.decode(output[0], skip_special_tokens=True)print("Generated Answer:", answer)
什么是 RAG 嵌入
RAG 中的嵌入是文本的密集向量表示;这与将单词表示为高维稀疏向量的独热编码不同;嵌入将这些信息压缩为低维和连续向量,捕获单词之间的语义关系,使模型理解上下文。
因此,嵌入基本上涉及将文本转换为能够理解语义关系的低维向量表示。
您在 RAG 系统中嵌入了什么?您正在嵌入用户传递的提示和要检索的自定义文档/权威领域特定知识。这样做是为了让信息检索在语义上与传递的提示一致。
下一步是在开发 RAG 系统并选择 LLM(例如 GPT-4)时选择检索模型。一些流行的模型是 DPR(密集段落检索器)、Sentence-BERT 和 RoBERTa;这些模型为您处理嵌入。之后,您的自定义文档将被处理和集成以供检索。
因此,您发送提示。检索模型嵌入提示,捕获上下文和语义关系。它从嵌入式数据库中检索最相关的信息。它将其传递给 LLM,LLM 利用其生成能力生成与检索到的数据一致的文本。
优化 RAG 中嵌入的必要性
在 RAG 系统中,嵌入优化在确保从知识源或权威库检索到的信息/数据的质量和相关性方面起着至关重要的作用,就像之前讨论嵌入是什么时所解释的那样;传递给模型的提示被转换为嵌入,这些嵌入在从权威知识库检索之前捕获用户提示的语义含义。
如果嵌入得到适当优化,它们可以通过检索与用户提示非常接近的正确信息来提高模型的整体性能。这就是为什么嵌入优化对 RAG 系统至关重要。
此外,根据 RAG 系统的实现,会使用预先训练的嵌入模型。一些常用的嵌入模型是:
DPR(密集段落检索器)
Sentence-BERT
RoBERTa
infloat/e5-large-v2
这些预先训练的嵌入模型可以为您处理嵌入(它们将您的提示转换为嵌入或数字表示),但这需要权衡;由于它们是在大型通用数据集中训练的,因此它们可能无法完全理解自定义或域应用程序。这就是为什么您必须微调或优化嵌入模型的原因。
在 RAG 中嵌入调优的技术
有多种方法可以实现嵌入调整;下面是一些实现嵌入调整的流行技术;
1. 通过适应领域
专门针对特定领域或主题进行调整的嵌入可以产生很大的不同。例如,在相关数据上训练嵌入可以使 RAG 模型在法律或医疗保健等领域更加精确,因为这些领域的语言具有独特的术语和细微差别。这样,当用户提问时,他们会得到与上下文产生共鸣的答案。
2. 使用对比学习
将对比学习视为帮助模型“磨练”相似和不相似的内容。通过教导模型将相关的查询和答案更紧密地分组在一起(并将不相关的查询和答案分开),您可以让模型更容易返回对所提问题有意义的结果。
3. 添加来自真实数据的信号
添加一些监督数据(如用户反馈或标记示例)可以使嵌入更接近人们的期望。这有助于引导模型找到重要的模式,例如识别哪些响应往往会达到目标,哪些不会。模型从真实用户交互中学习得越多,它就越能提供有用的响应。
4. 自监督学习
自监督学习是处理标记数据较少的情况的绝佳选择。此方法在数据本身中发现模式,这有助于为模型构建基础,而无需进行太多手动标记。它非常适合需要保持灵活性的通用 RAG 系统。
5. 结合嵌入以获得更丰富的响应
有时,混合多个嵌入会产生奇效。例如,将通用嵌入与针对特定领域进行微调的嵌入相结合可以创建一个全面的模型,该模型可以理解一般和小众问题。如果您要处理广泛的主题,这种方法尤其有用。
6. 保持嵌入平衡
正则化技术(如 dropout 或 triplet loss)可帮助模型避免“卡”在某些单词或想法上,使其理解范围足够广泛,以处理不同的查询。这可确保模型的响应范围不会太窄,从而有助于其保持对新问题或意外问题的灵活性。
7. 用硬否定挑战模型
硬否定足够接近,但仍然不正确。在训练中添加这些可以鼓励模型完善其理解,尤其是在处理细微差异时。这就像给它所需的心理重复,以便更好地在几乎正确的选项中找到正确答案。
8. 使用反馈循环进行持续改进
通过主动学习,您可以设置一个反馈循环,其中将不确定或具有挑战性的答案标记为人工审核。这些评论反馈到模型中,以随着时间的推移不断提高其准确性,这对于不断发展或具有许多复杂细微差别的领域非常有用。
9. 通过跨编码器调优进行更深入的研究
对于更细微的查询(尤其是需要问题和答案紧密匹配的查询),跨编码器方法可以提供帮助。跨编码器直接评估查询和文档对,因此模型会将它们一起“读取”,而不是将它们视为单独的实体。这通常会在精确匹配是关键的领域带来更深入的理解。
通过这种方式对嵌入进行微调,RAG 模型可以提供更自然、更切题的响应。简而言之,就是要让 AI 成为更好的倾听者和响应者,为用户提供切中要害的答案。
评估 RAG 嵌入质量的方法
评估 RAG 系统嵌入的质量至关重要,因为它可以作为一个指标,表明它是否可以检索相关且上下文正确的数据,无论是否经过优化。
下面列出了用于评估 RAG 中嵌入质量的方法:
余弦相似度和最近邻评估:此方法计算查询嵌入与其相关文档之间的余弦相似度
平均倒数排名 (MRR) 和平均准确率 (MAP):在此方法中,当给出查询时,检索到的文档将根据相关性进行排名,并计算 MRR 或 MAP 分数
嵌入聚类和可视化:这涉及使用 t-SNE 或 UMAP 等技术将嵌入投影到 2D 或 3D 空间中,以可视化查询和文档如何聚类在一起的相似性
人工判断和反馈循环:这涉及使用人工根据提示评估检索到的信息的质量并提供反馈以进行可能的改进
特定领域的评估指标:此方法可确保嵌入有效地针对特定领域的细微差别,因为这会对应用于此类专业学科的 RAG 系统的性能产生负面影响
嵌入 RAG 调优的挑战
尽管嵌入调整会对 RAG 系统的性能产生巨大影响,但有时实施起来非常具有挑战性。它不是直接的,有时需要迭代才能达到所需的性能。
其中一些挑战包括:
成本:训练和微调嵌入的计算成本,尤其是在处理大型数据集时
过拟合:模型可能对训练数据过于熟悉。如果向其传递除精确训练数据之外的提示,则无法检索正确的信息
难以获得高质量数据:由于模型严重依赖于用于训练的数据,如果没有使用有关特定领域或细分市场的足够高质量和准确的数据来训练模型,则模型可能会出现偏差且性能不佳
管理领域趋势的变化:由于大多数领域的动态性质,总是有新的更新和进步,因此必须经常重新训练模型以避免过时,而这并不容易跟上
写在最后的话
在开发需要高精度的系统时,RAG 优化至关重要,因为用于开发 RAG 系统的嵌入模型主要用于通用应用程序。嵌入调整对于提高 RAG 系统的检索精度以获得更好的性能是必要的。
在开发 RAG 模型时实施上述任何一种检索技术后,正确的做法是测试新开发的 RAG 模型的性能,以了解它对传递给它的某些提示的响应程度;如果它表现得非常好;满足您的期望和要求,那对您来说很好,您在开发 RAG 系统方面做得很好。如果在向它传递某些提示时它没有给您所需的响应,请不要担心;您仍然可以通过进一步优化和微调来提高模型的性能。谢谢阅读。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2026-07-05
AI 知识库为什么总答不准?不是模型笨,是资料没整理好
2026-07-05
AI知识库RAG演进:上一代解决「找得到」,下一代解决「记得住、连得起、信得过」
2026-07-04
大模型支持的上下文已超 1M, RAG 是不是没有意义了?
2026-07-03
RAG 检索优化策略:从命中率到答案质量的一套工程打法
2026-07-03
RAG 落地总翻车?全球赛事冠军架构,改造适配企业级生产
2026-07-01
提升 RAG 准确率全攻略 让你的 AI 知识库 真正靠谱起来!
2026-06-30
教程:如何用AutoRAG + Milvus避免RAG 与Agent 中出现串租问题
2026-06-30
知识库不是文件堆——我把RAG准确率从60%调到了92%
2026-04-27
2026-04-23
2026-04-20
2026-04-09
2026-04-12
2026-04-22
2026-04-10
2026-05-14
2026-04-30
2026-04-27
2026-07-04
2026-06-23
2026-06-23
2026-06-15
2026-06-10
2026-06-10
2026-05-20
2026-05-18
欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。
在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。
一、 定义
本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。
会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。
知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。
二、 账号注册与登录
登录方式:本网站支持以下登录方式,您可根据实际情况选择:
微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。
手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。
账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。
实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。
未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。
三、 服务内容与规范
知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。
服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。
禁止行为:您在使用服务时不得实施以下行为:
利用技术手段批量爬取、下载、转存知识库内容;
将知识库内容用于商业目的或未经授权地向第三方传播;
干扰本网站正常运行或侵犯其他用户合法权益;
发布违法违规信息或从事违反公序良俗的活动。
四、 知识产权声明
权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。
有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。
侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。
五、 个人信息保护
我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。
您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。
您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。
六、 免责声明
内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。
不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。
第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。
七、 违约责任
如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。
如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。
八、 法律适用与争议解决
本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。
因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。
九、 其他
本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。
本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。
我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。