#
聊天向量化
免责声明
使用此扩展并不能保证更好的聊天体验或任何形式的记忆改善。只有当您理解向量数据库使用的所有含义时才使用。
聊天向量化搜索当前聊天历史记录中与您最近消息相关的消息。 它临时将最相关的消息重新排列到聊天历史记录的开头或结尾。 这在生成模型对您最后一条消息的回复时发生。
聊天历史记录开头和结尾的消息往往对模型的回复影响最大。 因此,将相关消息重新排列到这些位置可以帮助模型在回复中专注于相关信息。
特别是,聊天向量化可以找到在消息历史记录中太远而无法放入请求上下文的相关消息。 将这些消息重新排列到上下文中为模型提供了原本不会拥有的信息。
聊天向量化是一种检索增强生成(RAG)。检索增强生成通过在提示中提供额外的相关信息来提高模型生成的回复质量。
- 检索:使用最近的消息来检索相关的过去消息
- 增强:通过以有用的方式插入过去消息来增强模型的上下文
- 生成:指示模型在生成回复时使用过去消息
一些术语:
向量是一组数字,可以表示一段文本的主题、内容、风格或其他特征。
向量化是计算表示一段文本的向量。这是由向量化模型完成的。 就像文本生成模型从文本生成文本一样,向量化模型从文本生成向量。
向量搜索通过比较向量而不是关键词来找到相关结果。如果我们计算搜索查询的向量,我们可以将其与文本集合的存储向量进行比较。这可以找到我们集合中与搜索查询文本最相似的文本。在聊天向量化的情况下,"搜索查询"是最近的 2 条消息,"我们集合中的文本"是聊天中的所有其他消息。
#
设置
提示缓存兼容性
像任何动态提示源(世界信息、摘要等)一样,聊天向量化在 LLM 调用之间重构提示前缀,这可能导致频繁的缓存未命中。当与缓存一起使用时,向量化通常是适得其反的,因为修改后的提示很少命中缓存——有效地使缓存变得无用。您必须选择其中一个,但不能同时选择两者。
要启用聊天向量化,请选择"扩展">"向量存储">"为聊天消息启用"。
配置向量化来源和向量化模型。聊天向量化使用与数据银行相同的向量来源,因此您可能已经设置了此设置。向量化来源和向量化模型的设置在数据银行中有文档记录。
聊天向量化使用与数据银行相同的向量存储,但这不需要设置或配置。 数据银行中也有关于向量存储的信息。
聊天向量化不使用数据银行来存储聊天消息。消息存储在聊天中。
#
准备聊天消息以供搜索(向量存储)
为了使聊天消息可以被搜索,会为每条消息计算并存储一个向量。
向量化在后台进行,每当您发送或接收消息时都会发生。
每条消息都单独存储,以便在生成过程中可以单独找到和重新排列。
大型消息被分割成"块",以便模型可以获得长消息中最相关的部分。块大小为 400 个字符。 您可以使用"块大小(字符)"来更改此设置。
消息通过查找块边界(如段落分隔、换行或单词之间的空格)来分成块。这样做的目的是使所有块尽可能有意义。如果您的聊天消息有其他方式标记自然分割点,如 ----,您可以将其添加到"块边界"中。"块边界"的设置与数据银行共享。
#
向量存储控制
要计算当前聊天中所有消息的向量,而不等待它们在后台处理,请从设置中选择"全部向量化"。
要查看当前聊天中有多少消息已被向量化,请选择"查看统计"。这将显示存储的向量总数。 它还通过用绿球标记来指示哪些特定的聊天消息已被向量化。
要删除当前聊天中消息的所有向量,请选择"清除向量"。
聊天向量化中的"全部向量化"和"清除向量"控制仅影响当前聊天的存储向量。 但是,文件向量化中有相同的按钮影响数据银行中文件的向量。确保您清除的是您想要清除的向量。
#
查找要重新排列的相关消息(向量检索)
要查找聊天历史中最相关的消息,最近的消息会被转换(向量化)为查询向量。默认使用最近的 2 条消息。要更改此设置,请更改"查询消息"的值。此值在从数据银行查找相关内容时也会使用。
过去的消息必须具有至少 25% 的相关性分数才能被包含。您可以使用"分数阈值"来更改此设置。分数阈值的设置与数据银行共享。
从聊天历史记录中重新排列 3 条最相关的消息。您可以使用"插入数量#"来更改此设置。
为避免干扰聊天中的最近事件,最近的 5 条消息不会被重新排列。要更改此设置,请更改"保留数量#"的值。
#
重新排列消息(增强生成)
消息被重新排列到 3 个位置之一:
- 聊天的顶部,在主提示/故事字符串之后(默认)
- 聊天的顶部,在主提示/故事字符串之前
- 聊天的结尾,在最后 2 条消息之前("聊天中@深度 2")。由于您刚刚发送了一条消息,此位置通常就在模型之前的回复之前。
您可以使用"注入位置"和"深度"来更改此设置。
消息按相关性顺序包含,更相关的消息显示在不太相关的消息之后。
包含发送每条消息的人或角色的名称。
消息被显示给模型作为"过去的事件"。这有助于模型理解消息包含来自聊天历史中不同时间点的信息,而不是它们被插入的时间点。您可以使用"注入模板"来更改此设置。
您可以使用提示项目化弹出窗口、终端日志或浏览器控制台日志查看发送给模型的最终提示。浏览器控制台日志对于理解聊天向量化中的所有步骤正在做什么很有用。
#
向量摘要
向量摘要旨在使聊天消息的向量搜索更有效。它通过在向量化之前引入摘要步骤来实现这一点。摘要步骤提取消息的最重要部分,以便生成的向量更好地指示消息相关的内容。
向量摘要可能会使向量搜索效果降低。
要总结聊天历史记录中的消息,并为每个摘要消息生成向量,请选择"为向量生成总结聊天消息"。
摘要消息不会替换聊天中的原始消息。如果向量搜索匹配摘要消息的向量,则从聊天历史记录中检索原始消息并重新排列到上下文中。消息的摘要版本保留在向量存储中,这可能对调试有兴趣。
要总结用于搜索聊天历史记录的消息内容(默认为最后 2 条消息),请选择"发送时总结聊天消息"。
每次消息为向量化而进行摘要时,都会向摘要模型发出单独的请求。您可以选择使用"摘要方式"使用哪个摘要来源。选择"主 API"将使用您用于生成聊天或文本完成的相同模型和连接设置来生成摘要。
请求由原始消息内容和关于模型应如何生成摘要的指令组成。您可以使用"摘要提示"更改指令。