写点什么

玩转数据之使用 ElasticSearch 搭建 RAG

作者:数由科技
  • 2024-05-12
    北京
  • 本文字数:1477 字

    阅读完需:约 5 分钟

玩转数据之使用ElasticSearch搭建RAG

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

玩转数据之使用ElasticSearch搭建RAG

【连接 ES 数据库并建表】

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


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

  • 名称=text,类型=keyword;

  • 名称=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 数据表的信息,如下:

  • es 连接配置:03-es;

  • 索引名:keyword3;

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


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


对话应答示例

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

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


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

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

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

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

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

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

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

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

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


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

  • es 连接配置:03-es;

  • 索引名:knnword3;

  • 查询模式:SQL 模式;

  • 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


发布于: 刚刚阅读数: 5
用户头像

数由科技

关注

还未添加个人签名 2019-03-22 加入

还未添加个人简介

评论

发布
暂无评论
玩转数据之使用ElasticSearch搭建RAG_人工智能_数由科技_InfoQ写作社区