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

yizhihongxing

什么是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日

相关文章

  • CV目标检测(六)——R-CNN

    RCNN(2014) Ross B. Girshick(RBG) selective search(ss算法) SPP-Net(何凯明) 卷积只做一次: 减少计算次数金字塔池化: 变成相同维度 略写

    2023年4月8日
    00
  • Keras实现text classification文本二分类

    1,获取数据 imdb = keras.datasets.imdb(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000) 2,查看处理变形数据 2.1,查看 print(train_data[0]) len(train_data[0]), l…

    Keras 2023年4月6日
    00
  • 基于 Keras 用深度学习预测时间序列

    目录 基于 Keras 用深度学习预测时间序列 问题描述 多层感知机回归 多层感知机回归结合“窗口法” 改进方向 扩展阅读 本文主要参考了 Jason Brownlee 的博文 Time Series Prediction With Deep Learning in Keras 原文使用 python 实现模型,这里是用 R 时间序列预测一直以来是机器学习中…

    2023年4月6日
    00
  • 循环神经网络惊人的有效性(上)

    https://zhuanlan.zhihu.com/p/22107715 译者注:经知友推荐,将The Unreasonable Effectiveness of Recurrent Neural Networks一文翻译作为CS231n课程无RNN和LSTM笔记的补充,感谢 @堃堃 的校对。 目录 循环神经网络 字母级别的语言模型 RNN的乐趣 Paul…

    2023年4月8日
    00
  • Tensorflow2.0语法 – 张量&基本函数(一)

    转自 https://segmentfault.com/a/1190000020413887 前言 TF2.0 是之前学习的内容,当时是写在了私有的YNote中,重写于SF。TF2.0-GPU 安装教程传送门:https://segmentfault.com/a/11…之前接触过 TF1, 手动session机制,看着很是头疼。 TF2.0不需要做这些T…

    tensorflow 2023年4月8日
    00
  • 独家 | 数据科学家的必备读物:从零开始用 Python 构建循环神经网络(附代码)…

    作者:Faizan Shaikh 翻译:李文婧 校对:张一豪 本文约4300字,建议阅读10+分钟。 本文带你快速浏览典型NN模型核心部分,并教你构建RNN解决相关问题。 引言 人类不会每听到一个句子就对语言进行重新理解。看到一篇文章时,我们会根据之前对这些词的理解来了解背景。我们将其定义为记忆力。 算法可以复制这种模式吗?神经网络(NN)是最先被想到的技术…

    2023年4月8日
    00
  • 『PyTorch』屌丝的PyTorch玩法

    1. prefetch_generator 使用 prefetch_generator库 在后台加载下一batch的数据,原本PyTorch默认的DataLoader会创建一些worker线程来预读取新的数据,但是除非这些线程的数据全部都被清空,这些线程才会读下一批数据。使用prefetch_generator,我们可以保证线程不会等待,每个线程都总有至少一…

    PyTorch 2023年4月8日
    00
  • pytorch中动态调整学习率

    https://blog.csdn.net/bc521bc/article/details/85864555 这篇bolg说的很详细了,但是具体在代码中怎么用还是有点模糊。自己试验了一下,顺路记一下,其实很简单,在optimizer后面定义一下,然后在每个epoch中step一下就可以了。一开始出错是因为我把step放到 T_optimizer.step()…

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