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

