当前位置:   article > 正文

如何使用ElasticSearch搭建LLM-RAG系统_基于es搭建rag

基于es搭建rag

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

《玩转数据之使用ElasticSearch搭建RAG》icon-default.png?t=N7T8https://www.bilibili.com/video/BV1mZ421E7ki/

【连接ES数据库并建表】

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

进入数据库操作页面,点

新建一个支持向量数据的数据表knnword3,分别添加两个字段:

  1. 名称=text,类型=keyword;
  2. 名称=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数据表的信息,如下:

  1. es连接配置:03-es;
  2. 索引名:keyword3;
  3. 表结构:embeddings=embeddings,text=textId。

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

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

对话应答示例

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

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

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

  1. 交互式数据算子用来接受输入的问题,绑定一个真实的问题;
  2. 混元文本嵌入算子用于将文本转换为向量数据并关联ES数据表中数据。
  3. es读取算子用于完成基于输入的向量问题检索向量表。
  4. Rerank算子用于对原来数据的重排序
  5. 列添加、聚合算子主要完成数据的整合。
  6. 大语言提示模型实现提示模版的输出。
  7. 阿里大语言模型完成问题的应答,

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

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

  1. es连接配置:03-es;
  2. 索引名:knnword3;
  3. 查询模式:SQL模式;
  4. 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

百度网盘:百度网盘 请输入提取码

【Mac版】

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

【补充算子】

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

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

如果使用过程中遇到问题,可加入我们的交流群:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/854951
推荐阅读
相关标签
  

闽ICP备14008679号