PgSQL-向量数据库插件-lantern

news2024/11/25 11:20:55

PgSQL-向量数据库插件-lantern

即pgvector、pg_embedding 后又一向量数据库扩展Lantern问世了。当然也为向量列提供了hnsw索引以加速ORDER BY... LIMIT查询。Lantern使用usearch实现hnsw

使用方法

保留了标准PgSQL接口,兼容其生态工具。首先需要安装该插件:

CREATE EXTENSION lantern;

创建一个包含向量列的表,并添加数据:

CREATE TABLE small_world (id integer, vector real[3]);
INSERT INTO small_world (id, vector) VALUES (0, '{0,0,0}'), (1, '{0,0,1}');

在表上创建hnsw索引:

CREATE INDEX ON small_world USING hnsw (vector);

根据向量数据自定义hnsw索引参数,例如距离函数(dist_l2sq_ops)、索引构建参数和索引搜索参数:

CREATE INDEX ON small_world USING hnsw (vector dist_l2sq_ops)
WITH (M=2, ef_construction=10, ef=4, dim=3);

开始查询:

SET enable_seqscan = false;
SELECT id, l2sq_dist(vector, ARRAY[0,0,0]) AS dist
FROM small_world ORDER BY vector <-> ARRAY[0,0,0] LIMIT 1;

关于运算符

Lantern在索引上支持的多种距离函数。只需要创建索引时指定用于列的距离函数,Lantern会自动推断用于搜索的距离函数进行查询,因此查询中使用<->操作符。

请注意,该运算符<->专门用于索引查找。如果您希望在查询中不使用索引,则直接使用距离函数(例如l2sq_dist(v1, v2))

在创建索引期间可以使用四个已定义的运算符类:

1)dist_l2sq_ops:类型的默认值real[]

2)dist_vec_l2sq_ops:类型的默认值vector

3)dist_cos_ops:适用类型real[]

4)dist_hamming_ops: 适用类型integer[]

索引构建参数

M, ef, 和ef_construction参数控制hnsw算法的性能:

1)通常以召回代价降低M和ef_construction值来加快索引创建速度

2)较低的M和ef值可以提高查询性能,以召回为代价减少共享缓冲区命中率。

特点

1)流行用例(CLIP 模型、Hugging Face 模型、自定义模型)的嵌入生成

2)与 pgvector 数据类型的互操作性,因此任何使用 pgvector 的人都可以切换到 Lantern

3)通过外部索引器创建并行索引

4)够在数据库服务器外部生成索引图

5)支持在数据库外部和另一个实例内部创建索引,使您可以在不中断数据库工作流程的情况下创建索引

6)查看所有helper函数以了解使用方法

性能

1)我们跟踪三个关键指标。CREATE INDEX时间、SELECT吞吐量和SELECT延迟。

2)我们在所有这些指标上都匹配或优于 pgvector 和 pg_embedding (Neon)。

3)我们计划继续进行性能改进,以确保我们是性能最佳的数据库。

b8be1a20bf029b47e2aefd87b11f5680.png

733e3143ff9ba6dfe35e7d627f597432.png

b9b63a6d1cf2b7a8bb56db8fe91e4d16.png

路线图

1)Lantern 的云托管版本 -注册更新

2)为您的 CPU 量身定制的硬件加速距离指标,可实现更快的查询

3)用于构建不同行业应用程序的模板和指南

4)更多用于生成嵌入的工具(支持第三方模型 API、更多本地模型)

5)支持版本控制和 A/B 测试嵌入

6)自动调整的索引类型将选择适当的创建参数

7)支持 1 字节和 2 字节向量元素,以及最多 8000 个维度向量 ( PR #19 )

8)请通过support@lantern.dev请求功能

原文及代码

https://github.com/lanterndata/lantern

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1048264.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

服务器基础知识:raid卡有什么优势?

当今直播电商、短视频呈现热火朝天的趋势&#xff0c;是近两年的商业热门议题&#xff0c;以淘宝天猫、拼多多、抖音、小红书、视频号为代表的平台数据量呈现爆炸性的增长。据IDC预测&#xff0c;2025年全球数据总量将增至175ZB&#xff08;1ZB1万亿GB&#xff09;&#xff0c;…

数字电视码流分析仪通用规范

声明 本文是学习GB-T 26274-2010 数字电视码流分析仪通用规范. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了数字电视码流分析仪(以下简称码流分析仪)的技术要求、试验方法、检验规则及标 志、包装、运输、贮存等。 本标准适…

C++代码示例:组合数简单生成工具

文章目录 前言代码仓库内容代码&#xff08;有详细注释&#xff09;编译和运行命令结果总结参考资料作者的话 前言 C代码示例&#xff1a;组合数简单生成工具。 代码仓库 yezhening/Programming-examples: 编程实例 (github.com)Programming-examples: 编程实例 (gitee.com) …

echarts 折线组件

