大型语言模型(LLM)为有抱负的研究人员和人工智能爱好者创造了巨大的机遇。但是,我们需要了解这些 LLM 的一个重要行为:它们会产生幻觉。它们有时会产生不准确、有偏见或编造的答案/回应。为了减少这种幻觉行为,我们采用了多种技术。检索增强生成被认为是减轻 LLM 幻觉的复杂策略之一。但是,构建强大的 RAG 应用程序同样取决于各种因素,不仅仅是选择 LLM,还有其他因素,如嵌入模型、分块大小和策略、人工智能框架、向量数据库、检索策略等。
今天,我们将了解语义分块如何增强 RAG 应用,从而检索出最准确、上下文最正确的分块。
什么是检索增强生成(RAG)?
检索增强生成(RAG)是一种利用数据库中存储的外部数据来响应用户查询的方法。这可以通过更多的上下文来提高生成响应的质量。RAG 同时利用检索技术和生成模型来生成与上下文相关的响应。
想一想你希望从人工智能应用程序中获得自定义响应的场景。首先,通过嵌入模型将组织的文档转换为嵌入,并存储在矢量数据库中。当向人工智能应用程序发送查询时,它会被转换为矢量查询嵌入,并通过矢量数据库的矢量相似性搜索找到最相似的对象。这样,你的 LLM 驱动的应用程序就不会产生幻觉,因为你已经指示它将自定义数据作为其响应的基础。
一个简单的使用案例是客户支持应用程序,自定义数据被输入存储在矢量数据库中的应用程序,当用户查询时,它会生成与你的产品或服务相关的最合适的响应,而不是一些通用的答案。
RAG 管道基本上包括三个关键部分: 检索组件、增强组件和生成组件。
这三个组成部分是 RAG 管道的基础,可帮助用户获得他们正在寻找的上下文丰富且准确的回复。这就是 RAG 在构建聊天机器人、问题解答系统等方面如此特别的原因。
RAG 应用程序中的分块
在检索-增强生成(RAG)应用中,分块是指将大块数据分解成较小的、可管理的片段或 "块"。这一过程能使模型处理更精确、更相关的数据部分,从而提高信息检索的效率和准确性。在 RAG 系统中,当进行查询时,模型会通过这些数据块来查找最相关的信息,而不是翻阅整个文档。这不仅能加快检索过程,还能通过关注最相关的信息来提高生成回复的质量。在文档较长或包含不同主题的情况下,分块法尤其有用,因为它能确保检索到的数据与上下文相符且准确无误。
分块策略
在 RAG 应用中,分块策略对于提高检索效率和准确性至关重要。这些策略的使用取决于我们的使用案例。下面列出一些著名的分块策略。
通过关注文本的含义和上下文,语义分块技术大大提高了检索质量。它是维护语义完整性、确保信息检索连贯性和相关性的理想选择。
因此,让我们通过一个简单的教程来了解语义分块是如何实际运作的。
语义分块教程
我们将使用一份公开的 pdf 文件,使用天真分块和语义分块对其进行分块,将其存储到我们的数据库中,然后使用这两种分块策略进行检索,以构建 RAG 管道,了解它们的响应情况。
使用的技术栈
注册 SingleStore 后,在工作区中创建一个数据库。
然后进入 "数据工作室 "选项卡,创建一个新笔记本。
创建新笔记本后,从下拉菜单中选择工作区和相应的数据库,如下图所示。
然后就可以开始运行代码了。
我们基本上使用天真分块和语义分块技术对数据进行分块。然后为这两种技术构建 RAG 管道。
语义分块的 RAG 管道
用于简单分块的 RAG 管道
然后,我们针对每种策略提出 3 个问题,看看大家的回答。
在本教程的最后,你将了解到使用语义分块生成的回复与使用原始分块生成的回复相比,能提供更详细、语境更丰富的解释。
这证明了语义分块在提取和呈现细微信息方面的优越性,使其成为在复杂场景中进行信息检索的更好策略。