pgvector 存储
通用的 Agent 接入、提取模式和工具配置请参阅使用与配置。
适用场景:生产环境、向量相似度搜索
请通过环境变量或密钥管理系统设置 PGVECTOR_DSN。生产 DSN 应校验服务端证书,
并使用证书覆盖的主机名:
配置选项:
WithPGVectorClientDSN(dsn): 推荐的连接方式,优先级最高WithHost/WithPort/WithUser/WithPassword/WithDatabase: 可选的分字段连接参数WithSSLMode(mode): SSL 模式(默认 "disable")WithPostgresInstance(name): 使用预注册的 PostgreSQL 实例WithEmbedder(embedder): 文本嵌入器,用于生成向量(必需)WithSoftDelete(enabled): 启用软删除(默认 false)WithTableName(name): 自定义表名(默认 "memories")WithSchema(schema): 指定数据库 schema(默认为 public)WithIndexDimension(dim): 向量维度(默认 1536)WithMaxResults(limit): 最大搜索结果数(默认 10)WithMemoryLimit(limit): 每用户记忆上限WithCustomTool(toolName, creator): 注册自定义工具WithToolEnabled(toolName, enabled): 启用/禁用工具WithExtraOptions(...options): 传递给 PostgreSQL 客户端的额外选项WithSkipDBInit(skip): 跳过表初始化(适用于无 DDL 权限场景)WithHNSWIndexParams(params): HNSW 索引参数,用于向量搜索
注意:DSN 优先于分字段连接参数,这两种直接连接方式都优先于
WithPostgresInstance。SSL mode 默认为 disable,只应在可信的本地开发环境
使用,不要用于生产环境。PostgreSQL 中必须安装 pgvector 扩展。
默认初始化结构:
service 会启用 vector 扩展,并在 public.memories 中初始化向量、事件元数据和
全文检索字段。WithTableName、WithSchema、WithIndexDimension 会分别替换
memories、public、1536。初始化还会为 app/user、更新时间、删除时间、
事件时间、kind、participants(GIN)、embedding(HNSW)和
search_vector(GIN)创建索引,并创建由 memory_content 维护
search_vector 的触发器。
WithSkipDBInit(true) 会跳过扩展、表、索引、触发器函数、触发器和全文字段回填。
启动 service 前必须预先完成这些 DDL;请以
memory/pgvector/init.go
为准,并同步自定义的 HNSW 参数。
资源清理:使用完毕后需调用 Close() 方法释放数据库连接: