LLMs之VDB:LanceDB的简介、安装和使用方法、案例应用之详细攻略

LLMs之VDB:LanceDB的简介、安装和使用方法、案例应用之详细攻略

目录

LanceDB的简介

1、LanceDB的主要特性

2、为何选择 LanceDB?

LanceDB的安装和使用方法

1、安装方法

Javascript/Typescript

Python

2、使用方法

Javascript

Python

LanceDB的案例应用

1、基于LanceDB搭建RAG系统

LLMs之RAG:采用小LLM(不只用在生成阶段/Llama-3.2-1B-Instruct)进行文本摘要和提取关键词并存储到向量数据库(LanceDB)进而提高RAG系统的检索召回率——判断硬件是否支持GPU和BF16策略→数据预处理(加载并处理PDF/连接向量数据库LanceDB并创建表)→加载分词器、LLMs和嵌入模型→利用LLM(+纠正策略)对每页提取摘要及其关键词并解析为Json然后针对二者执行向量化最后存储到LanceDB数据库表中→基于query计算与table中摘要相似性提取Top列表然后指令提示LLM对摘要输出排名→指令提示LLM结合提取选定摘要所对应的原始内容来生成最终答案

LLMs之RAG:采用小LLM(不只用在生成阶段/Llama-3.2-1B-Instruct)进行文本摘要和提取关键词并存储到向量数据库(LanceDB)进而提高RAG系统的检索召回率


LanceDB的简介

LanceDB 是一个用于 AI 的开源向量数据库,旨在存储、管理、查询和检索大规模多模态数据的嵌入。LanceDB 的核心是用 Rust编写的,并建立在Lance之上,Lance 是一种开源列式数据格式,专为高性能 ML 工作负载和快速随机访问而设计。
>> 核心功能:LanceDB 是一个开源的向量数据库,用于存储、管理、查询和检索大规模多模态数据中的嵌入。它支持多种数据类型,包括文本、图像、视频、点云等。
>> 技术架构:LanceDB 的核心是用 Rust 编写,基于 Lance(一种为高性能机器学习工作负载设计的开源列式数据格式)。Lance 格式支持自动数据版本控制和快速检索。
>> 主要优势:易于使用、可扩展、经济高效。与其他向量数据库相比,LanceDB 的主要优势在于它不仅存储嵌入和元数据,还支持存储实际数据本身,简化了数据管理和版本控制。
>> 部署方式:提供开源 (OSS) 和云端 (Cloud) 两种部署方式。OSS 版本是嵌入式的,无需管理服务器;Cloud 版本是无服务器的 SaaS 服务,具有成本效益和高可扩展性。

LanceDB 是一款功能强大、易于使用且高效的向量数据库,适用于各种多模态 AI 应用场景。它独特的架构和多模态支持使其在众多向量数据库中脱颖而出。
LanceDB是一个面向开发者的、无服务器的向量数据库,专为AI应用而设计。它可以轻松地为你的大型语言模型(LLM)应用添加长期记忆功能。它是一个开源数据库,用于向量搜索,并使用持久性存储构建,这极大地简化了嵌入的检索、过滤和管理。
LanceDB 提供了一个易于使用的接口,结合了向量搜索多模态数据支持和多种查询方式,并具有良好的性能和扩展性,使其成为构建各种 AI 应用的理想选择。 其无服务器特性进一步简化了部署和维护。

GitHub地址:GitHub - lancedb/lancedb: Developer-friendly, serverless vector database for AI applications. Easily add long-term memory to your LLM apps!

文档地址:LanceDB - LanceDB

1、LanceDB的主要特性

