我有一个大型文档数据库(这些“文档”本质上是网页,而且都是 HTML 格式)。它们拥有有关业务本身的信息,并且可以包含许多类似的信息。我想做的是在这个数据库之上创建一个聊天机器人,可以回答有关其文档内容的任何问题。
现在,如果我将正确的信息传递给GPT,它就可以轻松回答问题。主要的困难是如何获取相关信息,以便将其提供给GPT。现在,我正在对文档进行分块,嵌入这些块,将它们存储在向量数据库中,当有人提出问题时,我会从该向量数据库中获取 k 最近的嵌入(我正在使用 text-embedding-ada- 002 顺便说一下,创建嵌入)。
所以,我的问题是:
(我也在这个OpenAI社区论坛帖子中提出了同样的问题)
正如您已经了解构建检索增强生成(RAG)系统的技术方法。我将分享一些我的经验。
如果您的数据尽可能干净,RAG 效果最好。这很糟糕,因为工作量很大。如果您有很多 html 标签,这会给您的嵌入增加噪音。此外,如果您的文档包含大量相似的数据,将会给您的检索器带来困难,因为一切都是相似的。
有一篇论文指出,RAG 与具有大上下文窗口的 LLM 相结合效果最好。所以你可以发送更多的数据块,让法学硕士来做剩下的事情。 GPT4-turbo 的上下文大小为 128k 个令牌。与 GPT3.5 的 4k 相比,这要多得多。还有具有 200k 代币的开源模型。
论文:https://arxiv.org/abs/2310.03025
GPT4-turbo:https://help.openai.com/en/articles/8555510-gpt-4-turbo
具有 200k 上下文窗口的开源模型:https://huggingface.co/01-ai/Yi-34B