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

Python 矢量数据库和矢量索引:构建 LLM 应用程序

 

Python 矢量数据库和矢量索引:构建 LLM 应用程序

 

推荐:使用 NSDT场景编辑器 助你快速搭建可二次编辑的3D应用场景

由于使用其硬件创建的生成式AI应用程序,Nvidia经历了显着的增长。另一项软件创新,矢量数据库,也正在乘着生成式人工智能的浪潮。

开发人员正在向量数据库上用Python构建AI驱动的应用程序。通过将数据编码为向量,他们可以利用向量空间的数学特性在非常大的数据集中实现快速相似性搜索。

让我们从基础开始!

矢量数据库基础知识

矢量数据库将数据作为数字矢量存储在坐标空间中。这允许通过余弦相似性等操作计算向量之间的相似性。

最接近的向量表示最相似的数据点。与标量数据库不同,矢量数据库针对相似性搜索进行了优化,而不是复杂的查询或事务。

检索类似的向量只需几毫秒而不是几分钟,甚至跨越数十亿个数据点也是如此。

矢量数据库构建索引以按邻近度有效地查询矢量。这有点类似于文本搜索引擎如何索引文档以进行快速全文搜索。

与传统数据库相比,矢量搜索对开发人员的好处

对于开发人员,矢量数据库提供:

  • 快速相似性搜索 - 在毫秒内找到相似向量
  • 支持动态数据 - 使用新数据不断更新向量
  • 可扩展性 - 跨多台计算机扩展矢量搜索
  • 灵活的架构 - Vector 可以存储在本地、云对象存储或托管数据库中
  • 高维数 - 为每个向量索引数千维
  • API - 如果您选择托管矢量数据库,它通常带有干净的查询 API 以及与一些现有数据科学工具包或平台的集成。

矢量搜索(矢量数据库的关键功能)支持的流行用例示例如下:

  • 视觉搜索 - 查找相似的产品图片
  • 建议 - 建议内容
  • 聊天机器人 - 将查询与意图相匹配
  • 搜索 - 从文本矢量显示相关文档

矢量搜索开始获得关注的用例是:

  • 异常检测 - 识别异常值向量
  • 药物发现 - 通过属性载体关联分子

什么是 Python 矢量数据库?

包含支持矢量数据库完整生命周期的 Python 库的矢量数据库是 Python 矢量数据库。数据库本身不需要用 Python 构建。

这些 Python 矢量数据库库应该支持什么?

对向量数据库的调用可以分为两类 - 数据相关和管理相关。好消息是它们遵循与传统数据库类似的模式。

库应支持的数据相关功能

Python 矢量数据库和矢量索引:构建 LLM 应用程序

库应支持的标准管理相关功能

Python 矢量数据库和矢量索引:构建 LLM 应用程序

现在让我们继续一个更高级的概念,我们讨论在这些数据库之上构建LLM应用程序

构建 LLM 应用程序

在我们深入研究矢量搜索驱动的LLM应用程序的架构之前,让我们从工作流程的角度了解所涉及的内容。

典型的工作流程包括:

  1. 扩充或清理数据。这是一个轻量级数据转换步骤,可帮助提高数据质量和一致的内容格式。这也是可能需要丰富数据的地方。
  2. 通过模型将数据编码为向量。这些模型包括一些转换器(例如句子转换器)
  3. 将向量插入向量数据库或向量索引(我们将很快解释)
  4. 通过 Python API 公开搜索
  5. 文档编排工作流
  6. 在应用和 UI(例如聊天 UI)中测试和可视化结果

现在让我们看看如何使用不同的架构组件启用此工作流的不同部分。

对于 1) 您可能需要开始从其他源系统(包括关系数据库或内容管理系统)获取元数据。

对于上面的步骤 2),预训练模型几乎总是首选。OpenAI 模型是通过托管产品提供的最受欢迎的模型。出于隐私和安全原因,可以托管本地模型。

对于 3),如果需要执行大型相似性搜索(例如在具有超过 <> 亿条记录的数据集中),则需要矢量数据库或矢量索引。从企业的角度来看,在执行“搜索”之前,您通常有更多的上下文。

对于上面的4),好消息是公开的搜索通常遵循类似的模式。类似于以下代码的内容:

从 松果

index = pinecone.Index("example-index")index.upsert([("A", [0.1, 0.1, 0.1, 0.1], {"genre": "comedy", "year": 2020}),
)index.query( 
vector=[0.1, 0.1, 0.1, 0.1], 
filter={ 
"genre": {"$eq": "documentary"}, 
"year": 2019 
}, 
top_k=1,
)

这里有一句有趣的台词是这样的:

filter={ 
"genre": {"$eq": "documentary"}, 
"year": 2019 
},

它确实将结果过滤到“流派”和“年份”附近的向量。您还可以按概念或主题过滤矢量。

现在的挑战是,在企业环境中,它包括其他业务过滤器。解决来自数据源的数据缺乏建模的问题非常重要(想想表结构和元数据)。通过减少与结构化数据相矛盾的错误表达式来提高文本保真度非常重要。.在这种情况下,需要“数据流水线”策略,而企业的“内容匹配”开始变得重要。

对于 5) 除了扩展摄取的常见挑战之外,不断变化的语料库也有其自身的挑战。新文档可能需要对整个语料库进行重新编码和重新索引,以保持载体的相关性。

对于6)这是一个全新的领域,除了测试相似性水平之外,还需要一种人工在环方法,以确保整个搜索范围的质量。

自动搜索评分以及不同类型的上下文评分并非易事。

Python Vector Index:现有数据库的更简单的矢量搜索替代方案。

矢量数据库是一个复杂的系统,支持上下文搜索,如上例所示,以及所有其他数据库功能(创建、插入、更新、删除、管理等)。

病媒数据库的例子包括Weaviate和Pinecone。这两者都公开了Python API。

有时,更简单的设置就足够了。作为更轻的替代方案,您可以使用已经使用的任何存储,并基于它添加矢量索引。此矢量索引用于仅检索具有上下文的搜索查询,例如,用于生成 AI 用途。

在矢量索引设置中,您有:

  • 您通常的数据存储(例如PostgreSQL或包含文件的磁盘目录)提供了您需要的基本操作:创建,插入,更新,删除。
  • 您的矢量索引,可以对您的数据进行基于上下文的快速搜索。

为你实现向量索引的独立Python库包括FAISS,Pathway LLM,Annoy。

好消息是,矢量数据库和矢量索引的LLM应用程序工作流程是相同的。主要区别在于,除了 Python 矢量索引库之外,您还可以继续使用现有数据库进行“正常”数据操作和数据管理。例如,如果您使用的是PostgreSQL,这可能是Psycogg,或者如果您将数据存储在文件中,则可以使用标准的Python“fs”模块。

矢量指数的支持者关注以下优点:

  • 数据隐私:确保原始数据安全不受干扰,最大限度地降低数据暴露风险。
  • 成本效益:降低与额外存储、计算能力和许可相关的成本。
  • 可扩展性:通过减少要管理的组件数量来简化扩展。

何时使用矢量数据库与矢量索引?

当满足以下一项或多项条件时,矢量数据库非常有用

  • 您有大规模处理矢量数据的特殊需求
  • 您正在为矢量创建一个独立的专用应用程序
  • 您不希望在其他类型的应用程序中对存储的数据进行其他类型的使用。

当满足以下一项或多项条件时,矢量索引很有用

  • 您不想信任用于数据存储的新技术
  • 您现有的存储很容易从 Python 访问。
  • 相似性搜索只是其他大型企业 BI 和数据库需求中的一种功能
  • 您需要能够将向量附加到现有标量记录
  • 您需要一种统一的方式来处理数据工程团队的管道
  • 您需要对数据进行索引和图形结构,以帮助完成LLM应用程序或任务
  • 您需要来自其他来源的增强输出或增强上下文
  • 您希望从语料库创建可应用于事务数据的规则

企业矢量搜索的未来

矢量搜索为开发人员解锁了改变游戏规则的功能。随着模型和技术的改进,预计矢量数据库或矢量索引将成为应用程序堆栈不可或缺的一部分。

我希望这个概述为探索 Python 中的矢量数据库和矢量索引提供一个坚实的起点。如果您对最近开发的矢量索引感到好奇,请查看此开源项目。

原文链接:Python 矢量数据库和矢量索引:构建 LLM 应用程序 (mvrlink.com)