>> 生产规模的向量搜索,无需管理服务器。 这意味着你可以专注于你的应用逻辑,而无需担心数据库的运维。
>> 存储、查询和过滤向量、元数据和多模态数据(文本、图像、视频、点云等等)。 它支持多种数据类型,使得它可以应用于更广泛的场景。
>> 支持向量相似性搜索、全文搜索和SQL。 这提供了多种查询方式,以满足不同的需求。
>> 原生Python和Javascript/Typescript支持。 方便开发者使用熟悉的语言进行开发。
>> 零拷贝、自动版本控制,无需额外基础设施即可管理数据版本。 简化了数据管理流程。
>> GPU支持构建向量索引(*)。 (*) 表示此功能可能需要额外的配置或依赖。
>> 与LangChain、LlamaIndex、Apache-Arrow、Pandas、Polars、DuckDB等生态系统集成,更多集成正在进行中。 方便与其他工具和库集成使用。
>> LanceDB的核心是用Rust编写的,并使用Lance(一个为高性能机器学习工作负载设计的开源列式格式)构建。

2、为何选择 LanceDB?

>> 嵌入式与无服务器架构:LanceDB既支持嵌入式(开源软件)也支持无服务器(云服务),用户无需管理服务器

>> 快速的生产级向量相似度搜索:提供快速的生产规模向量相似度、全文及混合搜索,并通过DataFusion支持SQL查询接口。

>> 多语言支持:支持Python、Javascript/Typescript和Rust语言。

>> 多模态数据存储与管理:不仅能存储和管理嵌入向量及元数据,还支持文本、图像、视频、点云等多模态数据类型。

>> 与Arrow生态系统紧密集成:允许在共享内存中进行真正的零拷贝访问,并支持SIMD和GPU加速。

>> 自动数据版本控制:无需额外基础设施即可管理数据版本。

>> 基于磁盘的索引与存储:支持大规模扩展而不需要高昂成本。

>> 直接摄取多种数据格式:支持直接摄取pandas DataFrames、Pydantic对象、Polars(即将支持)等多种数据格式。

LanceDB的安装和使用方法

1、安装方法

Javascript/Typescript

npm install @lancedb/lancedb

Python

pip install lancedb

2、使用方法

以下分别展示了Javascript和Python的示例代码:

Javascript

这个例子展示了如何连接数据库,创建表,进行向量搜索以及根据特定条件查询。

import * as lancedb from "@lancedb/lancedb";const db = await lancedb.connect("data/sample-lancedb");
const table = await db.createTable("vectors", [{ id: 1, vector: [0.1, 0.2], item: "foo", price: 10 },{ id: 2, vector: [1.1, 1.2], item: "bar", price: 50 },
], {mode: 'overwrite'});const query = table.vectorSearch([0.1, 0.3]).limit(2);
const results = await query.toArray();// You can also search for rows by specific criteria without involving a vector search.
const rowsByCriteria = await table.query().where("price >= 10").toArray();

Python

这个例子展示了如何使用Python连接数据库,创建表,并进行向量搜索,并将结果转换为Pandas DataFrame。

import lancedburi = "data/sample-lancedb"
db = lancedb.connect(uri)
table = db.create_table("my_table",data=[{"vector": [3.1, 4.1], "item": "foo", "price": 10.0},{"vector": [5.9, 26.5], "item": "bar", "price": 20.0}])
result = table.search([100, 100]).limit(2).to_pandas()

LanceDB的案例应用

持续更新中……

1、基于LanceDB搭建RAG系统

LLMs之RAG:采用小LLM(不只用在生成阶段/Llama-3.2-1B-Instruct)进行文本摘要和提取关键词并存储到向量数据库(LanceDB)进而提高RAG系统的检索召回率——判断硬件是否支持GPU和BF16策略→数据预处理(加载并处理PDF/连接向量数据库LanceDB并创建表)→加载分词器、LLMs和嵌入模型→利用LLM(+纠正策略)对每页提取摘要及其关键词并解析为Json然后针对二者执行向量化最后存储到LanceDB数据库表中→基于query计算与table中摘要相似性提取Top列表然后指令提示LLM对摘要输出排名→指令提示LLM结合提取选定摘要所对应的原始内容来生成最终答案

https://yunyaniu.blog.csdn.net/article/details/144091583

