2026年7月9日 周四晚上19:30,报名腾讯会议了解“如何构建自进化的动态知识库(Brain)”(限30人)
免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


收藏

RAG:开启智能知识探索新纪元

发布日期:2024-09-17 08:07:56 浏览次数: 2726
作者:AI未来智能宇宙

微信搜一搜,关注“AI未来智能宇宙”

 RAG技术融合检索与生成功能,其检索功能可精准定位信息,提高获取效率与准确性;生成功能能依据检索结果结合特定需求生成新内容。本文阐述了RAG在新闻、医疗、教育、金融和企业知识库等领域的应用,介绍了RAG的代码实现,分析了RAG架构及面临的挑战,展望其多模态融合等发展趋势。”

01

引言

在大语言模型技术迅猛发展的2024年,RAG(Retrieval Augmented Generation,检索增强生成)技术如同一颗璀璨的新星,照亮了知识探索与创新的道路。

02


RAG技术的独特魅力

RAG巧妙地融合了检索与生成两大功能,为知识获取与创造带来了全新的变革。

1.强大的检索功能

能够在瞬间从庞大的数据库中精准定位与特定主题相关的信息,极大地提高了信息获取的效率,同时确保了信息的准确性和可靠性。

2.卓越的生成功能

依据检索到的信息,结合特定的需求和语境,生成全新的内容。无论是撰写报告、进行创意设计,还是辅助学习与教学,都能发挥巨大的作用。

03


RAG技术架构

RAG系统通常由以下几个关键组件构成,这些组件协同工作以实现高效的检索增强生成功能。

1. 检索模块

检索模块是RAG的核心组成部分之一。它负责从向量数据库中使用相似性算法快速地检索与用户查询相关的信息。这个模块通常采用先进的索引技术和搜索算法,以确保在短时间内找到最相关的内容。

例如,可能会使用倒排索引结构,将文档中的词语与包含这些词语的文档进行关联,以便在查询时能够快速定位到相关文档。同时,还会运用各种相似度度量算法,如余弦相似度、Jaccard相似度等,来评估查询与文档之间的相关性程度。

此外,检索模块还可能会结合语义搜索技术,不仅仅依赖于关键词匹配,而是深入理解查询的语义含义,从而检索出更符合用户意图的内容。这可能涉及到自然语言处理技术,如词向量表示、语义解析等,以更好地捕捉查询和文档之间的语义关系。

2. 生成模块

生成模块利用检索到的信息来生成新的内容。它通常基于深度学习模型,如神经网络语言模型。这些模型通过大量的文本数据进行训练,学习到语言的模式和规律,从而能够根据给定的输入生成自然流畅的文本。

在RAG中,生成模块会将检索到的相关信息作为输入的一部分,结合特定的任务需求和语境,生成符合要求的输出。例如,在回答问题时,生成模块会根据检索到的相关知识和问题的具体要求,生成准确、详细的答案。在文本创作任务中,它可以根据给定的主题和风格要求,生成富有创意和表现力的文本内容。

生成模块的性能取决于多个因素,包括训练数据的质量和数量、模型的架构和参数设置、以及训练算法的有效性等。为了提高生成质量,研究人员不断探索新的模型架构和训练方法,同时也在不断扩大训练数据的规模和多样性。

3. 融合模块

融合模块负责将检索模块和生成模块的输出进行整合,以产生最终的结果。这个模块的作用是确保生成的内容既具有准确性和可靠性,又具有创造性和新颖性。

融合模块可能会采用不同的策略来整合检索和生成的结果。一种常见的方法是将检索到的相关信息作为生成模块的输入提示,引导生成模块生成更符合查询要求的内容。另一种方法是对检索到的结果进行筛选和排序,选择最相关的信息与生成的内容进行合并,以提高结果的质量和可读性。

此外,融合模块还可能会考虑用户的反馈和交互,根据用户的评价和修改意见来调整检索和生成的过程,以不断优化结果。

4. 数据库与存储

