ChatGPT结合本地数据_llamaindex

news2024/11/27 15:31:18

1 功能

大模型学习的主要是通用数据,而用户可能需要让ChatGPT在本地的知识库中寻找答案。
普通用户不太可能训练大模型;由于本地数据格式丰富,内容烦多,且考虑到使用成本和token大小限制,也不可能在每次提问时都将所有数据传给ChatGPT。
llamaindex提供了解决此问题的方法:通过ChatGPT把本地文本转成Embedding,然后在本地建立数据索引;询问时先在本地查询,再用ChatGPT将查询结果合成答案,llamaindex是用户数据和大模型之间的接口。

2 原理

2.1 模块

llama_index由三个主要模块组成:

  • 数据模块:用于读取本地或网络数据,并将大块文本切分成Node块。
  • 索引和存储模块:将文本块通过ChatGPT转换成Embedding嵌入表示存储在本地,构建本地知识库。
  • 搜索模块:根据使用者提出的问题,在本地知识库中定位可能的答案,然后将问题和答案传给ChatGPT整合出最终答案。

2.2 组织数据

当用户提出问题时,需要与本地知识库进行匹配,如果数据库中内容很多,会花费大量匹配时间。为节约时间,可以对文章中的章、节、文本文件整体内容、目录内容等生成总结,逐层构造树结构,图结构,或者关键字映射表,以节约搜索时间。
llamaindex提供了各种结构支持,需要开发者自行调用。

2.3 核心概念

  • Node & Index
    Node指切分后的文本块;Index索引可以理解为Node数据块通过ChatGPT转换后在本地的存储方式。索引结构支持List, Tree, Keyword方式;除了创建index以外,还提供对其中的子块进行增删的编辑操作,以节约token。另外,除了对纯文本进行索引,还提供图索引,表索引,SQL中数据索引。

  • Embedding & Vector
    这里的Embedding和Vector指的都是通过ChatGPT转换后的数据;当前版本嵌入的维度是 1536(问题的和Node一样长);假设将每个块设成最大600(Node: chunk size),如果是18K大小的文本文件,存储了utf-8的中文文字,每字占3字节,6000多字,约使用10来个Node存储;每个Node被转换成1538个float值,存储在本地,即Vector store。

  • Query & Response Synthesis
    Query询问指的是用户提出的问题;Response Synthesis指的是从索引中定位出可选答案后,组织答案的方法。

3 文档

3.1 文档内容

代码中的docs目录数据用于生成网页版的说明文档,也可通过以下网址直接查看文档:
https://gpt-index.readthedocs.io/en/latest/
通过操作界面左上图标可调出帮助目录,操作左下角切换不同版本文档。

3.2 学习路径

文档内容很多,包含文本和源码示例,推荐使用以下顺序阅读文档:

  • gallery: 看别人用该库实现的功能
  • getting_started: 最简单的安装方法和示例
  • guides: 一般用户使用方法
  • use_case: 使用案例(做了什么,怎么做,相对简单)
  • how_to (KEY COMPONENTS): 原理和用法的主索引,从上到下由浅入深(前三项最重要)
  • reference: 细节的详细信息, 大部分是源码自动生成的文档 (具体使用时查看)

4 代码分析

  • benchmarks: 用于评测
  • build/dist/scripts: 打包过程中产生的目录文件
  • tests: 测试用例
  • llama_index: 核心源码 (200多个源码文件)
    • readers: 从各种数据源读入数据的解析工具, 其file支持多种模式
    • index, storage, query等,建议以文档为入口开始学习
  • examples: 分门别类的示例
  • experimental: 一些不重要的实验
  • README.md:示例了最简单的使用方法

4.1 安装

4.1.1 pip安装

llamaindex 是个 python库,用pip安装即可(需要Python 3.8及以上版本)。

pip install llama-index

4.1.2 源码安装

由于版本更替太快,建议使用源码安装。
源码地址:https://github.com/jerryjliu/llama_index