LLMs之RAG:采用小LLM(不只用在生成阶段/Llama-3.2-1B-Instruct)进行文本摘要和提取关键词并存储到向量数据库(LanceDB)进而提高RAG系统的检索召回率

https://yunyaniu.blog.csdn.net/article/details/144097611

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

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

相关文章

《拉依达的嵌入式\驱动面试宝典》—计算机网络篇(二)

《拉依达的嵌入式\驱动面试宝典》—计算机网络篇(二) 你好,我是拉依达。 感谢所有阅读关注我的同学支持,目前博客累计阅读 27w,关注1.5w人。其中博客《最全Linux驱动开发全流程详细解析(持续更新)-CSDN博客》已经是 Linux驱动 相关内容搜索的推荐首位,感谢大家支持。 《…

Java面试核心知识4

公平锁与非公平锁 公平锁(Fair) 加锁前检查是否有排队等待的线程,优先排队等待的线程,先来先得 非公平锁(Nonfair) 加锁时不考虑排队等待问题,直接尝试获取锁,获取不到自动到队尾…

探索AGI:智能助手与自我赋能的新时代

目录 1 AGI1.1 DeepMind Levels(2023年11月)1.2 OpenAI Levels(2024年7月)1.3 对比与总结1.4 AGI可能诞生哪里 2 基于AI的智能自动化助手2.1 通用型大模型2.2 专业的Agent和模型工具开发框架2.3 编程与代码生成助手2.4 视频和多模态生成2.5 商…

python迷宫寻宝 第4关 自动寻路(找宝箱、宝石、终点、获取企鹅信息)

目录 地图 ​编辑 1、成功获取粉宝石或黄宝石。 2、获取企鹅的信息 3、获取红宝石 (1)api.get.item获取红宝石 (2)context.items获取红宝石 4、获取宝箱 (1)api.get.item获取宝箱 (2)context.items获取宝箱 5、达到终点 …

慧集通(DataLinkX)iPaaS集成平台-业务建模之业务对象(二)

3.UI模板 当我们选择一条已经建好的业务对象点击功能按钮【UI模板】进入该业务对象的UI显示配置界面。 右边填写的是UI模板的编码以及对应名称;菜单界面配置以业务对象UI模板编码获取显示界面。 3.1【列表-按钮】 展示的对应业务对象界面的功能按钮配置&#xff1…

PyCharm 引用其他路径下的文件报错 ModuleNotFound 或报红

PyCharm 中引用其他路径下的文件提示 ModuleNotFound,将被引用目录添加到系统路径: # # 获取当前目录 dir_path os.path.dirname(os.path.realpath(__file__)) # # 获取上级目录 parent_dir_path os.path.abspath(os.path.join(dir_path, os.pardir))…

mysql本地安装和pycharm链接数据库操作

MySQL本地安装和相关操作 Python相关:基础、函数、数据类型、面向、模块。 前端开发:HTML、CSS、JavaScript、jQuery。【静态页面】 Java前端; Python前端; Go前端 -> 【动态页面】直观: 静态,写死了…

单片机Day1

目录 一.什么是单片机? 二.单片机的组成 三.封装形式 四.优势 五.分类 通用型: 专用型: 按处理的二进制位可以分为: 六.应用: 七.发展趋势 1.增加CPU的数据总线宽度。 2.存储器的发展。 3.片内1/0的改进 …

spring ApplicationContextAware的使用和执行时机