echarts 折线组件 <template><div class"lineChartsTemplate" :id"chartsId"></div> </template><script> export default {name: "lineChartsTemplate",components: {},props: {xData: {type: Array,default: ()…

个人在运行python代码过程中的坑230928

0关于GPT和百度使用的区别 就我个人使用经验而言&#xff0c;我觉得百度、知乎、csdn更是直接奔着解决问题去的&#xff0c;直接方便快捷&#xff0c;不需要你再对信息进行加工&#xff0c;可以直接找到经验。 GPT则是需要我们给他一个输入&#xff0c;给他一个提示&#xff0…

提高网申通过率的秘籍,校园招聘之春招秋招都有效

提高网申通过率的秘籍&#xff01;校园招聘&#xff08;校招-春招-秋招&#xff09;都有效。 网申&#xff0c;指的是在网上申请招聘企业的岗位&#xff0c;每年春招秋招&#xff0c;都是毕业生们的重点大事&#xff0c;如何把握好机会&#xff0c;就在于各个环节的细节之处&…

联盟 | 彩漩 X HelpLook,AI技术赋能企业效率提升

近日&#xff0c;AI 驱动的 PPT 协作分享平台「 彩漩 」与 AI 知识库搭建工具「 HelpLook」&#xff0c;携手为用户工作流注入更多智能和创造力&#xff0c;全面拥抱 AIGC 时代带来的机遇&#xff0c;致力于提供前沿的智能解决方案。 彩 漩 彩漩是一个以 AI 技术为基础、贯彻 …

排雷Jmeter分布式性能测试,为什么要用分布式?这些易错点特别危险!

01、为什么要使用分布式 做性能测试时&#xff0c;如果被测系统性能比较好&#xff0c;或者系统项目比较大&#xff0c;那么一般都会要求能支持比较高的并发用户数。而我们做性能测试时&#xff0c;发起请求的机器&#xff0c;硬件资源是一定的&#xff0c;不可能配置无限大。…

基于Linux socket聊天室-多线程服务器模型(01)

​前言 socket在实际系统程序开发当中&#xff0c;应用非常广泛&#xff0c;也非常重要。实际应用中服务器经常需要支持多个客户端连接&#xff0c;实现高并发服务器模型显得尤为重要。高并发服务器从简单的循环服务器模型处理少量网络并发请求&#xff0c;演进到解决C10K&…

如何爬取动态加载的图片数据

百度图片是一个非常受欢迎的图片分享平台&#xff0c;其中包含了大量的图片资源。然而&#xff0c;百度图片使用了动态加载技术&#xff0c;使得Python爬虫在获取百度动态加载图片时面临一定的难度。百度图片使用了动态加载技术&#xff0c;这意味着图片并不是一次性全部加载出…

2.安装conda python库

centos 显卡驱动、cuda、cudnn安装参考地址&#xff1a; 1.centos7 安装显卡驱动、cuda、cudnn-CSDN博客 3.Cenots Swin-Transformer-Object-Detection环境配置-CSDN博客 1.安装anaconda 步骤1&#xff1a;下载 下载地址&#xff1a; Index of / 下载版本 步骤2&#xf…

深信服安全GPT 2.0升级,开启安全运营“智能驾驶”旅程

9月22日&#xff0c;深信服对外展示安全GPT落地成果与2.0升级能力。来自各行业权威嘉宾代表&#xff1a;美的集团首席信息安全官&#xff08;CISO&#xff09;兼软件工程院院长、欧洲科学院院士&#xff08;MAE&#xff09;、IEEE Fellow、IET Fellow、ACM杰出科学家、AAIA Fel…

Java集合随笔

这里写自定义目录标题 好文链接常见的方法Collections类Comparator接口HashMap 的长度为什么是 2 的幂次方&#xff1f;讲解链接 Collection部分&#xff1a; Set部分&#xff1a; HashSet&#xff1a;底层数据结构是哈希表&#xff0c;线程不安全&#xff0c;无序&#xff0…

【ArcGIS Pro二次开发】(68):计算面要素的四至点

这个工具的目的是计算面要素的四至点。 四至点并不是要素的MaxX,MaxY,MinX,MinY四个值。如果要计算这四个字&#xff0c;可以直接使用系统自带的【计算几何属性】进行计算&#xff1a; 这里要计算的是要素的最东、西、南、北的四个点坐标。 因此首先要获取这四个点&#xff0c…

vue3 - 基于ts的时间转换处理的time utils

GitHub Demo 地址 在线预览 时间转换处理的工具类 timeUtils.ts // 时间转换工具类const TimeUtils {Jh_getTimeStamp,Jh_timeStampToTime,Jh_convertTimeStamp,Jh_timeStampToYMD,Jh_isToday,Jh_getYearMonth,Jh_getPrevYear,Jh_getNextYear,Jh_getPrevYearMonth,Jh_getNex…

VSCode快速设置heder和main函数

快速设置header: 点击左侧的齿轮&#xff0c;选择User Snippets&#xff1a; 在出现的选择框中输入python&#xff0c;选择python.json 在最外层的{ }内部添加以下内容 "HEADER": {"prefix": "header","body": ["# -*- encoding:…

【运维知识高级篇】超详细的Jenkins教程3(Maven项目上线全流程)

上篇文章给大家介绍了Maven编译的内容&#xff0c;讲解了用Jenkins如何去集成Maven&#xff0c;这篇文章给大家介绍另一个的Maven项目&#xff0c;实现gitlab提交代码后&#xff0c;自动进行Maven编译&#xff0c;自动推送至web主机进行代码上线的效果。 文章目录 一、主机介绍…

【操作系统笔记八】任务调度信号处理CPU上下文

任务调度 何时需要调度执行一个任务&#xff1f; 第一&#xff1a;当任务创建的时候&#xff0c;需要决定是继续执行父进程&#xff0c;还是调度执行子进程 第二&#xff1a;在一个任务退出时&#xff0c;需要做出调度决策&#xff0c;需要从 TASK_RUNNING 状态的所有任务中选…

IDEA 2019 Springboot 3.1.3 运行异常

项目场景&#xff1a; 在IDEA 2019 中集成Springboot 3.1.3 框架&#xff0c;运行异常。 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSch…

Linux ❀ 进程出现process information unavailable时的消除方法

[rootmaster ~]# jps 74963 -- process information unavailable 78678 Jps [rootmaster ~]# cd /tmp/hsperfdata_redhat/ # redhat为启动该java进程的用户ps -ef | grep $pid查找 [rootmaster hsperfdata_redhat]# ll total 32 -rw------- 1 redhat redhat 32768 Sep 27 15:…