相关文章:

Python 矢量数据库和矢量索引:构建 LLM 应用程序

推荐&#xff1a;使用 NSDT场景编辑器 助你快速搭建可二次编辑的3D应用场景 由于使用其硬件创建的生成式AI应用程序&#xff0c;Nvidia经历了显着的增长。另一项软件创新&#xff0c;矢量数据库&#xff0c;也正在乘着生成式人工智能的浪潮。 开发人员正在向量数据库上用Pytho…...

-Webkit-Box 在 Safari 中出现的兼容性问题

一、问题背景&#xff1a; UI要求要实现这样的效果&#xff0c;使用 display:-webket-box在chrome浏览器下完美解决 但是马上啪啪打脸&#xff0c;在safari浏览器下显示空白 &#xff0c;不能不说浏览器之间的兼容性简直就是天坑 二、解决办法 通过浏览器调试发现原本float的…...

后端项目打包上传服务器记录

后端项目打包上传服务器记录 文章目录 后端项目打包上传服务器记录1、项目打包2、jar包上传服务器 本文记录打包一个后端项目&#xff0c;上传公司服务器的过程。 1、项目打包 通过IDEA的插件进行打包&#xff1a; 打成一个jar包&#xff0c;jar包的位置在控制台可以看到。 2、…...

ubuntu部署haproxy

HAProxy是可提供高可用性、负载均衡以及基于TCP和HTTP应用的代理. 1、更新系统报 通过在终端中运行以下命令&#xff0c;确保所有系统包都是最新的 sudo apt updatesudo apt upgrade2、安装Haproxy sudo apt install haproxy设置开机自动启动haproxy服务 sudo systemctl en…...

vue利用 sortable 完成表格拖拽

先讲一下vue2&#xff0c;使用sortable完成表格拖拽【不只是表格&#xff0c;div也可以实现&#xff0c;但我项目中是表格拖拽】 github地址 安装 npm install sortablejs --save使用 &#xff08;我的项目中是拖拽一个小按钮移动&#xff0c;而不是整行&#xff09; <te…...

CNN简介3

...

新能源电动车充电桩控制主板安全特点

新能源电动车充电桩控制主板安全特点 你是否曾经担心过充电桩的安全问题?充电桩主板又是什么样的呢?今天我们就来聊聊这个话题。 充电桩主板采用双重安全防护系统&#xff0c;包括防水、防护、防尘等&#xff0c;确保充电桩安全、可靠。不仅如此&#xff0c;充电桩主板采用先…...

公路桥梁有哪些安全隐患?

在现代社会&#xff0c;公路桥梁作为连接城市、串联交通的重要纽带&#xff0c;扮演着无可替代的角色。然而&#xff0c;我们常常忽视的是&#xff0c;这些高架构筑物也存在着潜在的安全隐患&#xff0c;可能随时影响着交通的畅通和人们的生命财产安全。为了更好地认识和理解这…...

【C语言】每日一题(错误的集合)

最近在牛客、力扣上做题&#xff0c;花费海量时间&#xff0c;苦不堪言&#xff0c;有时绞尽脑汁也想不出&#xff0c;痛定思痛&#xff0c;每日记录写的比较困难的题。 错误的集合 题目如上图所示 题主乍看之下觉得很简单&#xff0c;再看例子&#xff0c;不就是一个有序数组…...

[JavaWeb]【四】web后端开发-SpringBootWeb入门

目录 一 Spring 二 SpringBootWeb入门 2.1 入门需求 2.2 分析 2.3 开始创建SpringBootWeb 2.4 创建类实现需求 2.5 启动程序 2.6 访问 三 HTTP协议 3.1 HTTP-概述 3.2 HTTP-请求协议 3.3 HTTP-响应协议 3.3.1 响应状态码 && 响应类型 3.4 HTTP-协议解析 前言…...

前端css

day03-CSS基础 目标&#xff1a;掌握 CSS 属性基本写法&#xff0c;能够使用文字相关属性美化文章页。 01-CSS初体验 层叠样式表 (Cascading Style Sheets&#xff0c;缩写为 CSS&#xff09;&#xff0c;是一种 样式表 语言&#xff0c;用来描述 HTML 文档的呈现&#xff08;…...