RAG系统需要一个强大的数据库来存储大量的文本数据和其他相关信息。这个数据库可以是传统的关系型数据库,也可以是专门为文本数据设计的非关系型数据库,如NoSQL数据库或文档数据库。

数据库的设计和管理对于RAG系统的性能至关重要。需要考虑数据的存储结构、索引策略、数据更新和维护等方面,以确保能够快速有效地进行检索和查询。同时,还需要考虑数据的安全性和隐私保护,确保用户的数据得到妥善的保护。

04


RAG技术的应用领域

1.新闻媒体行业

记者可以借助RAG技术快速检索新闻背景资料和数据,从而撰写出更加全面、深入的报道。例如在报道重大国际体育赛事时,RAG 能够迅速提供以往类似赛事的情况、参赛队伍的历史表现以及相关运动员的资料等。

2.医疗领域

医生通过RAG检索大量的医学文献和病例资料,为疑难病症的诊断和治疗提供有力参考。同时,还可以生成个性化的治疗方案建议,提高医疗决策的准确性和效率。

3.教育领域

为学生提供个性化的学习资源,辅助教师进行教学内容的创作。比如在学生学习历史课程时,RAG可以根据学生的学习进度和兴趣点,检索相关的历史事件、人物故事等资料,并生成生动有趣的学习内容,激发学生的学习积极性。

4.金融行业

在金融领域,分析师可以利用RAG技术快速检索各类金融数据、市场报告和行业动态。这有助于他们更准确地进行市场趋势分析、风险评估和投资决策。例如,在分析股票市场时,RAG可以提供特定公司的财务数据、历史股价走势以及行业竞争格局等信息,帮助分析师生成深入的研究报告。

5.企业知识库

企业可以构建基于RAG技术的知识库,将内部文档、业务流程、产品信息等进行整合。员工在工作中遇到问题时,可以通过RAG快速检索到相关的知识和解决方案,提高工作效率和决策质量。同时,RAG还可以根据企业的特定需求,生成新的文档和报告,如项目总结、市场分析等。

05


RAG应用代码实战

(一)环境设置

首先确保安装了所需的Python库。可以使用以下命令进行安装:

pip install langchain==0.2.7 langchain_community==0.2.7 langchain_openai==0.1.15 langchain-chroma==0.1.1 langchainhub==0.1.20


(二)创建文档库

以下Python代码实现从网页读取内容,解析后存入向量数据库中,作为文档库供后续查询使用

import bs4from langchain import hubfrom langchain_community.document_loaders import WebBaseLoaderfrom langchain_chroma import Chromafrom langchain_core.output_parsers import StrOutputParserfrom langchain_core.runnables import RunnablePassthroughfrom langchain_text_splitters import RecursiveCharacterTextSplitterfrom langchain_community.chat_models import ChatZhipuAIfrom zhipuai import ZhipuAIimport osfrom dotenv import load_dotenv
"""初始化大模型"""ZHIPUAI_API_KEY = "xxxxxx" #此处填写自己的智谱API KEYchat = ChatZhipuAI(model="glm-4",temperature=0.8,zhipuai_api_key=ZHIPUAI_API_KEY,)
"""加载解析数据"""loader = WebBaseLoader(web_paths=("https://mp.weixin.qq.com/s?__biz=MzkzNTc0Nzk1Nw==&mid=2247483783&idx=1&sn=aa958eefaea785bdc07a5893d4d291fc&chksm=c2a8099df5df808b4038737bd4029bd9574e4645c2823a5e55746eec7882728fae87fffb358e#rd",),bs_kwargs=dict(parse_only=bs4.SoupStrainer(class_=("post-content", "post-title", "post-header"))),)docs = loader.load()
"""切割数据"""# 可视化观察切割效果的页面:https://chunkviz.up.railway.app/text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)splits = text_splitter.split_documents(docs)
"""将知识进行向量化"""class EmbeddingGenerator:def __init__(self, model_name):self.model_name = model_nameself.client = ZhipuAI(api_key=ZHIPUAI_API_KEY)
def embed_documents(self, texts):embeddings = []for text in texts:response = self.client.embeddings.create(model=self.model_name, input=text)if hasattr(response, 'data') and response.data:embeddings.append(response.data[0].embedding)else:# 如果获取嵌入失败,返回一个零向量embeddings.append([0] * 1024)# 假设嵌入向量维度为 1024return embeddings

