supabase链接vecs文档

使用Supabase链接本地数据库

Vecs 如何使用本地数据库工作。确保机器上安装了Supabase CLI。

# Initialize your project
supabase init# Start Postgres
supabase start

Supabase vecs同步数据

vecs官方文档

创建集合

import vecs #下面这一行是本地的postgre数据库连接 
#vx = vecs.create_client("postgresql://postgres:postgres@localhost:54322/postgres") DB_CONNECTION = "postgresql://<user>:<password>@<host>:<port>/<db_name>" 
vx = vecs.create_client(DB_CONNECTION) docs = vx.get_or_create_collection(name="docs", dimension=3)

添加向量

现在我们可以使用以下命令将一些嵌入向量插入到我们的“文档”集合中upsert()

import vecs # create vector store client 
docs = vecs.get_or_create_collection(name="docs", dimension=3) 
# a collection of vectors with 3 dimensions 
vectors=[ ("vec0", [0.1, 0.2, 0.3], {"year": 1973}), ("vec1", [0.7, 0.8, 0.9], {"year": 2012}) ] 
# insert our vectors docs.upsert(vectors=vectors)

查询集合

你现在可以查询集合来检索相关匹配:

import vecs 
docs = vecs.get_or_create_collection(name="docs", dimension=3) 
# query the collection filtering metadata for "year" = 2012 
docs.query(data=[0.4,0.5,0.6], # required limit=1, # number of records to return filters={"year": {"$eq": 2012}}, # metadata filters )

补充一个重要的空查询,用来查所有数据:

query_vector = [0] * 768 # 全部为0的查询向量 
# 查询数据 
data = docs.query( data=query_vector, limit=1000,#最大limit为1000 filters={}, measure="cosine_distance",include_value=True,#返回向量值 include_metadata=True#返回元数据 )

补充根据id查询:

源代码:

使用(metadata位于[0][2]):


character_data = cards_collection.fetch([str(request.character_id)]) 
if not character_data: raise HTTPException(status_code=404, detail="Character not found") 
metadata = character_data[0][2]

返回数据格式示例:

删除向量

删除记录会将其从集合中移除。要删除记录,请为该方法指定列表ids或元数据过滤器delete。该方法将返回成功删除的记录的 ID。请注意,尝试删除不存在的记录不会引发错误。

docs.delete(ids=["vec0", "vec1"]) # or delete by a metadata filter docs.delete(filters={"year": {"$eq": 2012}})

适配器

适配器是一项可选功能,用于在向集合添加数据或从集合中查询数据之前对其进行转换。适配器让你能够仅使用项目的原生数据类型(例如,仅使用原始文本)与集合进行交互,而无需手动处理向量。

适配器在更新和查询时将你的输入转换为新格式。例如,你可以将大文本拆分为较小的块,或将其转换为嵌入。当然,适配器对 Hugging Face 模型具有一流的支持。

有关可用适配器的完整列表,请参阅内置适配器。

创建一个带有适配器的集合,该适配器将文本分块为段落,并使用模型将每个块转换为嵌入向量all-MiniLM-L6-v2

首先,安装vecs文本嵌入的可选依赖项:

pip install "vecs[text_embedding]"

然后创建一个带有适配器的集合,将文本分块为段落,并使用all-MiniLM-L6-v2384 维文本嵌入模型嵌入每个段落。

import vecs from vecs.adapter 
import Adapter, ParagraphChunker, TextEmbedding 
# create vector store client 
vx = vecs.Client("postgresql://<user>:<password>@<host>:<port>/<db_name>")
# create a collection with an adapter 
docs = vx.get_or_create_collection( name="docs", adapter=Adapter( [ ParagraphChunker(skip_during_query=True),   TextEmbedding(model='all-MiniLM-L6-v2'), ] ) )

通过在集合中注册适配器,我们可以将记录插入到集合中,传递文本而不是向量。

# add records to the collection using text as the media type 
docs.upsert( records=[ ( "vec0", "four score and ....", # <- note that we can now pass text here {"year": 1973} ), ( "vec1", "hello, world!", {"year": "2012"} ) ] )

类似地,我们可以使用文本查询集合。

# search by text 
docs.query(data="foo bar")

Supabase可视化管理:

在table editor选择vecs向量库

向量库视图查看

向量搜索原理

余弦相似度

在NLP的任务里,会对生成两个词向量进行相似度的计算,常常采用余弦相似度公式计算。

余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性"。

余弦相似性的值范围在-1到1之间:

  • 当余弦相似性等于1时,表示两个向量在多维空间中的方向完全相同,即它们是完全相似的。

  • 当余弦相似性等于0时,表示两个向量之间不存在线性关系,它们是不相关的。

  • 当余弦相似性等于-1时,表示两个向量在多维空间中的方向正好相反,即它们是完全不同的。

 
def cos_sim(vector_a, vector_b): """ 计算两个向量之间的余弦相似度 :param vector_a: 向量 a :param vector_b: 向量 b :return: sim """ 
vector_a = np.mat(vector_a) 
vector_b = np.mat(vector_b) num = float(vector_a * vector_b.T) 
denom = np.linalg.norm(vector_a) * np.linalg.norm(vector_b) 
sim = num / denom return sim
欧几里德距离(Euclidean Distance)
1.理论

欧几里德距离(Euclidean Distance),也称为欧式距离,是用于测量空间中两点之间的直线距离的度量。它是最常用的距离度量之一,通常用于欧几里德空间(Euclidean Space)中的点之间的距离计算。在二维平面上,欧几里德距离就是我们通常所说的两点之间的直线距离。

曼哈顿距离(Manhattan Distance)
1. 理论

曼哈顿距离(Manhattan Distance),也称为城市街区距离或L1距离,是一种用于测量空间中两点之间的距离的度量方法。与欧几里德距离不同,曼哈顿距离是通过计算两点之间在水平和垂直方向上的距离之和来衡量的。它通常用于在网格状或坐标轴对齐的空间中度量距离,例如城市街区的距离。

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

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

相关文章

【C#】命名规范

文章目录 C# 命名规范使用Pascal case使用Camel case方法、属性、类命名见名知义LINQ查询变量使用有意义的名称如何声明成员变量和字段正确格式化和缩进代码如何撰写备注 通用C#编码最佳实践如何将值与空字符串进行比较使用异常处理使用&&和||可获得更好的性能单一职责…

Nginx快速使用

如果本系列文章对您有帮助&#xff0c;可以 star 一下我的 limou-learn-note&#xff0c;求求惹(๑&#xff1e; &#xff1c;)☆♡~ 叠甲&#xff1a;以下文章主要是依靠我的实际编码学习中总结出来的经验之谈&#xff0c;求逻辑自洽&#xff0c;不能百分百保证正确&#xff…

37拼购:电商新风尚,共享双赢的购物革命

随着2024年电商市场的日益繁荣&#xff0c;商品海洋中的同质化问题愈发严峻&#xff0c;消费者在茫茫商海中寻觅独特价值的难度陡增。在此背景下&#xff0c;一种名为“37悦享拼”的创新电商模式横空出世&#xff0c;它巧妙融合了私域社交与电商精髓&#xff0c;旨在打破传统壁…

YOLOv8+Deepsort+PyQt+GUI 语义分割+目标检测+姿态识别 三者合一(集成于一套系统)综合视觉分析系统

综合视觉分析系统 技术栈&#xff1a; YOLOv8&#xff1a;用于目标检测&#xff0c;是一个快速且准确的目标检测框架。DeepSORT&#xff1a;用于目标跟踪&#xff0c;结合了深度学习特征提取和卡尔曼滤波器来预测目标轨迹。GUI&#xff1a;提供一个直观易用的图形用户界面&am…

DMA与AXI DMA ip

文章目录 AXI DMARead Channel&#xff08;读通道&#xff09;Write Channel&#xff08;写通道&#xff09; # 其他选项Scatter Gather Engine特点工作流程 AXI DMA 配置项说明Component Name (axi_dma)DMA组件的名称&#xff0c;可以自定义。Enable Asynchronous Clocks允许…

基于Python实现一个庆祝国庆节的小程序

功能&#xff1a; 添加互动功能&#xff1a;允许用户选择不同的祝福语或者查询不同的国庆节信息。动态背景音乐&#xff1a;播放国庆节相关的背景音乐。增加节日小测验&#xff1a;提供一些关于国庆节的趣味小测验&#xff0c;让用户参与。增强图形用户界面 (GUI)&#xff1a;…

随着Batch size增加,最佳learning rate如何选择?

最近读到《Surge Phenomenon in Optimal Learning Rate and Batch Size Scaling》这篇论文&#xff0c;里面通过实验和理论证明了learning rate和batch size之间的关系&#xff0c;觉得很有意思&#xff0c;就简答写个blog记录下。 1. 简介 在影响模型训练效果的所有参数中&a…

顶刊算法 | 鹈鹕算法POA-Transformer-LSTM多变量回归预测

顶刊算法 | 鹈鹕算法POA-Transformer-LSTM多变量回归预测 目录 顶刊算法 | 鹈鹕算法POA-Transformer-LSTM多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现顶刊算法 | 鹈鹕算法POA-Transformer-LSTM多变量回归预测&#xff08;程序可以作为JCR…

录屏工具 win10:优化你的Windows 10屏幕录制体验,高清好用录屏软件推荐

在数字时代&#xff0c;屏幕录制已成为日常工作和娱乐中不可或缺的一部分。无论是制作教程、录制游戏高光时刻&#xff0c;还是进行远程协作&#xff0c;一个好的录屏工具都是你成功的关键。Windows 10作为全球广泛使用的操作系统&#xff0c;其自带的录屏工具已经为许多用户所…

【Go】Go语言介绍与开发环境搭建

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

大语言模型之ICL(上下文学习) - In-Context Learning Creates Task Vectors

本文译自 《In-Context Learning Creates Task Vectors》 —— 论文中的作者也在用LLaMA模型&#xff0c;笔者自我感觉拉近和世界顶级人才的距离&#xff0c;哈哈内容较长&#xff0c;如想看结论直接看 摘要、介绍与结论几个章节即可&#xff0c;看细节请看目录索引。经验风险最…

llvm后端之局部变量

llvm后端之局部变量 引言1 生成FrameIndexSDNode2 消除FrameIndex2.1 eliminateCallFramePseudoInstr2.2 eliminateFrameIndex 引言 llvm后端对局部变量(即alloc节点)的访问&#xff0c;首先&#xff0c;将对alloc节点转为FrameIndex&#xff0c;所有对alloc的load和store均用…

分类预测|2024年最新优化算法鹦鹉优化器PO|基于鹦鹉优化SVM支持向量机数据分类预测Matlab程序PO-SVM

分类预测|2024年最新优化算法鹦鹉优化器PO|基于鹦鹉优化SVM支持向量机数据分类预测Matlab程序PO-SVM 文章目录 一、基本原理**原理****PO-SVM 流程****总结** 二、实验结果三、核心代码四、代码获取五、总结 一、基本原理 PO-SVM 是一种将鹦鹉优化算法&#xff08;Parrot Opti…

机器学习 第8章 集成学习

目录 个体与集成BoostingBagging与随机森林Bagging随机森林 结合策略平均法投票法学习法 个体与集成 定义&#xff1a;集成学习&#xff0c;也叫多分类器系统、基于委员会的学习等&#xff0c;它是一种通过结合多个学习器来构建一个更强大的学习器的技术。如下图所示 在这里&a…

计算机网络八股总结

这里写目录标题 网络模型划分&#xff08;五层和七层&#xff09;及每一层的功能五层网络模型七层网络模型&#xff08;OSI模型&#xff09; 三次握手和四次挥手具体过程及原因三次握手四次挥手 TCP/IP协议组成UDP协议与TCP/IP协议的区别Http协议相关知识网络地址&#xff0c;子…

【每日一题】LeetCode 2390 从字符串中移除星号(栈、字符串、模拟)

【每日一题】LeetCode 2390 从字符串中移除星号&#xff08;栈、字符串、模拟&#xff09; 题目描述 给定一个由小写英文字母和星号 * 组成的字符串 s&#xff0c;你需要通过一系列操作移除所有的星号。在每一步操作中&#xff0c;你可以选中字符串中的一个星号&#xff0c;然…

新能源汽车 BMS 学习笔记篇——如何选择继电器 MOS 管作为开关

序&#xff1a;继电器和 MOSFET&#xff08;俗称 MOS 管&#xff09;都可以用作 BMS&#xff08;Battery Management System&#xff0c;电池管理系统&#xff09; 中控制电池充放电的开关&#xff0c;但它们在原理、结构和特性上存在一些区别&#xff0c;以下总结它们之间主要…

java后端如何发送httpGET和POST请求

用java后端发送请求需要用到的一个工具包为HttpClient。HttpClient是Apache的一个子项目&#xff0c;是高效的、功能丰富的支持HTTP协议的客户端编程工具包。 引入依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId&…

springboot-数据库事务支持

文章目录 事务支持编程式事务管理声明式事务管理使用 Transactional 注解配置事务管理器Transactional 的一些属性 isolation 事务隔离级别propagation 事务传播机制 事务支持 Spring Boot 中的事务管理主要依赖于 Spring Framework 提供的功能。Spring 为事务管理提供了两种方…

.net core 通过Sqlsugar生成实体

通过替换字符串的方式生成代码&#xff0c;其他代码也可以通这种方式生成 直接上代码 设置模板 将这几个模板文件设置为&#xff1a;嵌入资源 模板内容&#xff1a; using SqlSugar;namespace {Namespace}.Domain.Admin.{ModelName}; /// <summary> /// {TableDisplay…