如何在Go应用程序中使用检索增强生成(RAG)

f921a51ac6b75603c661022cb923297f.jpeg

实现RAG(使用LangChain和PostgreSQL)以提高LLM输出的准确性和相关性

Abhishek Gupta

发布于2024年4月22日

得益于强大的机器学习模型(特别是由托管平台/服务通过API调用公开的大型语言模型,如Claude、Meta的LLama 2等),生成式AI开发已经被民主化了。这使开发人员免于考虑基础设施问题,从而可以专注于核心业务问题。这也意味着开发人员可以自由选择最适合其解决方案的编程语言。Python通常是AI/ML解决方案的首选语言,但在这一领域有更大的灵活性。

在本文中,您将看到如何利用Go编程语言来使用向量数据库和诸如langchaingo等技术实现检索增强生成(RAG)。如果您是想学习如何构建生成式AI应用程序的Go开发人员,那您就来对地方了!

如果您正在寻找使用Go进行AI/ML的入门内容,欢迎查阅我在这一领域的前期博客和开源项目。

首先,让我们在深入本文实践部分之前退后一步,了解一些背景。

LLM的局限性

大型语言模型(LLM)和其他基础模型经过了大量数据的训练,使它们能够在许多自然语言处理(NLP)任务中表现良好。但最重要的限制之一是大多数基础模型和LLM使用的是静态数据集,通常具有特定的知识截止时间(例如2022年1月)。

43b914d809c5e4f558b244314b1b43f9.jpeg

知识截止日期

例如,如果您询问了截止日期后发生的事件,它要么无法回答(这是可以的),要么更糟糕的是,自信地给出了错误的回应——通常被称为幻觉

d605ef3b944e3dd06def3884a43c0d7c.jpeg

幻觉

我们需要考虑到LLM只是根据它们训练的数据作出回应的事实——这限制了它们准确回答专业主题或专有主题问题的能力。例如,如果我提出了一个关于特定亚马逊云科技服务的问题,LLM可能(也可能不)能给出准确的回应。如果LLM能够使用亚马逊云科技服务的官方文档作为参考,那不是很好吗?

RAG(检索增强生成)有助于缓解这些问题

它通过在响应生成过程中动态检索外部信息来增强LLM,从而扩展了模型的知识库超出其原始训练数据。基于RAG的解决方案包括一个向量存储,可以对其进行索引和查询以检索最新和相关的信息,从而扩展LLM的知识超出其训练截止日期。当需要生成响应时,配备了RAG的LLM首先会查询向量存储以找到与查询相关的最新信息。这确保了模型的输出不仅基于其现有知识,还增强了最新信息,从而提高了其响应的准确性和相关性。

但RAG并非唯一的方式

尽管本文仅关注于RAG,但还有其他解决此问题的方式,每种方式都有其优缺点:

  • 任务特定调优:在特定任务或数据集上微调大型语言模型,以提高它们在这些领域的性能。
  • 提示工程:仔细设计输入提示以引导语言模型产生期望的输出,无需进行重大架构更改。
  • 少量样本学习和零样本学习:使语言模型能够在有限或无额外训练数据的情况下适应新任务的技术。

向量存储和嵌入

在上一段中,我多次提到了向量存储。它们只是存储和索引向量嵌入的数据库,向量嵌入是数据(如文本、图像或实体)的数值表示。嵌入使我们能够超越基本搜索,因为它们代表了源数据的语义含义——因此得名”语义搜索”,这是一种理解单词的意义和上下文以提高搜索准确性和相关性的技术。向量数据库还可以存储元数据,包括嵌入的原始数据源(例如,Web文档的URL)的引用。

e77ffb68cdf65cb0b8ff40880dc13605.jpeg

RAG - 数据摄取 由于生成式AI技术的爆炸式发展,向量数据库也出现了爆炸式增长。这些包括您可能已经在其他架构部分中使用的成熟SQL和NoSQL数据库,例如PostgreSQL、Redis、MongoDB和OpenSearch。但也有专门为向量存储构建的数据库。其中包括Pinecone、Milvus、Weaviate等。

好了,让我们回到RAG……

典型的RAG工作流程是怎样的?

从高层次来看,基于RAG的解决方案具有以下工作流程。这些通常作为一个连贯的管道执行:

  • 从各种外部来源检索数据,如文档、图像、网址、数据库、专有数据源等。这包括分块子步骤ÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值