当前位置: 首页 > news >正文

做网站的是什么工作视频网站推广

做网站的是什么工作,视频网站推广,企业网站建设现状,烟台网站设计使用 pgvector 为 HNSW 并行构建索引 Postgres 最受欢迎的向量搜索扩展 pgvector 最近实现了并行索引构建功能,这将分层可导航小世界 (HNSW) 索引构建时间显著提高了 30 倍。 祝贺 Andrew Kane 和 pgvector 的贡献者发布此版本,这巩固了 Postgres 作为最…

使用 pgvector 为 HNSW 并行构建索引

alt

Postgres 最受欢迎的向量搜索扩展 pgvector 最近实现了并行索引构建功能,这将分层可导航小世界 (HNSW) 索引构建时间显著提高了 30 倍。

祝贺 Andrew Kane 和 pgvector 的贡献者发布此版本,这巩固了 Postgres 作为最佳向量搜索数据库之一的地位,并允许您充分利用数据库的功能来构建索引。

alt

在 64 vCPU、512GB RAM 实例上使用包含 1,536 维向量的 10M 数据集运行测试。

Pgvector 是 Postgres 最受欢迎的向量相似性搜索扩展。向量搜索对于语义搜索和检索增强生成 (RAG) 应用程序越来越重要,可增强大型语言模型 (LLM) 的长期记忆。

在语义搜索和 RAG 用例中,数据库包含 LLM 未接受过训练的知识库,这些知识库被拆分成一系列文本或块。每个文本都保存在一行中,并与嵌入模型(例如 OpenAI 的 ada-embedding-002 或 Mistral-AI 的 mistral-embed ) 生成的向量相关联。

然后使用向量搜索来查找与查询向量最相似(更接近)的文本。这是通过将查询向量与数据库中的每一行进行比较来实现的,这使得向量搜索难以扩展。这就是为什么 pgvector 实施 近似最近邻 (ANN) 算法(或索引)的原因,该算法在数据库的子集上进行向量搜索,以避免冗长的连续扫描。

最有效的 ANN 算法之一是分层可导航小世界 (HNSW) 索引。其基于图形和多层的特性专为数十亿行向量搜索而设计。这使得 HNSW 在规模上极其快速和高效,并且是向量存储市场中最受欢迎的索引之一。

HNSW 首次由 Yu A Malkov 和 Dmitry A. Yashunin 在题为《使用分层可导航小世界图进行高效、稳健的近似最近邻搜索》的论文中提出。

HNSW 是一种基于图的索引高维数据的方法。它构建了一个图的层次结构,其中每一层都是前一层的子集,因此时间复杂度为 O(log(rows)) 。在搜索过程中,它会浏览这些图以快速找到最近的邻居。

alt

尽管 HNSW 指数快速而高效,但它也存在两个缺点:

1. 内存 :该索引所需的内存明显多于其他索引,例如倒排文件索引 (IVFFlat)。您可以通过拥有更大的数据库实例来解决内存问题。但是,如果您使用独立的 Postgres(例如 AWS RDS),您会发现自己处于仅为索引构建而过度配置的情况。但是,借助 Neon 扩展功能,您可以扩展、构建 HNSW 索引,然后缩减规模以节省成本。

alt

2. 构建时间: 对于百万行数据集,构建 HNSW 索引可能需要数小时。这主要是因为计算向量之间的距离需要花费时间。而这正是 pgvector 0.6.0 通过引入 并行索引构建 解决的问题。通过分配更多 CPU 和工作器,您可以将 HNSW 索引的构建速度提高 30 倍。

alt

但是等一下!HNSW 索引支持更新,那么如果您只需要构建一次索引,为什么这个并行索引构建功能是必要的呢?

嗯,有两种情况需要创建 HNSW 索引:

当您想要更快的查询并优化向量搜索时

当你已经有 HNSW 索引,并从表中删除向量时

后者可能会导致索引搜索返回误报,从而对 LLM 响应的质量和 AI 应用程序的整体性能产生负面影响。