def embed_query(self, query):# 使用相同的处理逻辑,只是这次只为单个查询处理response = self.client.embeddings.create(model=self.model_name, input=query)if hasattr(response, 'data') and response.data:return response.data[0].embeddingreturn [0] * 1024# 如果获取嵌入失败,返回零向量

embedding_generator = EmbeddingGenerator(model_name="embedding-2")# 知识的文本列表texts = [content for document in splits for split_type, content in document if split_type == 'page_content']
"""知识存入向量数据库中"""chroma_store = Chroma(collection_name="example_collection",embedding_function=embedding_generator,# 使用定义的嵌入生成器实例create_collection_if_not_exists=True)# 添加文本到 Chroma VectorStoreIDs = chroma_store.add_texts(texts=texts)


(三)执行查询

以下是用 Python实现的RAG查询的代码:

"""构建检索器和调用链路"""retriever = chroma_store.as_retriever()prompt = hub.pull("rlm/rag-prompt")prompt.pretty_print()
def format_docs(docs):return "\n\n".join(doc.page_content for doc in docs)rag_chain = ({"context": retriever | format_docs, "question": RunnablePassthrough()}| prompt| chat| StrOutputParser())
"""进行提问1. 查询处理:该命令接受查询“什么是任务分解?”并将其传递给 retriever 组件。检索器本质上是系统中的搜索功能,设置为在预先索引的数据集中查找信息 - 这里是根据博客内容创建的矢量存储。2. 语义搜索:检索器使用向量存储中存储的文本片段的嵌入(向量表示)来执行语义搜索。它将查询的向量表示与存储的片段的向量进行比较,以识别在语义上与查询最相似的片段。3. 检索相关文本片段:根据相似度分数,检索器从博客中选择并返回与查询最匹配的文本片段。这些片段包含被认为与回答任务分解问题最相关的信息。"""
rag_res = rag_chain.invoke("现阶段哪些用户可以使用o1模型?")print(rag_res)

06


RAG技术面临的挑战

1.数据质量与安全性

确保检索到的信息真实可靠,以及保护用户的隐私和数据安全,是RAG技术发展过程中必须要解决的难题。

2.生成内容的质量控制

避免生成内容的重复性和低质量,需要不断探索和改进算法与技术。


07


RAG技术的发展趋势

(一)多模态融合

1. 数据类型多样化:未来的RAG系统将不仅仅局限于文本数据,会更多地融合图像、音频、视频、代码等多模态数据。例如,在图像相关的应用中,RAG可以结合图像的视觉特征和相关文本描述,为图像生成更准确、更丰富的注释或理解图像背后的语义信息。对于视频内容,RAG可以通过检索相关的文本知识和视频片段,更好地回答关于视频的问题或进行视频内容的总结。在代码领域,RAG可以结合代码文本和相关的文档、注释等信息,为开发者提供更智能的代码补全、代码生成和自动程序修复等功能。

2. 多模态嵌入技术的发展:为了实现多模态数据的融合,先进的多模态嵌入技术将是关键。这些技术需要能够将不同模态的数据转换为统一的向量表示,以便模型能够更好地理解和处理多模态信息。研究人员将不断探索更有效的多模态嵌入方法,提高多模态数据的融合效果和RAG系统的性能。

(二)与大型语言模型的深度结合

1. 模型架构的优化:随着大型语言模型的不断发展,RAG将与大型语言模型更加紧密地结合,形成更强大的智能系统。在模型架构方面,会出现更多针对RAG和大型语言模型结合的优化设计,例如如何更好地利用大型语言模型的生成能力和RAG的检索能力,实现更高效的知识获取和内容生成。同时,也会探索如何在不增加过多计算资源的情况下,提高 RAG 系统的性能和响应速度。

2. 知识的动态更新与实时检索:大型语言模型的知识是基于其预训练数据的,而现实世界中的知识是不断更新的。未来的RAG系统将能够与大型语言模型实时交互,动态地更新知识,并根据用户的需求进行实时检索和生成。这将使得RAG系统能够更好地应对不断变化的信息需求,提供更准确、更及时的回答和建议。

(三)个性化与定制化服务

1. 用户偏好的学习:RAG系统将越来越注重学习用户的偏好和行为模式,为用户提供个性化的服务。通过分析用户的历史查询、交互行为和反馈信息,RAG系统可以了解用户的兴趣爱好、专业领域和需求特点,从而在检索和生成内容时更加贴合用户的个性化需求。例如,为不同领域的专业人士提供与其专业相关的深度知识和解决方案,为普通用户提供通俗易懂的解释和建议。

2. 定制化的应用场景:RAG技术将针对不同的应用场景进行定制化开发,满足各种特定领域的需求。例如,在医疗领域,RAG系统可以根据患者的病历、症状和检查结果,检索相关的医学知识和临床案例,为医生提供诊断和治疗建议;在金融领域,RAG系统可以根据市场动态、金融数据和政策法规,为投资者提供投资决策支持和风险评估。

(四)模型的可解释性与透明度提升

1. 检索过程的可视化:为了提高RAG系统的可解释性,未来的发展趋势之一是将检索过程可视化。用户可以直观地看到系统检索到的相关信息和数据来源,了解系统是如何根据这些信息生成回答的。这将有助于用户更好地理解RAG系统的工作原理,增强用户对系统的信任度。

2. 生成结果的解释:除了检索过程的可视化,对生成结果的解释也是提高可解释性的重要方面。RAG系统将能够为生成的内容提供详细的解释和说明,包括生成的依据、推理过程和相关的证据。这将使得用户能够更清楚地了解生成结果的可靠性和准确性,避免因不理解生成结果而产生的误解和质疑。

(五)更高效的检索与计算优化

1. 索引技术的改进:索引是RAG系统中实现快速检索的关键技术。未来的索引技术将不断改进,提高索引的效率和准确性。例如,采用更先进的索引算法和数据结构,减少索引的存储空间和查询时间;利用分布式索引技术,提高索引的可扩展性和并行处理能力,以应对大规模数据的检索需求。

2. 计算资源的优化:RAG系统的运行需要大量的计算资源,尤其是在处理大规模数据和复杂模型时。因此,计算资源的优化将是未来RAG发展的一个重要方向。这包括采用更高效的算法和模型压缩技术,减少模型的计算量和存储空间;利用云计算和边缘计算等技术,实现计算资源的灵活分配和高效利用,降低系统的运行成本。


08


总结

尽管RAG技术面临一些挑战,但无疑已经开启了智能知识探索的新纪元。它为我们打开了一扇通往无限知识和创新的大门,让我们能够更加高效、便捷地获取和创造知识。随着技术的不断进步和完善,相信RAG将在未来发挥更加重要的作用,为人类的发展和进步做出更大的贡献。让我们积极拥抱RAG技术,共同探索知识的无限可能,开创更加美好的未来。

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

扫码登录
登录即表示您同意《53AI网站服务协议》
服务协议

欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

一、 定义

本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

二、 账号注册与登录

登录方式:本网站支持以下登录方式,您可根据实际情况选择:

微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

三、 服务内容与规范

知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

禁止行为:您在使用服务时不得实施以下行为:

利用技术手段批量爬取、下载、转存知识库内容;

将知识库内容用于商业目的或未经授权地向第三方传播;

干扰本网站正常运行或侵犯其他用户合法权益;

发布违法违规信息或从事违反公序良俗的活动。

四、 知识产权声明

权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

五、 个人信息保护

我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

六、 免责声明

内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

七、 违约责任

如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

八、 法律适用与争议解决

本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

九、 其他

本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


已查阅