Elasticsearch:智能 RAG,获取周围分块(一)

news2024/12/23 11:38:27

作者:来自 Elastic Sunile Manjee

在检索增强生成 (RAG) 领域,一个持续存在的挑战是找到输入大型语言模型 (LLM) 的最佳数据量。数据太少会导致响应不足或不准确,而数据太多会导致答案模糊。这种微妙的平衡启发我开发了一个专注于智能分块和利用 Elasticsearch 向量数据库的 notebook。

动机

构建此 notebook 的主要动机是通过解决数据分块的挑战来展示一种改进的 RAG 方法。传统方法通常无法动态调整输入到 LLM 的数据大小,要么因过多上下文而使模型不堪重负,要么因太少而使其不足。此笔记本旨在达到适当的平衡,为 LLM 提供足够的信息以生成精确且与上下文相关的响应。但是,必须注意的是,没有一刀切的解决方案。

此方法特别适用于内容在较长部分或章节中流动的书籍和类似文本。但是,它可能需要适应结构化为较短、不同部分的文本,例如研究论文或文章,其中每个部分可能涵盖不同的主题。在这种情况下,可能需要额外的策略来有效地分块和检索相关内容。

方法

获取周围块

核心思想是将源文本划分为可管理的块,确保每个块包含适量的信息。为了进行演示,我使用了《哈利波特与魔法石》中的文本。文本被划分为章节,每个章节进一步划分为更小的块。这些块及其密集和稀疏 (ELSER) 向量表示都被编入 Elasticsearch 向量数据库的索引中。

为区块分配编号

章节中的每个区块都被分配了一个连续的整数,使我们能够识别其位置。当找到匹配的区块时,章节编号和区块编号用于检索周围的区块,为 LLM 提供额外的上下文。

Elasticsearch 中的向量数据库

这些块及其向量表示被提取到 Elasticsearch Cloud 实例中。Elasticsearch 强大的向量搜索功能使其成为托管这些块的理想选择,允许根据用户查询的语义内容或文本匹配高效地检索最相关的块。

AI 搜索

为了检索相关块,我采用了一种混合搜索策略,同时使用密集向量比较、稀疏向量比较和文本搜索。这种多方面的方法可确保搜索结果在语义上丰富且在上下文上准确。发出查询以查找匹配的块,该查询返回块编号和章节。然后根据匹配的块获取该章节的周围块。

RAG 模式

当进行查询时,搜索流程执行以下步骤:

  1. 查询分析:将用户的查询转换为密集和稀疏向量,以从 Elasticsearch 索引中检索最相关的块。
  2. 块检索:使用 AI 搜索策略,系统检索最相关的块。
  3. 上下文扩展:还会检索相邻块(n-1 和 n+1),以提供更全面的上下文。如果该块是章节中的最后一块,则获取 n-1 和 n-2;如果它是第一块,则获取 n+1 和 n+2。
  4. LLM 响应:然后将这些智能选择的块输入到 LLM 中,确保它接收最佳信息量以生成精确且上下文相关的响应。

为什么这很重要

这种方法通过优化输入到 LLM 的输入数据来解决 RAG 的一个关键方面。通过利用智能分块和混合语义搜索,该方法提高了 LLM 生成的响应的准确性和相关性。它展示了一种可以广泛应用于 RAG 领域内各种应用的模式,从客户支持到内容生成等等。

结论

本 notebook 强调了 RAG 框架中智能数据分块的重要性,并演示了如何利用 Elasticsearch 矢量数据库来实现最佳结果。通过确保 LLM 接收到适量的信息,这种方法为更准确、上下文更丰富的响应铺平了道路,从而提高了 RAG 系统的整体效率。

准备好自己尝试了吗?开始免费试用。
希望将 RAG 构建到你的应用程序中?想要尝试使用向量数据库的不同 LLMs?
查看 Github 上针对 LangChain、Cohere 等的示例笔记本,并立即加入 Elasticsearch Relevance Engine 培训。

原文:Intelligent RAG, Fetch Surrounding Chunks — Elastic Search Labs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1831832.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

超参数优化(网格搜索简介)

网格搜索简介 1、 网格搜索优化2、随机网格搜索 1、 网格搜索优化 在所有超参数优化(HypeParameter Optimization,HPO)中,枚举网格搜索(GridSearchCV)是最为基础和经典的方法 在搜索开始之前,我…

List实现类——ArrayList、LinkedList及迭代器(并发修改异常错误)源码分析

1、ArrayList本质及源码分析 两种情况:加一个和很多个 底层原理:elementData是底层数组的名字 再次满了的话,在扩容1.5倍 如果利用addAll一次添加多个元素,按实际元素数进行扩容 源码分析: 1、空参构造,…

【源码】Spring事务之事务失效及原理

Spring事务 1、【源码】SpringBoot事务注册原理 2、【源码】Spring Data JPA原理解析之事务注册原理 3、【源码】Spring Data JPA原理解析之事务执行原理 4、【源码】SpringBoot编程式事务使用及执行原理 5、【源码】Spring事务之传播特性的详解 6、【源码】Spring事务之…

语音识别相关文章整理目录

一、语音大模型架设与功能实现 使用sherpa-ncnn进行中文语音识别(ubuntu22)-CSDN博客文章浏览阅读953次,点赞30次,收藏26次。请注意,需要首先安装安装了所有必要的依赖项,包括 CMake、Git 和一个合适的 C/…

风控中的文本相似方法之余弦定理

一、余弦相似 一、 余弦相似概述 余弦相似性通过测量两个向量的夹角的余弦值来度量它们之间的相似性。0度角的余弦值是1,而其他任何角度的余弦值都不大于1;并且其最小值是-1。 从而两个向量之间的角度的余弦值确定两个向量是否大致指向相同的方向。结…