与以前的版本相比,pgvector 0.6.0 使用并行工作器时可将索引构建时间加快 30 倍。处理大型数据集和向量大小(例如 OpenAI 1536 维向量嵌入)时,这种改进尤其明显。

创建 HNSW 索引可能需要大量资源。原因是您需要分配足够的“maintenance_work_mem”以容纳内存中的索引。否则,hnsw 图的构建时间会更长。

NOTICE: hnsw graph no longer fits into maintenance_work_mem after 100000 tuples
DETAIL: Building will take significantly longer.
HINT: Increase maintenance_work_mem to speed up builds.

为了有效地使用并行索引构建,必须使用适当的设置配置 Postgres。需要考虑的关键参数是:

Maintenance_work_mem :此参数决定为创建或重建索引分配的内存。此参数影响这些操作的性能和效率。将其设置为较高的值(例如 8GB)可以更有效地处理索引构建过程。

SET maintenance_work_mem = '8GB';

max_parallel_maintenance_workers: 这决定了可以使用的并行工作器的数量。在 Postgres 中,max_parallel_maintenance_workers 的默认值通常设置为 2。将其设置为较大的数字可以利用更多的计算资源来更快地构建索引。

SET max_parallel_maintenance_workers = 7; -- plus leader

在 RAG 应用中,召回率与查询执行时间一样重要。召回率是 ANN 提供的正确答案的百分比。在 HNSW 索引中,“ef_search”是确定搜索时要扫描的邻居数量的参数。“ef_search”越高,召回率越高,查询执行时间越长。

Johnathan Katz 进行的测试 表明,使用并行构建对召回率的影响微乎其微,大多数变化都产生了超过 1% 的积极影响。尽管速度有了很大的提高,但召回率的这种显著稳定性凸显了 pgvector 0.6.0 并行构建过程的有效性。

alt

pgvector 0.6.0 代表了一次重大飞跃,证明了 Postgres 在向量搜索领域的重要性。通过利用并行索引构建的强大功能,开发人员现在可以更快速、更高效地构建 HNSW 索引,从而显著减少此类任务传统上所需的时间和资源。

原文链接:https://neon.tech/blog/pgvector-30x-faster-index-build-for-your-vector-embeddings?ref=dailydev

本文由 mdnice 多平台发布

http://www.ds6.com.cn/news/55206.html

相关文章:

  • 河北搭建营销型网站西安网站seo服务
  • wordpress怎么查看源代码百度优化
  • 那些网站是做金融行业产品的推广及宣传思路
  • 九亭 网站建设百度推广一个月多少钱
  • 玉田网站建设关键词优化包含
  • 南京快速建站公司网络营销广告
  • 淘宝上做网站的靠谱抖音推广渠道有哪些
  • 中堂镇仿做网站推广计划怎么做
  • 十堰网站开发济南网络seo公司
  • 通付盾 网站公司建设北京网络优化推广公司
  • 商城网站建设方案 2017武汉做网页推广公司
  • 网站建设便宜公司网络自动推广软件
  • 致设计网络优化工程师吃香吗
  • 网站怎么做付费项目浏览器大全网站
  • php企业网站开发论文百度广告运营
  • 汨罗做网站价格百度推广账号登录入口
  • 网站模板 瀑布流重庆百度开户
  • 长沙好的做网站品牌龙华线上推广
  • 如何创建网站平台的详细步骤seo查询站长工具
  • 网站做菠菜淄博seo公司
  • 口碑营销怎么做河南新站关键词排名优化外包
  • 网站建站查询热搜榜百度
  • 产品经理如何做p2p网站改版色盲能治好吗
  • 自媒体横行还有做网站福州网站seo
  • 安徽外贸网站google建站百度热搜榜在哪里看
  • 河北新闻网今日头条新闻网络优化器
  • 做外贸一般在什么网站好上海网络推广排名公司
  • 学习java网站开发手机管家一键优化
  • 昆明企业网站建设软媒win7优化大师
  • 访问网站需要账号密码今日新闻头条新闻