vb+sql医院门诊管理系统设计与系统

摘要 信息时代已经来临,计算机应用于医院的日常管理,为医院的现代化带来了从未有过的动力和机遇,为医疗卫生领域的发展提供了无限的潜力。采用计算机管理信息系统已成为医院管理科学化和现代化的标志,给医院带来了明显的经济效益和社会效益。 本文介绍了数据库管理系统的…...

bootstrap-modal调用ajax后不经过回调函数

说明&#xff1a;我用的是boostrap的弹框&#xff0c;表单用的是layui的&#xff0c;个人觉得bootstrap比layui的弹框好看点&#xff0c;能自适应高度。 如图&#xff1a;点击保存后里面的内容不执行 原因&#xff1a;type用的是submit 解决&#xff1a;把submit改为button...

【【典型电路设计之片内存储器的设计之RAM的Verilog HDL描述一】】

典型电路设计之片内存储器的设计之RAM的Verilog HDL描述一 RAM是随机存储器&#xff0c;存储单元的内容可按需随意取出或存入。这种存储器在断电后将丢失所有数据&#xff0c;一般用来存储一些短时间内使用的程序和数据。 其内部结构如下图所示&#xff1a; 例&#xff1a;用…...

食品行业案例 | 燕千云助力头部食品企业搭建数智化 IT服务管理体系及平台

随着数字化时代的到来&#xff0c;食品行业呈现出多个发展趋势。首先&#xff0c;消费者对健康食品和功能性食品的关注度提高&#xff0c;推动了市场需求的增长。其次&#xff0c;便利食品和物流行业迅速发展&#xff0c;满足了快节奏生活的需求。再者&#xff0c;电商渠道和网…...

SpringBoot的日志信息及Lombok的常用注解

文章目录 一. 日志的介绍1. 什么是日志2. 日志的作用 二. 日志的使用1. 日志格式说明2. 自定义日志的输出3. 日志级别4. 日志级别的配置5. 日志持久化6. 更简单的输出日志-Lomok7. Lombok框架实现原理以及其他常见注解 一. 日志的介绍 1. 什么是日志 日志是我们程序重要组成部…...

Genoss GPT简介:使用 Genoss 模型网关实现多个LLM模型的快速切换与集成

一、前言 生成式人工智能领域的发展继续加速&#xff0c;大型语言模型 (LLM) 的用途范围不断扩大。这些用途跨越不同的领域&#xff0c;包括个人助理、文档检索以及图像和文本生成。ChatGPT 等突破性应用程序为公司进入该领域并开始使用这项技术进行构建铺平了道路。 大公司正…...

淘宝API接口的实时数据和缓存数据区别

电商API接口实时数据是指通过API接口获取到的与电商相关的实时数据。这些数据可以包括商品库存、订单状态、销售额、用户活跃度等信息。 通过电商API接口&#xff0c;可以实时获取到电商平台上的各种数据&#xff0c;这些数据可以帮助企业或开发者做出及时的决策和分析。例如&…...

excel统计函数篇1之average系列

一、excel中的统计函数 1、AVERAGE(number1,number2,...)&#xff1a;返回其参数的平均值 2、AAVERAGEA(value1,value2,...)&#xff1a;返回其参数的平均值&#xff0c;包括数字、文本和逻辑值 可以在括号内手动输入&#xff0c;也可以引用单元格&#xff0c;对序列求平均的…...

数学建模(二)线性规划

课程推荐&#xff1a;6 线性规划模型基本原理与编程实现_哔哩哔哩_bilibili 目录 一、线性规划的实例与定义 1.1 线性规划的实例 1.2 线性规划的定义 1.3 最优解 1.4 线性规划的Mathlab标准形式 1.5 使用linprog函数 二、线性规划模型建模实战与代码 2.1 问题提出 2.2…...

AI Agent开发实战:基于PyTorch与LangChain构建自主任务执行智能体

AI Agent开发实战&#xff1a;基于PyTorch与LangChain构建自主任务执行智能体 1. 为什么需要自主任务执行智能体 想象一下&#xff0c;你每天要处理几十封邮件、查找各种资料、整理会议纪要&#xff0c;还要写周报。这些重复性工作占据了大量时间&#xff0c;而真正需要创造力…...

