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,一经查实,立即删除!

相关文章

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…

随着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;看细节请看目录索引。经验风险最…

分类预测|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;子…

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

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

.net core 通过Sqlsugar生成实体

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

重学SpringBoot3-SpringApplicationRunListener

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-SpringApplicationRunListener 1. 基本作用2. 如何实现2.1. 创建SpringApplicationRunListener2.2. 注册SpringApplicationRunListener2.3. 完整示例 3.…

跨国公司撤出背后的启示:中国IT产业的挑战与机遇

目录 前言 1. 全球化背景下的战略调整 2. 中国IT人才的应对之策 3. 中国IT产业的机遇与挑战 4. 未来的中国IT产业&#xff1a;自主创新与全球化并行 5. 结语 相关推荐 前言 IBM中国近日宣布撤出其在华两大研发中心&#xff0c;这一决定在IT行业内引发了广泛的讨论和思考…

iceoryx共享内存通信

共享内存原理 当POSIX系统中的进程启动时,它会被赋予自己的虚拟地址空间。 虚拟地址空间跨越的范围对于不同的进程可能是相同的,但是在特定地址可访问的数据对于每个进程可能是不同的。 在进程的虚拟地址空间内,有许多“内存区域”用于加载或映射数据。这些内存区域通常是…

MacBook上怎么查找历史复制记录?

你是否经常遇到这样的情况:做内容或方案时,需要用到素材就去找,找到后回来粘贴,然后再去找,再回来粘贴?这个过程是不是很繁琐? 那么找到的素材要不要保存下来呢?每个都存成文件似乎太麻烦了。但如果不单独保存,过两天想再利用又找不到了,怎么办? 在网上看到的一段好文案、…

Centos入门必备基础知识

CentOS&#xff08;Community ENTerprise Operating System&#xff09;是一个开源的Linux发行版&#xff0c;基于Red Hat Enterprise Linux&#xff08;RHEL&#xff09;源代码构建。以下是CentOS入门必备的一些基础知识&#xff1a; 前言 本文由浪浪云赞助发布&#xff0c;…

JavaScript 将 json 美化输出

https://andi.cn/page/621741.html

STM32G474RE之RTC

STM32G474RE之RTC使用HAL库实现RTC时间配置&#xff0c;以及报警配置&#xff0c;支持双路报警。 1、STM32G474RE的RTC晶振引脚&#xff1a; OSC32_IN为PC14&#xff0c;OSC32_OUT为PC15&#xff1b; 2、Vbat引脚 Vbat引脚是用来给外部晶振LSE和备份寄存器提供电源。当没有“…