可视化 RAG 数据 - 用于检索增强生成的 EDA

news2024/12/25 23:44:49

每日推荐一篇专注于解决实际问题的外文,精准翻译并深入解读其要点,助力读者培养实际问题解决和代码动手的能力。

欢迎关注公众号(NLP Research),及时查看最新内容

原文标题:Visualize your RAG Data — EDA for Retrieval-Augmented Generation

原文地址:https://medium.com/itnext/visualize-your-rag-data-eda-for-retrieval-augmented-generation-0701ee98768f

Github: https://github.com/Renumics/rag-demo/blob/main/notebooks/visualize_rag_tutorial.ipynb


如何使用 UMAP 降维技术对嵌入进行降维,以展示使用 OpenAI、Langchain 和 ChromaDB 的问题、答案及其与源文件的关系

像 GPT-4 这样的大型语言模型(LLM)在文本理解和生成方面表现出了令人印象深刻的能力。但它们在处理特定领域信息时面临挑战。当查询超出训练数据范围时,它们往往会产生错误的答案。此外,LLMs 的推理过程缺乏透明度,用户很难理解结论是如何得出的。

为解决这些挑战,一种被称为检索增强生成(Retrieval-Augmented Generation,RAG)的技术已经被开发出来。RAG 在语言大模型(LLM)的工作流中添加了一个检索步骤,使其能够在响应查询时从额外的源(例如您的私人文本文档)中查询相关数据。这些文档可以事先被划分为小片段,为这些片段生成嵌入(紧凑的向量表示),使用类似于 OpenAI 的 embedding-ada-002 的机器学习模型。具有相似内容的片段将具有相似的嵌入。当 RAG 应用程序收到一个问题时,它将该查询投影到相同的嵌入空间,并检索与查询相关的相邻文档片段。然后,LLM 使用这些文档片段作为上下文来回答问题。这种方法可以提供回答查询所需的信息,同时通过向用户呈现使用的片段来实现透明度。

在开发 RAG 应用程序时,正如许多其他领域所认识到的那样,对数据有一个良好的概览非常重要。对于 RAG 而言,可视化嵌入空间尤其有用,因为 RAG 应用程序会使用这个空间来查找相关信息。由于查询与文档片段共享空间,因此考虑相关文档片段与查询之间的接近程度尤为重要。我们建议使用 UMAP 之类的可视化方法,将高维嵌入减少为更易于管理的二维可视化,同时保留重要属性,如片段和查询之间的关系和邻近性。虽然高维嵌入被简化为只有两个分量,但仍然可以识别问题及其相关文档片段在嵌入空间中形成的聚类。这有助于深入了解数据的本质。

在本文中,您将学习如何

  • 准备文档:首先开始收集数据。本教程以维基百科中的一些HTML格式的一级方程式(Formula One)数据为例,用作构建RAG应用程序的数据集。当然,您也可以在这里使用自己的数据!

  • 拆分和创建嵌入:将收集到的文档拆分成更小的片段,并使用嵌入模型将其转换为紧凑的向量表示。这需要使用分割器、OpenAI 的text-embedding-ada-002 和作为向量存储的 ChromaDB。

  • 构建 LangChain:将用于创建上下文的提示生成器、用于获取相关片段的检索器和用于回答查询的 LLM(GPT-4)结合起来,建立 LangChain。

  • 询问问题:学习如何向 RAG 应用程序提问。

  • 可视化:使用 Renumics-Spotlight 可视化二维嵌入,并分析查询和文档片段之间的关系和邻近性。

本简化教程将引导您了解开发 RAG 应用程序的每个阶段,并特别关注可视化结果的作用。

准备

首先,安装所有必需的包:

pip install langchain langchain-openai chromadb renumics-spotlight 

本教程使用 Langchain、Renumics-Spotlight python 包:

  • Langchain:整合语言模型和 RAG 组件的框架,使设置过程更加顺畅。
  • Renumics-Spotlight:交互式探索非结构化 ML 数据集的可视化工具。

将使用 OpenAI 提供的所需 ML 模型

  • GPT-4:最先进的语言模型,以其先进的文本理解和生成能力而著称。

  • embedding-ada-002:一个专门用于创建文本嵌入表示的模型。

设置你的 OPENAI_API_KEY;例如,你可以在笔记本中使用笔记本行魔术命令设置它:

%env OPENAI_API_KEY=<your-api-key>

准备文件

