检索增强生成(Retrieval Augmented Generation,RAG)是一种强大的工具,它通过将企业外部知识整合到生成过程中,增强了大语言模型(LLM)的性能。
RAG本质上是通过工程化手段,解决LLM知识更新困难的问题。其核心手段是利用外挂于LLM的知识数据库(通常使用向量数据库)存储未在训练数据集中出现的新数据、领域数据等。通常而言,RAG将知识问答分成三个阶段:索引、知识检索和基于内容的问答。
企业中使用RAG的主要目的是增强大模型,为大模型提供能力提升,目前主要是以下几方面:
- a) 减少大模型在回答问题时的幻觉问题
- b) 让大模型的回答可以附带相关的来源和参考
- c) 消除使用元数据注释文档的需要
接下来我们一起来看看组成RAG的7大关键组成部分。
第一、自定义知识库(Custom Knowledge)
定制知识库是指一系列紧密关联且始终保持更新的知识集合,它构成了 RAG 的核心基础。这个知识库可以表现为一个结构化的数据库形态(比如:MySQL),也可以表现为一套非结构化的文档体系(比如:文件、图图片、音频、视频等),甚至可能是两者兼具的综合形式。
第二、分块处理(Chunking)
分块技术是指将大规模的输入文本有策略地拆解为若干个较小、更易管理的片段(Chunk)的过程。这一过程旨在确保所有文本内容均能适应嵌入模型所限定的输入尺寸,同时也有助于显著提升检索效率。
实施一种明智且高效的分块策略,在优化知识处理流程方面具有关键作用,能够极大地增强您的 RAG 系统的性能与响应能力。
第三、嵌入模型(Embedding Model)
一种将多模态数据(文本、图片、音频等)表示为数值向量的技术,可以输入到机器学习模型中。
嵌入模型负责将多模态数据转换成这些向量。
第四、向量数据库( Vector Databases)
一系列预先计算的文本数据向量表示,用于快速检索和相似性搜索,具有SQL CRUD 操作、元数据过滤和水平扩展等功能。
第五、用户聊天界面(User Chat Interface)
一个用户友好的界面,允许用户与 RAG 系统互动,提供输入查询并接收输出。
查询转换为嵌入向量,用于从向量数据库检索相关上下文知识!
第六、查询引擎(Query Engine)
查询引擎获取查询字符串,使用它来获取相关上下文,然后将两者一起作为提示词发送给 LLM 以生成最终的自然语言响应。这里使用的 LLM 是Llama-3。
Llama 3是Meta股份有限公司开发的一系列模型,是最先进的新型模型,有8B和70B参数大小(预先训练或指导调整)。Llama3模型是用15T+(超过15万亿)tokens和800亿至700亿参数进行预训练和微调的,这使其成为强大的开源模型之一。这是对Llama2模型的高度改进。
它在本地运行,这要归功于 Ollama。最终响应将在用户界面上显示。
第七、提示词模板(Prompt Template)
为 RAG 系统生成合适提示词的过程,可以是用户查询和自定义知识库的组合。
这作为输入给 LLM,生成最终的回复。
企业知识管理领域有句话,叫“80%的知识管理项目通常会失败”。失败的主要原因,通常会卡在虽然建好了知识库,但知识无法与业务应用结合,产生实际业务价值。一句话总结,知识库和业务场景,是割裂的。
RAG的方法是首先确定应用场景,如搜索、问答、推荐、考试等,然后根据这些场景确定需要的知识,接着考虑如何收集、处理和运营这些知识。这种方法从一开始就确保了知识管理是以业务和价值为导向。因此,相关的业务部门可以更容易地从搜索、问答、推荐等场景出发来思考问题和提出需求,而不必先理解知识管理的操作,然后再考虑如何将其与自己的业务结合应用。