个人技术分享

在这里插入图片描述

我们有很多文档,它们各有利弊。作为一名用户,我有时发现,鉴于文档数量巨大,准确找到我要查找的内容需要比我想要的更多时间。

将文档转换为统一格式

我公司的文档均以 HTML 文档形式托管在服务器上。一个自然的起点是使用 Python 的requests库下载这些文档并使用Beautiful Soup解析文档。

然而,作为一名开发人员(以及我们许多文档的作者),我认为我可以做得更好。我的本地计算机上已经有 GitHub 存储库的工作克隆,其中包含用于生成 HTML 文档的所有原始文件。我们的一些文档是用Sphinx ReStructured Text (RST)编写的,而其他文档(例如教程)则从 Jupyter 笔记本转换为 HTML。

使用 OpenAI 嵌入文本和代码块

通过转换、处理文档并拆分为字符串,我为每个块生成了一个嵌入向量。由于大型语言模型本质上是灵活且通常具有能力的,因此我决定将文本块和代码块与文本片段同等对待,并将它们嵌入到相同的模型中。

我使用 OpenAI 的text-embedding-ada-002 模型,因为它易于使用,在所有 OpenAI 嵌入模型中实现了最高的性能(在BEIR 基准上),而且也是最便宜的。事实上,它非常便宜(0.0004 美元/1K 代币),为 FiftyOne 文档生成所有嵌入仅花费几美分!正如 OpenAI 自己所说,“我们建议在几乎所有用例中使用 text-embedding-ada-002。它更好、更便宜、使用更简单。”

通过此嵌入模型,您可以生成表示任何输入提示的 1536 维向量,最多 8,191 个标记(大约 30,000 个字符)。