news 2026/6/23 23:12:33

向量数据库常用SQL语句

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
向量数据库常用SQL语句

向量数据库常用SQL语句

创建包含向量字段的表

CREATETABLEproducts(idSERIALPRIMARYKEY,nameVARCHAR(100),descriptionTEXT,embedding VECTOR(1536)-- 假设使用1536维向量);

插入向量数据

INSERTINTOproducts(name,description,embedding)VALUES('智能手机','高端旗舰手机','[0.1, 0.2, ..., 0.5]');

向量相似度查询(以pgvector为例)

SELECTid,name,1-(embedding<=>'[0.3, 0.1, ..., 0.4]')ASsimilarityFROMproductsORDERBYembedding<=>'[0.3, 0.1, ..., 0.4]'LIMIT10;

创建向量索引

CREATEINDEXONproductsUSINGivfflat(embedding vector_l2_ops)WITH(lists=100);-- 针对IVFFlat索引

典型应用案例

案例1:商品推荐系统

基于用户浏览历史的向量相似度推荐

# 假设已获取用户浏览记录的向量表示user_vector=[0.2,0.15,...,0.3]# 使用pgvector查询相似商品query=""" SELECT id, name, 1 - (embedding <=> %s) AS similarity FROM products WHERE category = 'electronics' ORDER BY embedding <=> %s LIMIT 5 """cursor.execute(query,(user_vector,user_vector))

案例2:语义搜索实现

文本语义相似度搜索

fromsentence_transformersimportSentenceTransformer model=SentenceTransformer('all-MiniLM-L6-v2')# 将搜索查询转换为向量query_text="续航持久的蓝牙耳机"query_vector=model.encode(query_text).tolist()# 向量数据库查询similar_products=collection.query(query_embeddings=[query_vector],n_results=3,include=["metadata","distances"])

代码实现示例

使用FAISS实现(Python)

importfaissimportnumpyasnp# 创建索引dimension=768index=faiss.IndexFlatIP(dimension)# 添加向量数据vectors=np.random.rand(1000,dimension).astype('float32')index.add(vectors)# 相似度搜索query_vector=np.random.rand(1,dimension).astype('float32')D,I=index.search(query_vector,k=5)# 返回前5个最相似结果

使用Milvus向量数据库

frompymilvusimportconnections,Collection# 连接数据库connections.connect("default",host="localhost",port="19530")# 获取集合collection=Collection("products")# 向量搜索search_params={"metric_type":"L2","params":{"nprobe":10}}results=collection.search(data=[query_vector],anns_field="embedding",param=search_params,limit=5,output_fields=["name"])

性能优化技巧

索引参数调优(以IVF_FLAT为例)

-- 调整nlist参数平衡查询精度和速度CREATEINDEXONproductsUSINGivfflat(embedding vector_l2_ops)WITH(lists=500);

混合查询(结合向量和标量过滤)

SELECTid,nameFROMproductsWHEREprice<1000ANDembedding<=>'[0.1, ..., 0.2]'<0.3ORDERBYembedding<=>'[0.1, ..., 0.2]'LIMIT10;

向量量化技术应用(如PQ编码)

# 使用Faiss的PQ压缩quantizer=faiss.IndexFlatL2(dimension)index=faiss.IndexIVFPQ(quantizer,dimension,100,16,8)# 100个簇,16个子向量,8bits
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 17:52:11

Cursor快捷键大全:效率翻倍的隐藏技巧

用了半年Cursor&#xff0c;我发现自己以前写代码的方式太原始了。直到有一天&#xff0c;我看到同事的手指在键盘上飞舞&#xff0c;几乎不用碰鼠标就完成了我需要半分钟的操作&#xff0c;才意识到掌握快捷键有多重要。今天我就把自己整理的Cursor快捷键秘籍分享出来&#xf…

作者头像 李华
网站建设 2026/6/22 20:46:14

【项目实战】md 是标准纯文本标记语言,mdx 是其扩展格式(融合 JSX/组件能力)

md(Markdown)和 mdx(MDX)是两种关联但定位不同的文件格式,核心区别在于「语法支持范围」「功能上限」和「使用场景」——md 是标准纯文本标记语言,mdx 是其扩展格式(融合 JSX/组件能力),以下是详细对比: 一、核心定义与本质区别 维度 .md 文件(Markdown) .mdx 文件…

作者头像 李华
网站建设 2026/6/23 17:52:16

2、网络指南:印刷版与在线版的选择及网络知识介绍

网络指南:印刷版与在线版的选择及网络知识介绍 一、印刷版与在线版的情况 在1993年秋天,有人提议在O’Reilly & Associates出版相关网络指南书籍。最终达成协议,O’Reilly将制作该网络指南的官方印刷版,而原作者保留版权以便书籍资源能自由分发。这意味着读者有两种选…

作者头像 李华
网站建设 2026/6/23 17:55:55

Kotaemon如何处理歧义问题?上下文消解策略解析

Kotaemon如何处理歧义问题&#xff1f;上下文消解策略解析 在真实的对话场景中&#xff0c;用户很少会用完整、规范的句子提问。更多时候&#xff0c;他们的表达是碎片化的&#xff1a;“它多少钱&#xff1f;”“上次那个呢&#xff1f;”“比之前便宜吗&#xff1f;”——这些…

作者头像 李华
网站建设 2026/6/23 17:56:25

6、网络配置与管理全解析

网络配置与管理全解析 1. 路由选择机制 当IP实现搜索到目标的最佳路由时,可能会找到多个匹配目标地址的路由条目。例如,默认路由能匹配所有目标,但发往本地连接网络的数据报也会匹配其本地路由。那么IP如何确定使用哪条路由呢?这就体现了子网掩码的重要性。当两条路由都匹…

作者头像 李华
网站建设 2026/6/23 22:38:33

零代码训练!用本地大模型实现文本情感分析

本文介绍如何利用本地部署的大模型&#xff08;Ollama/vLLM&#xff09;实现零训练的文本情感分析。通过精心设计的Prompt&#xff0c;将模型直接转换为分类器&#xff0c;无需传统NLP流程中的分词、特征构造、模型训练等复杂步骤。文章提供了从单条分析到CSV批量处理的完整代码…

作者头像 李华