深入内部:构建用于 AI 记忆的混合搜索引擎(Node.js + pgvector)

发布: (2025年11月30日 GMT+8 07:59)
4 min read
原文: Dev.to

Source: Dev.to

1. 核心理念:务实

该架构旨在 降低基础设施认知负担,通过避免使用单独的向量数据库实现。所有向量和元数据都存放在带有 pgvector 扩展的 PostgreSQL 中,保持 ACID 合规并简化技术栈。

  • 运行时: Node.js(事件驱动 I/O,用于编排 DB/LLM 调用)
  • 语言: TypeScript(严格类型用于 1536 维浮点数组)
  • 存储: PostgreSQL + pgvector(向量 + session_iduser_id 在同一引擎中)

2. 混合搜索算法

MemVault 实时计算加权得分:

Score = (SemanticSimilarity * α) + (RecencyScore * β) + (Importance * γ)

组成部分

  • 语义相似度 (α) – 由 pgvector 计算的余弦距离。衡量主题匹配程度。
  • 新鲜度衰减 (β) – 对时间戳应用的衰减函数,使旧记忆在未被强化时逐渐淡化。
  • 重要性 (γ) – 对永不衰减的事实(例如 “用户对坚果过敏”)的显式权重。

典型默认值:80 % 语义20 % 新鲜度。通过调节 α、β、γ 可微调代理行为。

3. 可观测性:“黑箱”问题

向量搜索本质上是不可见的,调试幻觉可能困难。MemVault 包含一个 实时可视化工具,将高维向量投射到 2‑D 图上,帮助你检查聚类并发现嵌入问题。

4. 开源与路线图

MemVault 完全开源。下一个路线图里程碑是加入 BM25(关键词搜索),以处理纯语义搜索难以应对的标识符(例如产品 ID)。

项目链接

5. 快速入门

在自托管(Docker)和托管 API(RapidAPI)之间任选其一。

功能自托管 (Docker)托管 API (RapidAPI)
价格免费(开源)提供免费套餐
设置时间~15 分钟~30 秒
数据隐私100 % 在您自己的服务器上由我们托管
维护您自行管理更新我们全权处理
链接Self‑hosting guide

入门步骤

# Clone the repo
git clone https://github.com/jakops88-hub/Long-Term-Memory-API.git
cd Long-Term-Memory-API

# Build and run with Docker
docker compose up -d

然后安装 SDK:

npm install memvault-sdk-jakops88

使用 SDK 存储块、生成嵌入并使用混合得分进行查询:

import { MemVault } from 'memvault-sdk-jakops88';

const client = new MemVault({ connectionString: process.env.DATABASE_URL });

await client.storeChunk({
  session_id: 'abc123',
  user_id: 'user42',
  content: 'User is allergic to peanuts',
  importance: 1.0, // never decays
});

const results = await client.search({
  query: 'What can I eat?',
  topK: 5,
  alpha: 0.8,
  beta: 0.2,
  gamma: 0.0,
});

如果您对 pgvector 实现有疑问或想为混合评分逻辑贡献代码,欢迎打开 issue 或提交 pull request!

Back to Blog

相关文章

阅读更多 »

新加入 Dev 社区

大家好,我是 dev 社区的新成员,重新开始我的 coding 之旅。我曾在 2013‑2018 年间编写代码。之后我探索了新的机会,...

开源邮件预热:完整指南

引言 开源电子邮件预热是逐步与邮箱提供商建立信任的过程,使您的邮件进入收件箱,而不是垃圾邮件文件夹....