实际项目开发中,会写类似如下的工具类,方便做脚本执行或者一些判断,提供一些api方法等(可阅读:https://blog.csdn.net/qq_26437925/article/details/114213391 ,ApplicationContextAware就大派用场了),如下…

Pytorch导出onnx模型并在C++环境中调用(含python和C++工程)

Pytorch导出onnx模型并在C环境中调用(含python和C工程) 工程下载链接:Pytorch导出onnx模型并在C环境中调用(python和C工程) 机器学习多层感知机MLP的Pytorch实现-以表格数据为例-含数据集和PyCharm工程中简单介绍了在…

2025新春烟花代码(二)HTML5实现孔明灯和烟花效果

效果展示 源代码 <!DOCTYPE html> <html lang"en"> <script>var _hmt _hmt || [];(function () {var hm document.createElement("script");hm.src "https://hm.baidu.com/hm.js?45f95f1bfde85c7777c3d1157e8c2d34";var …

[Transformer] The Structure of GPT, Generative Pretrained Transformer

The Structure of Generative Pretrained Transformer Reference: The Transformer architecture of GPT models How GPT Models Work

使用MATLAB正则表达式从文本文件中提取数据

使用MATLAB正则表达式从文本文件中提取数据 使用Python正则表达式从文本文件中提取数据的代码请看这篇文章使用正则表达式读取文本数据【Python】-CSDN博客 文本数据格式 需要提取 V 后面的数据, 并绘制出曲线. index 1V 0.000000W 0.000000E_theta 0.000000UINV 0.0…

电脑提示directx错误导致玩不了游戏怎么办?dx出错的解决方法

想必大家都有过这样的崩溃瞬间&#xff1a;满心欢喜打开心仪的游戏&#xff0c;准备在虚拟世界里大杀四方或者畅游冒险&#xff0c;结果屏幕上突然弹出个 DirectX 错误的提示框&#xff0c;紧接着游戏闪退&#xff0c;一切美好戛然而止。DirectX 作为 Windows 系统下游戏运行的…

python学opencv|读取图像(三十二)使用cv2.getPerspectiveTransform()函数制作透视图-变形的喵喵

【1】引言 前序已经对图像展开了平移、旋转缩放和倾斜拉伸技巧探索&#xff0c;相关链接为&#xff1a; python学opencv|读取图像&#xff08;二十八&#xff09;使用cv2.warpAffine&#xff08;&#xff09;函数平移图像-CSDN博客 python学opencv|读取图像&#xff08;二十…

初学spring 框架(了解spring框架的技术背景,核心体现,入门案例)

目录 技术背景 为什么要学习spring 框架&#xff1f; 学习spring 框架可以解决什么问题&#xff1f; 了解spring框架的核心体现 入门案例 步骤 1 导入 依赖 2 搭建三层架构体现【根据实际情况 构建】 3 添加配置文件 Test 测试类中 从 Ioc 容器 获取 Student 对象 总…

用户界面的UML建模11

然而&#xff0c;在用户界面方面&#xff0c;重要的是要了解《boundary》类是如何与这个异常分层结构进行关联的。 《exception》类的对象可以作为《control》类的对象。因此&#xff0c;《exception》类能够聚合《boundary》类。 参见图12&#xff0c;《exception》Database…

IDEA的常用设置

目录 一、显示顶部工具栏 二、设置编辑区字体按住鼠标滚轮变大变小&#xff08;看需要设置&#xff09; 三、设置自动导包和优化导入的包&#xff08;有的时候还是需要手动导包&#xff09; 四、设置导入同一个包下的类&#xff0c;超过指定个数的时候&#xff0c;合并为*&a…

STM32-笔记39-SPI-W25Q128

一、什么是SPI&#xff1f; SPI是串行外设接口&#xff08;Serial Peripheral Interface&#xff09;的缩写&#xff0c;是一种高速的&#xff0c;全双工&#xff0c;同步的通信总线&#xff0c;并且 在芯片的管脚上只占用四根线&#xff0c;节约了芯片的管脚&#xff0c;同时为…

uniapp小程序中隐藏顶部导航栏和指定某页面去掉顶部导航栏小程序

uniappvue3开发小程序过程中隐藏顶部导航栏和指定某页面去掉顶部导航栏方法 在page.json中 "globalStyle": {"navigationStyle":"custom",}, 如果是指定某个页面关闭顶部导航栏&#xff0c;在style中添加"navigationStyle": "cus…