Postgres Embedding 是Postgres的开源向量相似性搜索扩展,使用分层可导航小世界(HNSW)进行近似最近邻搜索。
它支持:本笔记本展示如何使用 Postgres 向量数据库(
- 使用 HNSW 的精确与近似最近邻搜索
- L2 距离
PGEmbedding)。
PGEmbedding 集成会为你创建 pg_embedding 扩展,但你需要运行以下 Postgres 查询来添加它:
OpenAIEmbeddings。
在 Postgres 中使用向量存储
在 PG 中上传向量存储
创建 HNSW 索引
默认情况下,扩展执行顺序扫描搜索,召回率为 100%。你可以考虑创建 HNSW 索引用于近似最近邻(ANN)搜索,以加速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 中检索向量存储
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

