TencentDB Agent Memory性能优化:如何提升记忆检索速度与存储效率?
【免费下载链接】TencentDB-Agent-MemoryTencentDB Agent Memory is a team-level memory hub for AI Agents — turning conversations, docs, and code into four reusable memory assets (Chat Memory, Skill, LLM-Wiki, Code-Graph) that are governed, shared, and equipped across agents and frameworks.项目地址: https://gitcode.com/GitHub_Trending/te/TencentDB-Agent-Memory
TencentDB Agent Memory是一款团队级AI Agent记忆中枢,能够将对话、文档和代码转化为四种可复用的记忆资产(Chat Memory、Skill、LLM-Wiki、Code-Graph),实现跨Agent和框架的治理、共享与赋能。在实际应用中,随着记忆数据的不断积累,检索速度和存储效率成为影响系统性能的关键因素。本文将从存储后端选择、索引优化、查询策略调整和资源管理四个维度,分享提升TencentDB Agent Memory性能的实用方法。
存储后端选择:平衡性能与成本
TencentDB Agent Memory提供了两种存储后端选择:SQLite和Tencent VectorDB(TCVDB),用户可根据数据规模和性能需求灵活切换。
SQLite:轻量级本地存储
SQLite是默认的存储后端,采用SQLite + sqlite-vec架构,无需额外配置即可开箱即用,适合开发测试和小规模部署。其优势在于部署简单、资源占用低,通过WAL(Write-Ahead Logging)模式和合理的缓存配置(如PRAGMA cache_size = -65536限制缓存为64MB),可满足中小规模记忆数据的存储需求。
TCVDB:分布式向量数据库
对于大规模生产环境,推荐使用Tencent VectorDB(TCVDB)作为存储后端。TCVDB支持服务器端密集向量计算和客户端稀疏向量(BM25)编码,结合原生混合搜索(dense + sparse + RRFRerank)能力,能显著提升高并发场景下的检索性能。通过memory-tencentdb-ctl工具可快速完成从SQLite到TCVDB的迁移:
memory-tencentdb-ctl config vdb --url http://127.0.0.1:80 --username root --api-key-env TCVDB_API_KEY --database agent_memory_prod --embedding-model bge-large-zh --restart迁移过程中,TCVDB会自动创建优化的向量索引(默认使用DISK_FLAT类型,在不支持的实例上自动回退到HNSW),并支持批量导入以提高数据迁移效率。
TencentDB Agent Memory的记忆金字塔架构,展示了从原始对话(L0)到用户画像(L3)的分层存储与处理流程,每层都有对应的性能优化策略。
索引优化:提升检索效率的核心
无论是SQLite还是TCVDB,合理的索引设计都是提升检索速度的关键。TencentDB Agent Memory通过多层索引策略,确保记忆数据的快速访问。
向量索引
SQLite使用sqlite-vec扩展创建向量索引,支持余弦相似度搜索。在初始化时,会根据嵌入模型的维度自动创建合适的向量表:
CREATE VIRTUAL TABLE IF NOT EXISTS l1_vec USING vec0( record_id TEXT PRIMARY KEY, embedding float[768] distance_metric=cosine, updated_time TEXT DEFAULT '' )TCVDB则在创建集合时配置向量索引,默认使用DISK_FLAT类型以平衡查询性能和内存占用:
// src/core/store/tcvdb.ts private static readonly VECTOR_INDEX_DISK_FLAT: Record<string, unknown> = { fieldName: "vector", fieldType: "vector", indexType: "DISK_FLAT", dimension: 1024, metricType: "COSINE", };关键词索引
除向量索引外,系统还通过FTS5(Full-Text Search)创建关键词索引,支持基于BM25算法的文本检索。SQLite的FTS5表结构如下:
CREATE VIRTUAL TABLE IF NOT EXISTS l1_fts USING fts5( content, content_original UNINDEXED, record_id UNINDEXED, type UNINDEXED, priority UNINDEXED, scene_name UNINDEXED, session_key UNINDEXED, session_id UNINDEXED, timestamp_str UNINDEXED, timestamp_start UNINDEXED, timestamp_end UNINDEXED, metadata_json UNINDEXED )通过tokenizeForFts函数对文本进行分词处理(使用jieba分词库),并将分词结果存储在content字段中,提高关键词检索的准确性。
复合索引
针对常用查询场景,系统创建了复合索引以加速过滤和排序操作。例如,SQLite中的L1记录表包含以下索引:
CREATE INDEX IF NOT EXISTS idx_l1_session_updated ON l1_records(session_id, updated_time) CREATE INDEX IF NOT EXISTS idx_l1_sessionkey_updated ON l1_records(session_key, updated_time)这些索引在按会话ID或会话密钥查询并按更新时间排序时能显著提升性能。
查询策略:优化检索路径
TencentDB Agent Memory提供多种检索策略,可根据场景需求灵活选择,以达到最佳性能。
混合检索(Hybrid Search)
默认的检索策略是混合检索,结合向量相似度和关键词匹配,通过RRF(Reciprocal Rank Fusion)算法融合结果:
// src/core/hooks/auto-recall.ts async function searchMemories(...) { // 并行执行向量检索和关键词检索 const [keywordResult, embeddingResult] = await Promise.all([ searchByKeyword(...), searchByEmbedding(...), ]); // RRF融合结果 return mergeWithRRF(keywordResult, embeddingResult); }混合检索兼顾了语义理解和关键词匹配的优势,适合大多数场景。
策略选择与调整
可通过配置项recall.strategy选择检索策略:
"embedding": 纯向量相似度检索,适合语义相关度高的场景"keyword": 纯关键词检索,适合精确匹配场景"hybrid": 混合检索,平衡语义和精确匹配
例如,在openclaw.json中配置:
{ "memory": { "recall": { "strategy": "hybrid" } } }对于大规模数据集,建议使用TCVDB的原生混合搜索能力,减少客户端计算开销:
// src/core/store/tcvdb.ts async searchL1HybridAsync(params: { queryText: string; topK?: number }) { // 使用TCVDB的hybridSearch API const resp = await this.client.hybridSearch(this.l1Collection, { ann: [{ fieldName: "text", data: [queryText], limit: topK }], match: [{ fieldName: "sparse_vector", data: [sparse], limit: topK }], rerank: { method: "rrf", k: 60 }, }); }分页与过滤
通过分页和过滤减少返回数据量,提升检索速度。例如,read-local-memory脚本支持分页参数:
read-local-memory l0 --session-key "agent:my-agent:channel" --offset 20 --limit 20在代码中,通过SQL的LIMIT和OFFSET子句实现分页:
// src/core/store/sqlite.ts async queryL0ForL1(sessionKey: string, afterRecordedAtMs?: number, limit = 50) { // ... const docs = await this._queryAllDocs( this.l0Collection, filterExpr, L0_OUTPUT_FIELDS, limit, [{ fieldName: "recorded_at_ms", direction: "desc" }], ); }资源管理:优化存储与计算
合理的资源管理不仅能提升性能,还能降低存储成本,延长系统运行时间。
数据生命周期管理
通过定期清理过期数据,保持数据库精简。系统提供了删除过期L1和L0记录的方法:
// src/core/store/tcvdb.ts async deleteL1Expired(cutoffIso: string): Promise<number> { const cutoffMs = isoToEpochMs(cutoffIso); const filter = `updated_time_ms < ${cutoffMs}`; const toDelete = await this.client.count(this.l1Collection, filter); // ... await this.client.deleteDoc(this.l1Collection, { query: { filter } }); return toDelete; }可通过配置offload相关参数自动触发数据压缩:
{ "memory": { "offload": { "enabled": true, "mildOffloadRatio": 0.5, "aggressiveCompressRatio": 0.85 } } }嵌入模型优化
嵌入模型的选择直接影响向量质量和计算开销。对于本地部署,可使用轻量级模型如embeddinggemma-300m:
// src/core/store/embedding.ts const DEFAULT_LOCAL_MODEL = "hf:ggml-org/embeddinggemma-300m-qat-q8_0-GGUF/embeddinggemma-300m-qat-Q8_0.gguf";对于远程API,可调整请求参数优化性能:
{ "memory": { "embedding": { "sendDimensions": false, "timeoutMs": 5000, "recallTimeoutMs": 3000 } } }sendDimensions: false可禁用维度参数,适配不支持Matryoshka表示的模型(如BGE-M3);recallTimeoutMs和captureTimeoutMs可分别设置检索和捕获路径的超时时间,平衡响应速度和成功率。
内存与缓存管理
SQLite通过合理的PRAGMA配置优化内存使用:
// src/core/store/sqlite.ts this.db.exec("PRAGMA cache_size = -65536"); // 64MB缓存 this.db.exec("PRAGMA mmap_size = 134217728"); // 128MB内存映射 this.db.exec("PRAGMA wal_autocheckpoint = 1000"); // 自动检查点TCVDB则通过连接池和请求超时控制资源占用:
// src/core/store/tcvdb-client.ts const DEFAULT_TIMEOUT = 10000; // 默认超时10秒总结与最佳实践
TencentDB Agent Memory的性能优化是一个系统性工程,需要结合数据规模、应用场景和资源条件综合考虑。以下是一些最佳实践建议:
开发测试环境:使用默认的SQLite后端,通过WAL模式和合理的缓存配置获得较好性能。
小规模生产环境:继续使用SQLite,启用FTS5和向量索引,定期清理过期数据。
大规模生产环境:迁移到TCVDB,利用其分布式架构和原生混合搜索能力,配置合适的向量索引类型(DISK_FLAT或HNSW)。
检索策略选择:默认使用混合检索,对精确匹配场景可切换为关键词检索,对语义匹配场景可使用向量检索。
资源配置:根据数据量调整分页大小,合理设置嵌入模型参数和超时时间,定期监控并优化数据库性能。
通过以上方法,可显著提升TencentDB Agent Memory的记忆检索速度和存储效率,为AI Agent提供高效可靠的记忆服务。更多详细配置和高级优化技巧,请参考项目文档和源码实现,如src/core/store/tcvdb.ts和src/core/store/sqlite.ts。
【免费下载链接】TencentDB-Agent-MemoryTencentDB Agent Memory is a team-level memory hub for AI Agents — turning conversations, docs, and code into four reusable memory assets (Chat Memory, Skill, LLM-Wiki, Code-Graph) that are governed, shared, and equipped across agents and frameworks.项目地址: https://gitcode.com/GitHub_Trending/te/TencentDB-Agent-Memory
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考