2 1 0

【教程】特定知识库+开放式AI答题(小白)

夏天玩Chat
2023-3-8 1227

为什么发帖?

我是 python / 编程 / OpenAI 的菜鸟,但经过大量思考和阅读后,我想出了一个解决方案。决定在这里提供问题和步骤,以帮助像我这样的其他菜鸟。

我想构建什么:

用户用自然语言提问,OpenAI 在我自己的文档中搜索答案,并用自然语言返回给用户。简单但非常强大,对吧?

第一种方法和问题:将问题+文档传递给 OpenAI。

“所以我只需要将所有文档+用户问题发送给 OpenAI?”

问题:这行不通,因为文档可能很长(500 页),这会变得非常昂贵,并且会超过可传递给 OpenAI 模型的信息的大小限制。

第二种方法和问题:用一切训练/微调模型。

“那你为什么不训练一个模型并对所有的东西进行微调呢?只需在微调期间插入所有文档即可。”
问题:

如果我简单地输入文本,而模型将学习文档是如何用语言编写的。除非我在微调中浪费大量时间进行某种问答,否则该模型仍将学习“大部分”语言。

想象一下,我的文档有 100*1000 页长,但其中 99% 的内容都不重要。培训将非常昂贵、不切实际,而且没有什么能保证当我问一个问题时,OpenAI 会“基于”相关部分的答案。

第三种方法(好的方法):使用“嵌入”并总结文档。

因此,在理解了之前方法的“局限性”之后,我在 Youtube 上观看了一万亿个视频并重新阅读了 OpenAI 文档。一旦我理解了什么是嵌入,我就知道答案就在那里。

什么是嵌入,它为什么有用?

对于像我这样的新手,嵌入是将“文本含义”“分解”为大量数字。想象一下,它是一个像葡萄牙语或英语这样的成语,可以被计算机理解,包含计算机语言文本的整体含义。

是的,为什么它对我们有用?

想想一个有很多书(你的文件)的图书馆。在前两种方法中,我说:
'嘿,读遍整个图书馆,这样我以后可能会问你关于任何一本书的任何问题,但你必须'记住'一切,我只需要你参考一本书(文档) 但我不会告诉你是哪一个,哈哈。

现在认为嵌入就像每本书的“带有小摘要的书封面”。因此,与其让 OpenAI 阅读所有内容,让 OpenAI 员工 cof、cof、rich、cof、cof……我可以通过使用嵌入指向与我所拥有的主题最相关的书籍。

所以数据流是这样的

我的数据库实际上:

1.那些很长的文档被分成小部分(1 页/部分)

2.在 Chatgpt turbo 中提取并发送用于摘要/转换项目符号点的文本。

3.非常概括/简洁的文本被分组在“2 页文档”中

4.“2页文档”用于生成嵌入(书籍封面)

5.保存书籍封面和“2 页文档”

注意:ChatGPT Turbo 超级便宜,20 页总结起来就像 30 美分,嵌入非常便宜。

6.当用户用自然语言提问时,我会生成问题的嵌入(“书籍封面/问题摘要”)

7.将问题的嵌入与存储的文档嵌入进行比较。(将问题嵌入书籍封面与所有文档嵌入书籍封面并排放置,并获得最相关的那个)。这可以通过嵌入的“余弦相似性”来完成。

8.现在,我得到了带有“与嵌入相关的 2 页文档”的原始问题(不是嵌入),并将其作为“基本事实”传递给 OpenAI API。这就像在说“嘿,这个图书馆里有十亿本书,我对一本关于足球的红皮书有疑问,更具体地说是什么让巴西成为有史以来最强大的球队。你的答案完全基于最相似的那本书”

9.向用户显示的问题+答案

AD:GPT-4官方账号:点击购买

请先登录后发表评论!

最新回复 (2)
  • 羽龙兽 2023-3-9
    0 引用 2

    我的问题,我想你是想解决的是“chatGPT”怎么基于我们给出的文档来回答问题。1首先你肯定了全通过prompt送进去不行2你说明了通过训练的方式成本太高了。所以你在试图建立一个外部的结构,chatGPT是其中被调用的一个函数,一个工具。(其实这可以称得上是有“外脑”的感觉(chatGPT的外脑))。总之,建立一个chatGPT处理过的  数据库,原始书页-摘要(摘要码)的方式存储。然后问问题的时候,会解析问题,搜索摘要码,把对应的原始文本作为上下文传递给chatGPT。
    非常直白的一个思路。

    这家伙太懒了,什么也没留下。
  • 羽龙兽 2023-3-9
    0 引用 3

    刚刚第一个词“我的问题”是说“我的锅”那种意思,我最开始发了一个疑问。当时我理解错了。

    这家伙太懒了,什么也没留下。
返回
请先登录后发表评论!
2