Skip to content

记忆库配置

记忆库(Memory Config)是记忆系统的核心配置单元,定义了记忆的存储方式、检索策略和提取行为。本文档详细介绍记忆库的各项配置参数。

创建记忆库

在「记忆系统」管理页面,点击「新建」按钮,在弹出的配置抽屉中填写各项参数。配置分为两大区域:基础配置提取配置

基础配置

基础配置定义了记忆库的身份信息和存储后端。

参数类型必填默认值说明
名称string--记忆库的显示名称,建议包含业务含义
状态enum启用启用或禁用。禁用状态的记忆库不会参与记忆提取和检索
向量存储实例select--选择用于存储记忆向量的存储实例(PgVector/Milvus/Elasticsearch)
Embedding 模型select--选择用于将记忆文本转化为向量的 Embedding 模型

Embedding 模型选择

Embedding 模型决定了记忆的向量化质量,直接影响语义检索的准确性。选择时需要考虑:

  • 模型能力:选择支持中文语义理解的 Embedding 模型,如 text-embedding-3-smallbge-large-zh 等。
  • 向量维度:不同模型产出的向量维度不同,需要与向量存储实例的配置匹配。
  • 成本与性能:更大的模型通常有更好的语义理解能力,但推理成本和延迟也更高。

向量存储实例

向量存储实例用于持久化记忆向量。如果不选择,系统将使用默认的存储实例。可用的存储类型包括:

  • PgVector:PostgreSQL 的向量扩展,适合已有 PostgreSQL 数据库的场景。
  • Milvus:专业的向量数据库,适合大规模记忆存储场景。
  • Elasticsearch:支持向量检索的全文搜索引擎。

TIP

如果同时需要全文检索能力(BM25),可以启用搜索引擎选项并选择对应的搜索引擎实例。

搜索引擎配置

参数类型默认值说明
启用搜索引擎boolean关闭是否启用 BM25 全文检索,启用后记忆检索将支持混合检索(向量 + BM25)
搜索引擎实例select--启用搜索引擎后,选择用于全文检索的搜索引擎实例

提取配置

提取配置定义了系统从对话中自动提取记忆的行为参数。

提取参数

参数类型默认值范围说明
提取模型select----用于从对话中提取记忆的 CHAT 类型模型。建议选择理解能力强的模型
提取间隔number41-1000每隔多少轮对话触发一次记忆提取
单次最大提取数number51-100每次提取最多生成多少条记忆
记忆过期天数number00-365记忆的有效期天数。设为 0 表示永不过期

提取间隔说明

提取间隔决定了记忆提取的频率。例如,设为 4 表示每经过 4 轮对话(即用户发送 4 条消息后),系统会自动分析最近的对话内容并提取记忆。

  • 间隔较小(如 2-4):提取更频繁,能更及时捕捉关键信息,但会增加 LLM 调用开销。
  • 间隔较大(如 8-10):提取不那么频繁,适合长对话场景,可降低成本。

记忆过期天数说明

设置记忆的有效期可以自动清理过时的信息。例如:

  • 0(默认):记忆永不过期,一直保留。
  • 30:记忆在创建 30 天后自动失效。
  • 90:适合季度性的业务场景。

提取提示词

记忆提取的核心在于 LLM 对对话内容的理解和摘要能力。Snail AI 提供两种提示词模式:

默认提示词

系统内置了一套经过优化的默认提取提示词,能够从对话中识别并提取五种类型的记忆(FACT、DECISION、PREFERENCE、TASK_PROGRESS、REFERENCE)。对于大多数场景,默认提示词已经足够使用。

自定义提示词

如果默认提示词不满足业务需求,可以切换到自定义模式,编写专属的提取提示词。自定义提示词需要满足以下要求:

  1. 必须输出 JSON 数组:提取结果必须是 JSON 格式的记忆条目数组。
  2. 必须包含 memoryType 字段:每条记忆必须指定类型(FACT/DECISION/PREFERENCE/TASK_PROGRESS/REFERENCE)。
  3. 必须包含 title 和 content 字段:每条记忆必须有标题和内容。

自定义提示词注意事项

自定义提示词会完全替代默认提示词。请确保提示词覆盖了所有必要的提取逻辑,否则可能导致记忆提取质量下降或格式错误。

检索配置

检索配置定义了记忆检索时的策略和参数。这些参数在记忆检索与调试界面中也可以实时调整。

参数类型默认值说明
最大召回数number8每次检索最多返回的记忆条数(1-100)
查询改写boolean关闭是否在检索前对查询语句进行改写优化
融合策略enumWEIGHTED_SUM混合检索的融合策略(RRF 或加权求和)
稠密向量权重number0.5融合策略为加权求和时,向量检索结果的权重(0-1)
RRF K 值number60融合策略为 RRF 时的 K 参数(1-200)
启用阈值过滤boolean关闭是否启用相似度阈值,过滤掉低于阈值的结果
相似度阈值number0.65启用阈值过滤后,低于此值的记忆将被过滤(0-1)
启用重排序boolean关闭是否使用 Rerank 模型对检索结果进行重排序
重排序模型select--启用重排序后,选择用于重排序的 RERANKER 模型
进入重排序数量number30送入重排序模型的候选记忆数量(1-500)

融合策略说明

当同时启用向量检索和全文检索时,需要选择融合策略将两路检索结果合并:

RRF(Reciprocal Rank Fusion)

RRF 是一种基于排名的融合方法,不依赖于分数的绝对值,而是根据每条结果在各检索通道中的排名位置进行加权。

  • K 值:控制排名靠前结果的权重衰减速度。K 值越大,排名靠前和靠后的结果权重差异越小。
  • 适用场景:当向量检索和全文检索的分数量级差异较大时,RRF 能更公平地融合两路结果。

加权求和(Weighted Sum)

加权求和通过设定稠密向量权重(denseWeight),直接对两路检索的分数进行加权计算:

最终分数 = denseWeight * 向量分数 + (1 - denseWeight) * BM25分数
  • denseWeight = 0.5:向量检索和全文检索各占一半权重。
  • denseWeight = 0.8:更偏重向量(语义)检索。
  • denseWeight = 0.2:更偏重全文(关键词)检索。

重排序说明

重排序(Rerank)是一个可选的精排步骤。开启后,系统先通过向量检索和/或全文检索获取较多的候选结果(由"进入重排序数量"控制),然后使用 Rerank 模型对候选结果进行更精确的相关性排序,最终返回排序后的 Top N 结果。

推荐配置

对于大多数场景,建议:

  • 最大召回数设为 5-10
  • 启用相似度阈值,阈值设为 0.6-0.7
  • 如果可用,启用重排序可以显著提升检索质量

配置示例

基础场景

适用于简单的对话记忆需求,单一向量检索:

参数
Embedding 模型text-embedding-3-small
提取间隔4
单次最大提取数5
最大召回数8
融合策略WEIGHTED_SUM
阈值过滤关闭
重排序关闭

高精度场景

适用于需要精确记忆召回的专业领域场景:

参数
Embedding 模型text-embedding-3-large 或 bge-large-zh
提取间隔2
单次最大提取数8
搜索引擎启用
最大召回数10
融合策略RRF(K=60)
阈值过滤启用(阈值 0.65)
重排序启用
进入重排序数量50

下一步

Apache 2.0 Licensed