对于这个演示,你可以使用我们准备的维基百科所有一级方程式文章的数据集。该数据集是使用wikipedia-api和BeautifulSoup创建的。你可以下载这个数据集。

将提取的 html 文件放入 docs/ 子文件夹。

或者,您也可以创建 docs/ 子文件夹并将自己的文件复制到其中,从而使用自己的数据集。

拆分并为数据集创建嵌入

您可以跳过这一部分,下载包含一级方程式数据集嵌入式数据的数据库。

要自行创建嵌入模型,首先需要设置嵌入模型和向量存储。这里我们使用 OpenAIEmbeddings 的 text-embedding-ada-002,以及使用 ChromaDB 的向量存储:

from langchain_openai import OpenAIEmbeddings
from langchain.vectorstores.chroma import Chroma

embeddings_model = OpenAIEmbeddings(model="text-embedding-ada-002")
docs_vectorstore = Chroma(
    collection_name="docs_store",
    embedding_function=embeddings_model,
    persist_directory="docs-db",
)

向量存储将保存在 docs-db/ 文件夹中。

为了填充向量存储,我们使用 BSHTMLLoader 加载 HTML 文档:

from langchain_community.document_loaders import BSHTMLLoader, DirectoryLoader
loader = DirectoryLoader(
    "docs",
    glob=

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

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

相关文章

网络原理 - HTTP/HTTPS(5)

HTTPS HTTPS也是一个应用层协议.在HTTP协议的基础上引入了一个加密层. HTTP协议内容都是按照文本的方式明文传输的. 这就导致了在传输过程中出现了一些被篡改的情况. 臭名昭著的"运营商劫持" 下载一个天天动听. 未被劫持的效果,点击下载按钮,就会弹出天天动听的…

yolov5-tracking-xxxsort yolov5融合六种跟踪算法(三)--目标跟踪

本次开源计划主要针对大学生无人机相关竞赛的视觉算法开发。 开源代码仓库链接&#xff1a;https://github.com/zzhmx/yolov5-tracking-xxxsort.git 先按照之前的博客配置好环境&#xff1a; yolov5-tracking-xxxsort yolov5融合六种跟踪算法&#xff08;一&#xff09;–环境配…

java医院综合信息管理云HIS系统源码(前后端分离、SaaS模式)

目录 综合管理系统 业务系统 技术框架 系统基础数据录入 系统功能介绍 云his综合管理系统 云his业务系统 门诊管理系统 住院管理系统 药房管理系统 药库管理系统 系统管理 云HIS系统分为两个大的系统&#xff1a;综合管理系统和业务系统 综合管理系统 由运营商、开…

【Linux】 logout命令使用

logout命令 Linux logout命令用于前登录的用户退出系统。 它会终止当前用户的会话并返回到登录界面或者重新登录。当使用logout命令时&#xff0c;系统会关闭所有与当前用户相关的进程和程序&#xff0c;并释放占用的资源。 使用logout命令可以方便地切换用户或者注销当前用…

力扣日记2.22-【回溯算法篇】47. 全排列 II

力扣日记&#xff1a;【回溯算法篇】47. 全排列 II 日期&#xff1a;2023.2.22 参考&#xff1a;代码随想录、力扣 47. 全排列 II 题目描述 难度&#xff1a;中等 给定一个可包含重复数字的序列 nums &#xff0c;按任意顺序 返回所有不重复的全排列。 示例 1&#xff1a; 输…

AMRT3D数字孪生引擎详解

AMRT 3D数字孪生引擎介绍 AMRT3D引擎是一款融合了眸瑞科技的AMRT格式与轻量化处理技术为基础&#xff0c;以降本增效为目标&#xff0c;支持多端发布的一站式纯国产自研的CS架构项目开发引擎。 引擎包括场景搭建、UI拼搭、零代码交互事件、光影特效组件、GIS/BIM组件、实时数据…

汽水分离器——矿用分离过滤装置

去找一个奋发向上能带动你的人&#xff0c;去找一个像太阳一样的人&#xff0c;帮你晒晒全部不值一提的迷茫! 一、结构&#xff1a; 气水分离器又称气水分离过滤器&#xff0c;主要由&#xff1a;进口、筒体、滤芯连接件、滤芯、密封圈、阀门连接件、出气管、排水口、压力表等…

c++ qt五子棋联网对战游戏

C qt 五子棋联网对战游戏运行环境 Qt 6.6.0 (MSVC 2019 64-bit) 代码文件编码格式 ANSI txt文件编码格式 ANSI 测试用例 服务端端口被占用 通过客户端端口被占用 通过客户端连接服务端 服务端中途断开 通过客户端连接服务端 客户端中途断开 通过服务端没有启动 客户端启动…

【微服务】国内微服务生态标准-SpringCloud Alibaba

现在已经是21世纪的二十年代&#xff0c;在未来的很长时间&#xff0c;以互联网、IOT物联网为代表的分布式应用必将越来越多&#xff0c;大量的软件企业对掌握微服务与高可用、高性能、高并发的架构人才也必定趋之若鹜。我们可以看看现阶段针对软件架构师的招聘需求和薪资&…

12 个顶级音频转换器软件(免费)

当涉及不受支持的音乐文件时&#xff0c;音频文件转换器软件总是会派上用场。当您希望缩小大量大型音乐文件的大小以节省设备存储空间时&#xff0c;它也很有帮助。您在寻找传输音频的软件吗&#xff1f;好吧&#xff0c;请仔细选择音频转换器&#xff0c;因为最好的音乐转换器…

【Android安全】Windows 环境下载 Android 源码

准备环境 安装 git 安装 Python 硬盘剩余容量最好大于 100G 打开 Git Bash&#xff0c;用 git 克隆源代码仓库 git clone https://android.googlesource.com/platform/manifest.git //没有梯子使用清华源 git clone https://aosp.tuna.tsinghua.edu.cn/platform/manifest.git…

重大更新:GPT-4 API 现全面向公众开放!

重大更新&#xff1a;GPT-4 API 现全面向公众开放&#xff01; 在 AIGC&#xff08;人工智能生成内容&#xff09;领域内&#xff0c;我们一直致力于跟踪和分析如 OpenAI、百度文心一言等大型语言模型&#xff08;LLM&#xff09;的进展及其在实际应用中的落地情况。我们还专注…

基于springboot+vue的大学生竞赛管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

布隆过滤器笔记

课程地址 布隆过滤器由一个很长的二进制向量和一系列哈希函数组成 特性&#xff1a;布隆过滤器可以告诉我们 “某样东西一定不存在或者可能存在”&#xff0c;也就是说布隆过滤器说这个数不存在则一定不存在&#xff0c;布隆过滤器说这个数存在可能不存在。这个特性能很好地被…

ClickHouse 指南(三)最佳实践 -- 稀疏主索引

在ClickHouse主索引的实用介绍 ClickHouse release 24.1, 2024-01-30 1、简介 在本指南中&#xff0c;我们将深入研究ClickHouse索引。我们将详细说明和讨论: ClickHouse中的索引与传统的关系数据库管理系统有何不同ClickHouse是如何构建和使用表的稀疏主索引的什么是在Clic…

Linux-基础命令(黑马学习笔记)

Linux的目录结构 Linux的目录结构 Linux的目录结构是一个树形结构 Windows系统可以拥有多个盘符&#xff0c;如C盘、D盘、E盘 Linux没有盘符这个概念&#xff0c;只有一个根目录 /&#xff0c;所有文件都在它下面 Linux路径的描述方式 ● 在Linux系统中&#xff0c;路径之…

选择适合你的编程语言

引言 在当今瞬息万变的技术领域中&#xff0c;选择一门合适的编程语言对于个人职业发展和技术成长至关重要。每种语言都拥有独特的设计哲学、应用场景和市场需求&#xff0c;因此&#xff0c;在决定投入时间和精力去学习哪种编程语言时&#xff0c;我们需要综合分析多个因素&a…

数据结构——链表OJ题

目录 1.给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 2.给定一个带有头结点 head 的非空单链表&#xff0c;返回链表的中间结点。如果有两个中间结点&#xff0c;则返回第二个中间结点…

OpenAI划时代大模型——文本生成视频模型Sora作品欣赏(七)

Sora介绍 Sora是一个能以文本描述生成视频的人工智能模型&#xff0c;由美国人工智能研究机构OpenAI开发。 Sora这一名称源于日文“空”&#xff08;そら sora&#xff09;&#xff0c;即天空之意&#xff0c;以示其无限的创造潜力。其背后的技术是在OpenAI的文本到图像生成模…

Nginx基本操作

目录 引言 一、Nginx配置文件详解 &#xff08;一&#xff09;配置文件 &#xff08;二&#xff09;模块 二、全局配置文件 &#xff08;一&#xff09;关闭版本或修改版本 1.关闭版本号 2.修改版本信息 &#xff08;二&#xff09;修改启动的进程数 &#xff08;三&…