vite|webpack环境变量-多模式配置

vite官方文档:环境变量和模式 | Vite (vitejs.net) (https://www.vitejs.net/guide/env-and-mode.html) 一、工程根目录创建env文件如下: 文件中参数书写格式: VITE_XXXXXX XXXXXX。必须使用等号。必须以VITE_开头…

《地下城与勇士》新手攻略,开荒必备!云手机多开教程!

《地下城与勇士》(DNF)是一款广受欢迎的多人在线动作角色扮演游戏。玩家将在游戏中扮演不同职业的角色,通过打怪、做任务、PK等方式不断提升自己,探索广阔的阿拉德大陆。游戏中设有丰富的副本、装备、技能系统,玩家可以…

程序员画图工具?那必然是你了!!【送源码】

作为一个程序员,画图是必不可少的技巧。当然此画图不是搞艺术,而是画各种架构图、流程图、泳道图以及各种示意图。 平时我不论是记笔记、写技术文章,还是工作中写文档,都需要配上各种各样的示意图。不管是帮助自己更好的掌握知识…

「6.18福利」精选大厂真题|笔试刷题陪伴|明天正式开屋啦 - 打卡赢价值288元丰厚奖励

🍰关于清隆学长 大家好,我是清隆,拥有ACM区域赛 银牌🥈,CCCC天梯赛 国一,PTA甲级 98 分。 致力于算法竞赛和算法教育已有 3 年,曾多次 AK 互联网大厂笔试,大厂实习经验丰富。 打卡…

示例:WPF中使用DecodePixelHeight和DecodePixelWidth优化Image性能

一、目的:在使用Image控件时,如果图片太大或者图片数量过多时加载出来的程序内存会非常的大,但一般图片多时我们只要预览缩略图就可以,查看时再显示原图,这个时候需要通过通过设置BitmapImage的DecodePixelHeight和Dec…

Postgresql配置SSL连接

1、系统需要有openssl、openssl-devel包 yum -y install openssl openssl-devel 2、查看当前数据库是否使用openssl编译 pg_config|grep CONFIGURE 如果没有重新编译 make clean make && make install 3、服务器端证书配置 服务器端需生成三个文件: root.crt(根证…

浏览器调试小技巧

一. 使用XSwitch工具代理本地服务地址 1. 谷歌提供了一个扩展程序: XSwitch 工具描述: 一个重定向URL并允许CORS使本地开发体验轻松愉快的工具。 ps: 这个工具只有谷歌有, 只能翻墙后下载 安装成功后 长这样: 2. 全局安装http-server , 用于在本地启动一个服务 npm i http-…

白帽子最喜欢用什么渗透测试工具?看看哪些是你用过的

一、白帽子最喜欢用什么安全工具? 2020 年的 HackerOne 黑客报告中,统计过白帽子们最喜欢用的软硬件工具。 从图中可以看到,89% 的白帽子都会使用 Burp Suite 这个 Web 应用安全测试工具,有 39% 会尝试自己写工具,第三名的 Fuzzers 是模糊测试工具。再后面主要是一些代理…

Dart 弱引用进阶

前言 村里的老人说:“真正的强者,都是扮猪吃老虎。” 日常开发中经常需要用到弱引用,Dart 语言里也有提供弱引用的接口 WeakReference,我们可以基于它开发更强大的复杂结构。 在前面的文章中,我们用到了一个以弱引用…

现代易货:创新交易模式引领物品交换新潮流

在繁华的现代经济浪潮中,物品交换的文化逐渐崭露头角,引领了一种新颖的交易潮流——现代易货交易模式。这种模式不仅是对古老“以物易物”交易的现代化诠释,更是对物品价值多元化和交换方式创新的深入探索。那么,现代易货交易究竟…

螺丝工厂vtk ThreadFactory(1)

螺丝工厂vtkThreadFactory (1) 缘起 几年前的探索在Python里应用Openscad实现3D建模之3D螺纹建模初探3 新的参考: generating nice threads in openscadvtkRotationalExtrusionFilter 辅助AI: coze 笔记📒: openscad 代码分析 // 半径缩放函数,用…

国货骄傲精亿内存条颠覆游戏战场,推出超强DDR5 7200玄武系列电竞内存

随着科技的迅猛发展,对高性能电脑的需求不断增长,特别是在电竞领域。认识到这一点,国货知名品牌精亿(JINGYI)推出了其全新一代DDR5 7200 RGB电竞内存条,并命名系列为象征中国上古四大神兽的玄武-系列。这款产品凭借其卓越性能和令人印象深刻的海力士A-DIE颗粒配置,正在迅速成为…

环信beta版鸿蒙IM SDK发布!深度适配HarmonyOS NEXT系统

环信beta版鸿蒙IM SDK已正式发布!欢迎有需求开发者体验集成! 版本亮点 提供原生鸿蒙 SDK,支持原生 ArkTS 语言,全面拥抱鸿蒙生态提供鸿蒙系统上单聊、群聊、会话等能力和服务覆盖消息管理、用户属性、群租管理、离线推送.多设备…

【C++】认识STL

【C】认识STL STL的概念STL的版本STL的六大组件STL的三个境界STL的缺陷 STL的概念 SLT(standard template libaray-标准模板库):是C标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个保罗数据结构与算法的软件框架。 STL的版本 原…

深入学习html的步骤

推荐的学习步骤&#xff1a; 1. 深入了解HTML基础标签 列表 HTML提供有序列表(<ol>)和无序列表(<ul>)。 <h2>无序列表</h2> <ul><li>项目一</li><li>项目二</li><li>项目三</li> </ul><h2>…