Go的interface空值与类型断言的最佳实践

Go语言中的interface空值与类型断言是开发者经常遇到的核心概念&#xff0c;掌握其最佳实践能显著提升代码的健壮性和可维护性。interface的灵活性使其成为Go多态的重要工具&#xff0c;但空值处理和类型断言的不当使用可能导致运行时错误或逻辑漏洞。本文将深入探讨如何高效处…...

乙巳马年·皇城大门春联生成终端W与低代码平台集成:在Dify中快速创建AI应用

乙巳马年皇城大门春联生成终端W与低代码平台集成&#xff1a;在Dify中快速创建AI应用 又到了岁末年初&#xff0c;很多朋友、商家甚至社区都在为准备春联发愁。传统方式要么自己写&#xff0c;要么找人设计&#xff0c;费时费力不说&#xff0c;风格还未必满意。现在&#xff…...

保姆级教程:手把手配置GD32的RTC外部低速时钟(LXTAL)与内部IRC40K

GD32 RTC时钟源配置实战&#xff1a;从LXTAL到IRC40K的深度解析 在嵌入式开发中&#xff0c;实时时钟(RTC)模块的稳定运行往往决定了设备的时间记录精度和低功耗表现。作为GD32微控制器的重要外设之一&#xff0c;RTC模块支持多种时钟源配置方案&#xff0c;其中外部低速晶振(L…...

百川2-13B-4bits量化模型精度实测:在OpenClaw复杂任务中的表现

百川2-13B-4bits量化模型精度实测&#xff1a;在OpenClaw复杂任务中的表现 1. 测试背景与实验设计 去年冬天第一次接触量化模型时&#xff0c;我曾天真地认为"4bits精度损失可以忽略不计"。直到用OpenClaw执行跨平台内容发布任务时&#xff0c;一个错误的文件路径让…...

面向生产的Chatgpt5.4:系统集成、架构模式与成本优化深度拆解

对于计划将顶级AI能力深度集成至自身产品与工作流的团队而言&#xff0c;理解Gemini 3.1 Pro的系统级特性、集成模式与全生命周期成本至关重要。国内开发者可通过RskAi&#xff08;www.rsk.cn&#xff09;等聚合平台&#xff0c;以零成本、国内直访的方式完成前期技术验证与原型…...

基于模型参考的滑模控制/MRSMC 基于模型参考的滑模控制(MRSMC, Model Refe...

基于模型参考的滑模控制/MRSMC 基于模型参考的滑模控制&#xff08;MRSMC, Model Reference Sliding Mode Control&#xff09;是一种结合了模型参考控制和滑模控制优点的控制策略。 它通常用于系统的鲁棒控制&#xff0c;尤其是在面对模型不确定性和外部扰动时。 在simulink中…...

挖漏洞一个月能赚多少钱?挖漏洞入门到精通教程,收藏这一篇就够了

学会网安技术后去挖漏洞一个月能搞多少外快&#xff1f; 现在很多白帽子都是白天上班晚上挖洞&#xff0c;甚至有的人连班都不想上&#xff0c;纯靠挖漏洞来收入&#xff0c;比如说补天上面的这些人&#xff0c;每个月收入较高的都是他们&#xff0c;八成都是在家全职挖洞了。…...

保姆级教程:在mmdetection v2.x上,用SSD300训练自定义VOC数据集(附完整配置文件修改清单)

从零到一&#xff1a;基于mmdetection的SSD300自定义VOC数据集训练全流程实战 当第一次接触mmdetection框架时&#xff0c;面对复杂的配置文件体系和各种_base_目录&#xff0c;很多开发者都会感到无从下手。本文将从一个实践者的角度&#xff0c;手把手带你完成从数据集准备到…...

给ESP32-S3智能音箱选个好麦克风:从灵敏度到阵列布局的实战避坑指南

给ESP32-S3智能音箱选个好麦克风&#xff1a;从灵敏度到阵列布局的实战避坑指南 在智能家居设备井喷式发展的今天&#xff0c;语音交互已成为人机交互的核心方式之一。作为语音入口的关键部件&#xff0c;麦克风的选择与设计直接决定了用户体验的优劣。本文将深入探讨如何为ESP…...