前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用ElasticSearch搭建LLM-RAG系统

如何使用ElasticSearch搭建LLM-RAG系统

原创
作者头像
colorknight
修改2024-05-06 09:45:49
1660
修改2024-05-06 09:45:49
举报
文章被收录于专栏:HuggingFists

在之前的案例视频中我们演示了使用Milvus向量数据库和腾讯向量数据库实现RAG的场景应用。今天我们演示下利用ES的向量数据存储能力来实现RAG,包括三个部分:连接ES数据库并建表;数据写入ES向量数据库流程;问答对话流程。具体操作可参照下面的视频:

【连接ES数据库并建表】

这里我们没有展示连接ES数据库的过程,直接使用已经连接创建的ES7数据库03-es,相关操作可查看已发布的信息。

进入数据库操作页面,点击 新建一个支持向量数据的数据表knnword3,分别添加两个字段:

l 名称=text,类型=keyword;

l 名称=embeddings,类型=Dense_vector,dims=1024,intex=true,similarity=I2_norm(相似度算法)。

将dims设置为1024是因为Lucene最大支持长度是1024,若超过1024的长度会引发插入数据错误。

这样将向量数据表完成后,就可以在流程中使用了。

【数据写入ES向量数据库流程示例】

这里我们将之前用Milvus数据库的流程示例进行改造,将Milvus的向量数据库替换为ES数据库。整个流程的其他创建过程可参考如下视频:

轻松玩儿转数据分析系列-低代码玩转LLM-RAG

上图是用Milvus数据库实现的,现在将其替换为ES算子,如下

选择ES写出算子替换掉Milvus写出算子后,需要配置下ES数据表的信息,如下:

l es连接配置:03-es;

l 索引名:keyword3;

l 表结构:embeddings=embeddings,text=textId。

保存并执行流程,查看效果。

数据处理完成,可以看到我们已经把这个数据插到了向量库中,然后我们基于插入的这些数据进行下面对话示例的演示。

对话应答示例

关于对话应答的示例也请参照如下文章进行流程的设计。

HuggingFists-低代码玩转LLMRAG(2) Query

在整个流程中,会用到如下的算子:

l 交互式数据算子用来接受输入的问题,绑定一个真实的问题;

l 混元文本嵌入算子用于将文本转换为向量数据并关联ES数据表中数据。

l es读取算子用于完成基于输入的向量问题检索向量表。

l Rerank算子用于对原来数据的重排序

l 列添加、聚合算子主要完成数据的整合。

l 大语言提示模型实现提示模版的输出。

l 阿里大语言模型完成问题的应答,

整个流程中我们使用了腾讯的嵌入模型和阿里大语言模型,或者用混元大语言模型也可以。

这里需要修改ES的连接配置信息

l es连接配置:03-es;

l 索引名:knnword3;

l 查询模式:SQL模式;

l SQL查询语句:select * from hnnword3 where knn(‘embedding ’,‘@(embeddings)’,20,50) limit 10

配置完成后,先运行下看下效果,

可以看出能够很好回答提示问题的数据排在第五个,假设后续语料增多,后续可能排位更低,所以,设计了这个rerank算子(重排算子)

Reank算子的主要作用是语义的重排序,使其能够将跟问题最相关的语料筛选出来。加入这个算子后,重新运行下流程。发现能够准备回答问题的语料可以被筛选出来,通过Rerank算子的重新排序,精准的找到适合回答问题的语料。

最后我们整体运行下该流程,

从输出结果来看,当前问题的应答输出与我们的几次测试,基本上这结论都是一致的。

以上就是基于ES向量数据库来实现检索增强生成应用的示例,欢迎下载HuggingFists试用。下载地址如下:

【Linux版】

Github:https://github.com/Datayoo/HuggingFists

百度网盘:https://pan.baidu.com/s/1zV_ScCtLgFQSYEb0wLmXIQ?pwd=2024

【windows版】

Github: https://github.com/Datayoo/HuggingFists4Win/tree/main

百度网盘:https://pan.baidu.com/s/1JXgd5bEfSX8RsDb0WTocdw?pwd=2024

【Mac版】

百度网盘:https://pan.baidu.com/s/12WxZ-2GgMtbQeP7AcmsyHg?pwd=2024

【补充算子】

GitHub: https://github.com/Datayoo/Operators

百度网盘:https://pan.baidu.com/s/1iqX0f8xzCXMWVDA7eaqH6Q?pwd=2024

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 【连接ES数据库并建表】
  • 【数据写入ES向量数据库流程示例】
  • 对话应答示例
相关产品与服务
向量数据库
腾讯云向量数据库(Tencent Cloud VectorDB)是一款全托管的自研企业级分布式数据库服务,专用于存储、检索、分析多维向量数据。该数据库支持多种索引类型和相似度计算方法,单索引支持千亿级向量规模,可支持百万级 QPS 及毫秒级查询延迟。腾讯云向量数据库不仅能为大模型提供外部知识库,提高大模型回答的准确性,还可广泛应用于推荐系统、自然语言处理等 AI 领域。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档