使用 Yellowbrick 作为 ChatGpt 的向量存储
本教程演示了如何创建一个由 ChatGpt 支持的简单聊天机器人,该机器人使用 Yellowbrick 作为向量存储来支持检索增强生成(RAG)。您需要:- 一个 Yellowbrick 沙盒 帐户
- 一个来自 OpenAI 的 API 密钥
设置:输入用于连接 Yellowbrick 和 OpenAI API 的信息
我们的聊天机器人通过 langchain 库与 ChatGpt 集成,因此您首先需要一个来自 OpenAI 的 API 密钥: 要获取 OpenAI 的 API 密钥:- 在 platform.openai.com/ 注册
- 添加支付方式 - 您不太可能超出免费额度
- 创建 API 密钥
第 1 部分:创建没有向量存储的由 ChatGpt 支持的基线聊天机器人
我们将使用 langchain 查询 ChatGPT。由于没有向量存储,ChatGPT 将没有上下文来回答问题。第 2 部分:连接到 Yellowbrick 并创建嵌入表
要将您的文档嵌入加载到 Yellowbrick 中,您应该创建自己的表来存储它们。请注意,表所在的 Yellowbrick 数据库必须是 UTF-8 编码的。 在 UTF-8 数据库中创建具有以下架构的表,提供您选择的表名:第 3 部分:从 Yellowbrick 中的现有表中提取要索引的文档
从现有 Yellowbrick 表中提取文档路径和内容。我们将在下一步中使用这些文档来创建嵌入。第 4 部分:使用文档加载 Yellowbrick 向量存储
遍历文档,将其分成易于理解的块,创建嵌入并插入到 Yellowbrick 表中。这大约需要 5 分钟。第 5 部分:创建使用 Yellowbrick 作为向量存储的聊天机器人
接下来,我们将 Yellowbrick 添加为向量存储。向量存储已填充了代表 Yellowbrick 产品文档管理章节的嵌入。 我们将发送与上面相同的查询,以查看改进的响应。第 6 部分:引入索引以提高性能
Yellowbrick 还支持使用局部敏感哈希(Locality-Sensitive Hashing)方法进行索引。这是一种近似最近邻搜索技术,允许在准确性上进行权衡以提高相似性搜索时间。该索引引入了两个新的可调参数:- 超平面的数量,作为
create_lsh_index(num_hyperplanes)的参数提供。文档越多,需要的超平面就越多。LSH 是一种降维形式。原始嵌入被转换为低维向量,其中组件的数量与超平面的数量相同。 - 汉明距离,一个表示搜索广度的整数。汉明距离越小,检索速度越快,但准确性越低。
后续步骤
此代码可以修改以提出不同的问题。您还可以将自己的文档加载到向量存储中。langchain 模块非常灵活,可以解析各种文件(包括 HTML、PDF 等)。 您还可以修改此代码以使用 Huggingface 嵌入模型和 Meta 的 Llama 2 LLM,以获得完全私密的聊天框体验。以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。