RAG 实操教程:Langchain + Milvus 向量数据库创建本地知识库
本文是 Milvus 向量数据库学习的总结篇,旨在通过实战打造自己的知识库系统。
RAG 是什么
RAG(Retrieval-Augmented Generation)翻译为检索增强生成。其核心思想是以最新、最准确的数据建立 LLM(Large Language Model)的语料知识库,从而解决模型知识滞后问题。
LLM 有哪些痛点
我们知道 LLM 的知识库是通过现有的网络公开数据作为数据源来训练的。现在公开的很多模型基于的训练数据会比当前网络上公开的数据早很多,这自然会产生一个问题:网络上最新的数据和知识 LLM 是不知道的。
还有一种情况是企业私有化数据(这些数据是有价值的,也是企业的立足之本)。这些数据网络上肯定不存在,LLM 自然也不知道。
我们在提问 LLM 对于一些不知道的知识时,它很多时候无法回答,甚至会对问题进行胡诌随机回答,也就是产生幻觉。
为什么要用 RAG
如果使用预训练好的 LLM 模型,应用在某些情景下势必会有些词不达意的问题。例如问 LLM 你个人的信息,它会无法回答;这种情况在企业内部也是一样,例如使用 LLM 来回答企业内部的规章条款等。
这种时候主要有三种方式来让 LLM 变得更符合你的需求:
- Prompt Engineering:输入提示来指导 LLM 产生所需回应。例如常见的 In-context Learning,通过在提示中提供上下文或范例,来形塑模型的回答方式。例如,提供特定回答风格的示例或包含相关的情境信息,可以引导模型产生更合适的答案。
- Fine-tuning(微调):这个过程包括在特定数据集上训练 LLM,使其响应更符合特定需求。例如,一个 EDA 公司会使用其内部文件 Verilog code 进行 Fine-tuning,使其能够更准确地回答关于企业内部问题。但是 Fine-tuning 需要代表性的数据集且量也有一定要求,且 Fine-tuning 并不适合于在模型中增加全新的知识或应对那些需要快速迭代新场景的情况。
- RAG(Retrieval Augmented Generation):结合了神经语言模型和检索系统。检索系统从数据库或一组文件中提取相关信息,然后由语言模型使用这些信息来生成答案。我们可以把 RAG 想像成给模型提供一本书或者是文档、教程,让它根据特定的问题去找信息。此方法适用于模型需要整合实时、最新或非常特定的信息非常有用。但 RAG 并不适合教会模型理解广泛的信息或学习新的语言、格式。
目前的研究已经表明,RAG 在优化 LLM 方面,相较于其他方法具有显著的优势。主要的优势体现在以下几点:
- 准确性:RAG 通过外部知识来提高答案的准确性,有效地减少了虚假信息,使得产生的回答更加准确可信。
- 及时性:使用检索技术能够识别到最新的信息(用户提供),这使得 LLM 的回答能保持及时性。
- 透明性:RAG 引用信息来源是用户可以核实答案,因此其透明度非常高,这增强了人们对模型输出结果的信任。
- 定制能力:透过获取与特定领域数据,RAG 能够为不同领域提供专业的知识支持,定制能力非常高。
- 安全性和隐私:在安全性和隐私管理方面,RAG 通过数据库来存储知识,对数据使用有较好控制性。相较之下,经过 Fine-tuning 的模型在管理数据存取权限方面不够明确,容易外泄,这对于企业是一大问题。
- 经济效率:由于 RAG 不需更新模型参数,因此在处理大规模数据集时,经济效率方面更具优势。
不过虽然 RAG 有许多优势,但这 3 种方法并不是互斥的,反而是相辅相成的。结合 RAG 和 Fine-tuning,甚至 Prompt Engineering 可以让模型能力的层次性得增强。这种协同作用特别在特定情境下显得重要,能够将模型的效能推至最佳。
如何解决上面的问题
那如何让 LLM 知道这些最新/私有的数据的知识呢?那就是 RAG。通过将模型建立在外部知识来源的基础上来补充回答,从而提高 LLM 生成回答的质量。
在基于 LLM 实现的问答系统中使用 RAG 有三方面的好处:
- 确保 LLM 可以回答最新、最准确的内容。并且用户可以访问模型内容的来源,确保可以检查其声明的准确性并最终可信。
- 通过将 LLM 建立在一组外部的、可验证的事实数据之上,该模型将信息提取到其参数中的机会更少。这减少了 LLM 泄露敏感数据或'幻觉'不正确或误导性信息的机会。
- RAG 还减少了用户根据新数据不断训练模型并随着数据的变化更新训练参数的需要。通过这种方式企业可以降低相关财务成本。
现在所有基础模型使用的是 Transformer 的 AI 架构。它将大量原始数据转换为其基本结构的压缩表示形式。这种原始的表示基础模型可以适应各种任务,并对标记的、特定于领域的知识进行一些额外的微调。