5 注意事项

  • 使用ChatGPT需要设置APIKEY
  • 需要指定数据在本地存放的目录
  • 如果需要可以做多个索引
  • 注意安装的版本和源码一致,否则example将无法运行
  • 推荐使用最新版本,目前最新版本0.6.x的数据模式以及log信息都优于之前版本

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

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

相关文章

balenaEtcher v1.18.1 开源跨平台镜像文件快速刻录工具

balenaEtcher 是一款开源免费的跨平台镜像文件快速刻录工具,使用体验感觉比软碟通UltraISO好用多了,推荐使用。它可以帮助用户快速将 ISO 文件、IMG 文件或者其他格式的镜像文件刻录到 USB 驱动器、SD 卡或者其他可烧录介质上。它支持 Windows、macOS 和…

50 Projects 50 Days - Blurry Loading 学习记录

项目地址 Blurry Loading 展示效果 Blurry Loading 实现思路 元素组成只需要有一张图片和中间的文本即可。针对动态过程分析初始和终止状态即可,初始时图片全模糊,文本显示0%;终止时,图片完全不模糊,文本会显示100…

Junit 单元测试框架(简单使用)

目录 一、注解 1. Test 2. BeforeEach 和 BeforeAll 3. AfterEach 和 AfterAll 二、断言 1. Assertions类 1.1 assertEquals 和 assertNotEquals 1.2 assertTrue 和 assertFalse 1.3 assertNull 和 assertNotNull 三、用例执行顺序 1. 方法的排序 —— Order 四、…

人工智能轨道交通行业周刊-第44期(2023.5.8-5.14)

本期关键词:智能列控、苏州城轨智慧大脑、智慧乘务系统、深铁智慧运维、铁路遥感、3D视觉 1 整理涉及公众号名单 1.1 行业类 RT轨道交通人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟VSTR铁路与城市轨道交通R…

【C++入门攻略】和【编程常见问题】

常见问题 vsstudio快捷键 快速注释组合键 ctrlk ctrlc 取消注释快捷键 ctrlk ctrl u 支持垃圾回收机制 大多数面向对象编程语言具有垃圾回收机制。早期的C语言不具备垃圾回收机制,这意味着申请的内存资源在使用完成后,需要程序员自己释放。直到C11标…

1066 Root of AVL Tree(51行代码+超详细注释)

分数 25 全屏浏览题目 切换布局 作者 CHEN, Yue 单位 浙江大学 An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child subtrees of any node differ by at most one; if at any time they differ by more than one, rebala…

孙鑫VC++第一章 Windows程序内部运行机制

目录 1.1 API和SDK 1.2 窗口和句柄 1.3 消息和队列 1.4 WinMain 1.4.1 WinMain函数的定义 1.4.2 窗口的创建 1.4.3 消息循环 1.4.4 窗口过程函数 1.1 API和SDK API:Windows操作系统提供给应用程序编程的接口。 SDK(软件开发包):用于开发的所有资…

swing列表框_强制存储的DefaultListModel和DefaultComboBoxModel

package com.aynu.layout;import javax.swing.*; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;public class DefaultListModelTest {JFrame jf new JFrame("测试DefaultListModel");JTextField bookNa…

JVM学习(二)

1. JVM 运行时内存 Java 堆从 GC 的角度还可以细分为: 新生代 ( Eden 区 、 From Survivor 区 和 To Survivor 区 )和 老年 代。 1.1. 新生代 是用来存放新生的对象。一般占据堆的 1/3 空间。由于频繁创建对象,所以新生代会频繁触发 MinorGC 进行垃圾回收。新…

《如何评价北化面向对象江某英之我是传奇》

点进来的都是家人了,来,今天带你们一起速通江某英的面向对象。 首先,我们先看一下江某英的教学安排,所谓知己知彼,百战不殆。 一共是九个章节,但是最后一个总复习没讲,这不是为难我们吗&#x…

【移动端网页布局】Flex 弹性布局案例 ② ( 顶部固定定位搜索栏 | 固定定位盒子居中对齐 | 二倍精灵图设置 | CSS3 中的垂直居中对齐 )

文章目录 一、顶部固定定位搜索栏1、固定定位盒子居中对齐2、设置最大宽度和最小宽度3、使用 Flex 弹性布局管理宽度4、二倍精灵图设置5、CSS3 中的垂直居中对齐 - 行高 内容高度 ( 总高度 - 边框高度 - 内边距高度 ) 二、代码示例1、HTML 标签结构2、CSS 样式3、展示效果 一、…

Pytroch nn.Unfold() 与 nn.Fold()图码详解

文章目录 Unfold()与Fold()的用途nn.Unfold()Unfold()与Fold() 变化模式图解 nn.Fold()单通道 滑动窗口无重叠模拟图片数据(b,3,9,9),通道数 C 为3,滑动窗口无重叠。单通道 滑动窗口有重叠。 卷积等价于:Unfold Matri…

国民技术N32G430开发笔记(20)- FreeRTOS的移植

FreeRTOS的移植 1、官网下载FreeRTOSv202212.01,搜索官网下载即可。 2、新建一个FreeRTOSDemo的工程,可以把之前的工程中的Bootloader工程复制一份。 3、打开下载的freertos代码将相应代码移植到我们的工程中。 protable文件夹,因为是gcc环…

ChatGPT国内镜像网站集合

ChatGPT是一个基于人工智能的聊天机器人,它可以与用户进行自然语言交互。ChatGPT使用了最新的自然语言处理技术,包括深度学习和神经网络,以便更好地理解用户的意图和回答用户的问题。 ChatGPT可以回答各种问题,包括但不限于常见问…

RabbitMQ如何避免丢失消息

目录标题 消息丢失1. 生产者生产消息到RabbitMQ Server 消息丢失场景1. 网络问题2. 代码层面,配置层面,考虑不全导致消息丢失解决方案:开启confirm模式 2. 队列本身可能丢失消息1. 消息未完全持久化,当机器重启后,消息…

shell脚本之“sed“命令

文章目录 1.sed编辑器概述2.sed命令常用选项3.sed命令常用操作4.sed命令演示操作部分5.总结 1.sed编辑器概述 sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。 sed编辑器可以根据命令来处理数据流中的数据,这些…

C嘎嘎~~[类 下篇 之 日期类的实现]

类 下篇 之 日期类的实现 6.const成员6.1 const成员的引入6.2const成员的概念 7.日期类的实现 6.const成员 6.1 const成员的引入 class Date { public:// 构造函数Date(int year 2023, int month 5, int day 5){_year year;_month month;_day day;}void Print(){cout &…

【STL】vector的使用

目录 前言 默认成员函数 构造函数 拷贝构造 赋值重载 迭代器 正向迭代器 反向迭代器 容量管理 查看容量和大小 扩容 判空 访问数据 下标访问 边界访问 数据修改 尾插尾删 指定位置插入删除 迭代器失效 清空 ​编辑 交换 查找数据 vector可以代替strin…

VOACAP 软件的简单介绍

VOACAP 软件可以预测短波通信中的最高可用频率、最佳传输频率、角度、延迟、反射点高度、信噪比、收发增益等参数,它可以直接输出文本文件,或者以图表输出,同时,它也可以绘制某一参数随时间、距离的变化图表。 该软件的下载安装可…

C语言从入门到精通第18天(指针和函数的联用)

指针和函数的联用 一级指针作为函数的形参二级指针 一级指针作为函数的形参 当函数的形参为数组时,我们定义函数如下: 语法: 数据类型 函数名(数据类型 数组名) 例如 : void func(int a[],int a){ 语句; } 但是在实际使用中我们通常用指针的形式进行…