Postgres Embedding 是一个用于Postgres的开源向量相似度搜索工具,它使用分层可导航小世界 (HNSW)进行近似最近邻搜索。
它支持本笔记本展示了如何使用 Postgres 向量数据库 (
- 使用 HNSW 进行精确和近似最近邻搜索
- L2 距离
PGEmbedding)。
PGEmbedding 集成会自动为您创建 pg_embedding 扩展,但您也可以运行以下 Postgres 查询来添加它
OpenAIEmbeddings。
在 Postgres 中使用向量存储
在 PG 中上传向量存储
创建 HNSW 索引
默认情况下,该扩展执行顺序扫描搜索,召回率为 100%。您可以考虑为近似最近邻 (ANN) 搜索创建 HNSW 索引,以加快similarity_search_with_score 的执行时间。要在向量列上创建 HNSW 索引,请使用 create_hnsw_index 函数
- maxelements: 定义索引的最大元素数。这是一个必填参数。上面显示的示例值为 3。一个实际的示例将具有更大的值,例如 1000000。“元素”是指数据集中的数据点(向量),它在 HNSW 图中表示为一个节点。通常,您会将此选项设置为能够容纳数据集中行数的值。
- dims: 定义向量数据中的维度数。这是一个必填参数。上面的示例中使用了小值。如果您存储的数据是使用 OpenAI 的 text-embedding-ada-002 模型生成的,该模型支持 1536 维度,那么您将定义一个值 1536,例如。
- m: 定义在图构建期间为每个节点创建的双向链接(也称为“边”)的最大数量。支持以下附加索引选项
- efConstruction: 定义索引构建期间考虑的最近邻居数量。默认值为 32。
- efsearch: 定义索引搜索期间考虑的最近邻居数量。默认值为 32。有关如何配置这些选项以影响 HNSW 算法的信息,请参阅调整 HNSW 算法。
在 PG 中检索向量存储
以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。