【AIGC】Embedding与LLM的结合:长文本搜索与问答功能

什么是Embedding?

Embedding是一种多维向量数组,由一系列数字组成,可以代表任何事物,如文本、音乐、视频等。在这里我们将重点关注文本部分。Embedding之所以重要,是因为它让我们可以进行语义搜索,也就是通过文本的含义进行相似性检索。

为什么Embedding在AI中如此重要?

Embedding在AI中的重要性在于,它可以帮助我们解决LLM的tokens长度限制问题。通过使用Embedding,我们可以在与LLM交互时,仅在上下文窗口中包含相关的文本内容,从而不会超过tokens的长度限制。

如何将Embedding与LLM结合?

我们可以利用Embedding,在和LLM交互时,仅包含相关的文本内容。具体操作方法是,首先将文本内容分块并转换为向量数组,然后将其存储在向量数据库中。在回答问题时,我们可以使用相似性搜索将问题向量与文档向量进行比较,找到最相关的文本块,然后将这些文本块与问题一起输入到LLM中,得到准确的回答。
image

举例来说

我们可以利用Embedding,在和LLM交互时,仅包含相关的文本内容。以一个巨大的书籍PDF文件为例,假设这是一本讲述人类历史的书籍。我们希望从中提取关于某个重要历史人物的信息,但不想阅读整个文件。

具体操作方法是:

  1. 将PDF文件的文本内容分块。
  2. 使用Embedding模型将每个文本块转换为向量数组。
  3. 将这些向量数组存储在向量数据库中,同时保存向量数组与文本块之间的关系。

当我们需要回答关于该PDF文件的问题时,例如:“作者对xxx人物的看法是什么?”我们可以:

  1. 使用Embedding模型将问题转换为向量数组。
  2. 使用相似性搜索(如,chatGPT推荐的余弦相似度)将问题向量与PDF文件的向量进行比较,找到最相关的文本块。
  3. 将找到的最相关文本块与问题一起输入到LLM(如GPT-3)中,得到准确的回答。

通过这种方法,我们可以将Embedding与LLM结合,实现高效的文本搜索和问答功能。目前比较火的类chatPDF、以及文档问答产品都采用类似的技术。

产品案例

开源fireBase解决方案SupBase二月份时就推出了一款基于chatGPT API的,支持问答的文档系统(https://supabase.com/blog/chatgpt-supabase-docs)
其中就对这个文档系统的技术路径进行了相应的描述:
image

一些值得参考的资料

  1. https://openai.com/blog/introducing-text-and-code-embeddings (主要是关于基于embedding的文本与代码搜索的)
  2. https://github.com/openai/openai-cookbook/blob/main/examples/Question_answering_using_embeddings.ipynb (openAI提供的jupyter基于embedding的QA代码示例)
  3. https://supabase.com/blog/chatgpt-supabase-docs
  4. 详细内容会同步至微信公众号(Hobbes View)

原文链接:https://www.cnblogs.com/xy1997/p/17386756.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:【AIGC】Embedding与LLM的结合:长文本搜索与问答功能 - Python技术站

(0)
上一篇 2023年5月10日
下一篇 2023年5月10日

相关文章

  • 卷积层计算 feature maps 和中间结果内存访问次数, mac(memory access cost-内存使用量)计算方法

    卷积层计算 feature maps 和中间结果内存访问次数 卷积层的输入是 224x224x3 ,把所有这些值读出来需要访问 150,528 次内存。 如果卷积核是 KxKxCout ,还要乘上这个系数(因为每次卷积都要访问一遍)。 以 stride=2, 卷积核个数为32为例,输出的 feature map 尺寸为 112x112x32,共计 401,4…

    2023年4月5日
    00
  • 目标检测之SSD(2015)

    文章目录 SSD(2015) 基本结构 结构特点 同时使用多个卷积层的输出做分类和回归 anchor尺寸的选择 loss的计算 处理流程 总体结构图 分类检测器结构图(RPN+分类) 默认框生成器 结果汇总 详细结构 NMS 实际效果 PASCAL VOC2007 test检测结果 性能分析 模型分析 PASCAL VOC2012 COCO 优缺点 优点 缺…

    2023年4月8日
    00
  • 一文理解深度学习,卷积神经网络,循环神经网络的脉络和原理4-循环神经网络,LSTM

        循环神经网络很早就有了,其结构如下图。注意,这里其实只有一个神经网络结构。而不是7个。下图是为了方便表示,一次把7个时间的网络都画在上面。举个翻译的例子,I am hungry 比如在时间1,我们输入了 I,通过神经网络 输出了对应的翻译 我。然后时间2 ,输入了 am。这个时候网络的输入不但是 am,还有上次 I的隐层的输出。就相当于,网络不但考虑…

    2023年4月8日
    00
  • pytorch中的select by mask

    #select by mask x = torch.randn(3,4) print(x) # tensor([[ 1.1132, 0.8882, -1.4683, 1.4100], # [-0.4903, -0.8422, 0.3576, 0.6806], # [-0.7180, -0.8218, -0.5010, -0.0607]]) mask = x.…

    PyTorch 2023年4月6日
    00
  • skimage.io.imread vs caffe.io.load_image

    这两周在跑一个模型,我真的是被折腾的要崩溃了。 最后原因就是数据类型的问题,你说是不是应该管小黑屋啊。 skimage.io.imread得到的是uint8的数据,而caffe.io.load_image得到的是0-1之间的小数。 img=skimage.io.imread(img_path), uint8,0-255 img=caffe.io.load_i…

    Caffe 2023年4月6日
    00
  • 基于多层感知机的手写数字识别(Tensorflow实现)

    import numpy as np import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data import os mnist = input_data.read_data_sets(‘MNIST_data’, one_hot=True) class …

    tensorflow 2023年4月6日
    00
  • keras中添加正则化

    一、总结 一句话总结: model.add(Dense(64, input_dim=64,kernel_regularizer=regularizers.l2(0.01))     1、keras正则化几个关键字? kernel_regularizer:施加在权重上的正则项,为keras.regularizer.Regularizer对象 bias_regu…

    Keras 2023年4月7日
    00
  • 3-4 卷积的滑动窗口实现

    假设对象检测算法输入一个 14×14×3 的图像,图像很小。在这里过滤器大小为 5×5,数量是 16, 14×14×3 的图像在过滤器处理之后映射为 10×10×16。然后通过参数为 2×2 的最大池化操作,图像减小到 5×5×16。然后添加一个连接 400 个单元的全连接层,接着再添加一个全连接层,最后通过 softmax 单元输出。这里用 4 个数字来表…

    2023年4月8日
    00
合作推广
合作推广
分享本页
返回顶部